集成 mupdf-android 的示例做为模块使用报错,程序包android.support.v4.view不存在
📅 2026/7/16 22:35:41
👁️ 阅读次数
📝 编程学习
- 在 Android 开发中,集成 mupdf-android 的示例做为模块使用,运行项目时,出现如下错误信息
> Task :mupdf:compileDebugJavaWithJavac FAILED ...\mupdf\src\main\java\com\artifex\mupdfdemo\ReaderView.java:7: 错误: 程序包android.support.v4.view不存在 import android.support.v4.view.MotionEventCompat; ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:28: 错误: 找不到符号 import android.support.v4.app.Fragment; ^ 符号: 类 Fragment 位置: 程序包 android.support.v4.app ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:50: 错误: 找不到符号 public class MuPDFFragment extends Fragment implements FilePicker.FilePickerSupport ^ 符号: 类 Fragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\ReaderView.java:533: 错误: 找不到符号 int ident = MotionEventCompat.getActionIndex(event); ^ 符号: 变量 MotionEventCompat 位置: 类 ReaderView ...\mupdf\src\main\java\com\artifex\mupdfdemo\ReaderView.java:535: 错误: 找不到符号 mLastTouchX = MotionEventCompat.getX(event, ident); ^ 符号: 变量 MotionEventCompat 位置: 类 ReaderView ...\mupdf\src\main\java\com\artifex\mupdfdemo\ReaderView.java:536: 错误: 找不到符号 mLastTouchY = MotionEventCompat.getY(event, ident); ^ 符号: 变量 MotionEventCompat 位置: 类 ReaderView ...\mupdf\src\main\java\com\artifex\mupdfdemo\ReaderView.java:540: 错误: 找不到符号 float upX = MotionEventCompat.getX(event, ident); ^ 符号: 变量 MotionEventCompat 位置: 类 ReaderView ...\mupdf\src\main\java\com\artifex\mupdfdemo\ReaderView.java:541: 错误: 找不到符号 float upY = MotionEventCompat.getY(event, ident); ^ 符号: 变量 MotionEventCompat 位置: 类 ReaderView ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:183: 错误: 找不到符号 mAlertDialog.setButton(AlertDialog.BUTTON2, getString(R.string.cancel), listener); ^ 符号: 方法 getString(int) ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:186: 错误: 找不到符号 mAlertDialog.setButton(AlertDialog.BUTTON1, getString(R.string.okay), listener); ^ 符号: 方法 getString(int) ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:190: 错误: 找不到符号 mAlertDialog.setButton(AlertDialog.BUTTON3, getString(R.string.cancel), listener); ^ 符号: 方法 getString(int) ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:193: 错误: 找不到符号 mAlertDialog.setButton(AlertDialog.BUTTON1, getString(R.string.yes), listener); ^ 符号: 方法 getString(int) ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:195: 错误: 找不到符号 mAlertDialog.setButton(AlertDialog.BUTTON2, getString(R.string.no), listener); ^ 符号: 方法 getString(int) ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:270: 错误: 方法不会覆盖或实现超类型的方法 @Override ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:273: 错误: 找不到符号 super.onCreate(savedInstanceState); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:281: 错误: 找不到符号 core = (MuPDFCore)getActivity().getLastNonConfigurationInstance(); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:288: 错误: 找不到符号 Intent intent = getActivity().getIntent(); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:292: 错误: 找不到符号 boolean hasArguments = getArguments() != null && getArguments().getString(PARAM_PATH_PDF) != null; ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:292: 错误: 找不到符号 boolean hasArguments = getArguments() != null && getArguments().getString(PARAM_PATH_PDF) != null; ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:297: 错误: 找不到符号 uri = Uri.parse(getArguments().getString(PARAM_PATH_PDF)); ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:346: 错误: 找不到符号 Resources res = getResources(); ^ 符号: 方法 getResources() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:352: 错误: 找不到符号 getActivity().finish(); ^ 符号: 方法 getActivity() ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:349: 错误: 找不到符号 alert.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.dismiss), ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:367: 错误: 找不到符号 if (getArguments() != null && getArguments().getString(PARAM_PASSWORD_PDF) != null) { ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:367: 错误: 找不到符号 if (getArguments() != null && getArguments().getString(PARAM_PASSWORD_PDF) != null) { ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:368: 错误: 找不到符号 String password = getArguments().getString(PARAM_PASSWORD_PDF); ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:387: 错误: 找不到符号 getActivity().finish(); ^ 符号: 方法 getActivity() ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:384: 错误: 找不到符号 alert.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.dismiss), ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:394: 错误: 找不到符号 getActivity().finish(); ^ 符号: 方法 getActivity() ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:412: 错误: 找不到符号 alert.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.okay), ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:426: 错误: 找不到符号 getActivity().finish(); ^ 符号: 方法 getActivity() ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:422: 错误: 找不到符号 alert.setButton(AlertDialog.BUTTON_NEGATIVE, getString(R.string.cancel), ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:632: 错误: 找不到符号 startActivityForResult(intent, OUTLINE_REQUEST); ^ 符号: 方法 startActivityForResult(Intent,int) ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:641: 错误: 找不到符号 SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:665: 错误: 找不到符号 if (getArguments() != null && getArguments().getBoolean(PARAM_SHOW_CONTROLS)) { ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:665: 错误: 找不到符号 if (getArguments() != null && getArguments().getBoolean(PARAM_SHOW_CONTROLS)) { ^ 符号: 方法 getArguments() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:688: 错误: 找不到符号 mDocView.setAdapter(mReflow ? new MuPDFReflowAdapter(mContext, core) : new MuPDFPageAdapter(getActivity(), this, core)); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:700: 错误: 找不到符号 showInfo(mReflow ? getString(R.string.entering_reflow_mode) : getString(R.string.leaving_reflow_mode)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:700: 错误: 找不到符号 showInfo(mReflow ? getString(R.string.entering_reflow_mode) : getString(R.string.leaving_reflow_mode)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:703: 错误: 方法不会覆盖或实现超类型的方法 @Override ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:705: 错误: 找不到符号 super.onSaveInstanceState(outState); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:714: 错误: 找不到符号 SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:730: 错误: 方法不会覆盖或实现超类型的方法 @Override ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:732: 错误: 找不到符号 super.onPause(); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:738: 错误: 找不到符号 SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:769: 错误: 找不到符号 super.onDestroy(); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:893: 错误: 找不到符号 showInfo(getString(R.string.format_currently_not_supported)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:897: 错误: 找不到符号 Intent myIntent = getActivity().getIntent(); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:901: 错误: 找不到符号 showInfo(getString(R.string.print_failed)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:910: 错误: 找不到符号 startActivityForResult(printIntent, PRINT_REQUEST); ^ 符号: 方法 startActivityForResult(Intent,int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:918: 错误: 找不到符号 SafeAnimatorInflater safe = new SafeAnimatorInflater(getActivity(), R.animator.info, (View)mInfoView); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:930: 错误: 找不到符号 mButtonsView = getActivity().getLayoutInflater().inflate(R.layout.buttons,null); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:971: 错误: 找不到符号 mAnnotTypeText.setText(getString(R.string.copy_text)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:972: 错误: 找不到符号 showInfo(getString(R.string.select_text)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:991: 错误: 找不到符号 showInfo(getString(R.string.select_text)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1000: 错误: 找不到符号 showInfo(getString(R.string.select_text)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1009: 错误: 找不到符号 showInfo(getString(R.string.select_text)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1018: 错误: 找不到符号 showInfo(getString(R.string.draw_annotation)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1047: 错误: 找不到符号 showInfo(success?getString(R.string.copied_to_clipboard):getString(R.string.no_text_selected)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1047: 错误: 找不到符号 showInfo(success?getString(R.string.copied_to_clipboard):getString(R.string.no_text_selected)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1055: 错误: 找不到符号 showInfo(getString(R.string.no_text_selected)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1063: 错误: 找不到符号 showInfo(getString(R.string.no_text_selected)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1071: 错误: 找不到符号 showInfo(getString(R.string.no_text_selected)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1079: 错误: 找不到符号 showInfo(getString(R.string.nothing_to_save)); ^ 符号: 方法 getString(int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1126: 错误: 方法不会覆盖或实现超类型的方法 @Override ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1134: 错误: 找不到符号 super.onStart(); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1137: 错误: 方法不会覆盖或实现超类型的方法 @Override ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1145: 错误: 找不到符号 super.onStop(); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1153: 错误: 找不到符号 startActivityForResult(intent, FILEPICK_REQUEST); ^ 符号: 方法 startActivityForResult(Intent,int) 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1206: 错误: 找不到符号 f.setArguments(args); ^ 符号: 方法 setArguments(Bundle) 位置: 类型为MuPDFFragment的变量 f ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1276: 错误: 方法不会覆盖或实现超类型的方法 @Override ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1278: 错误: 找不到符号 super.onAttach(activity); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1288: 错误: 找不到符号 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); ^ 符号: 方法 getActivity() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1289: 错误: 找不到符号 builder.setTitle(getResources().getString(R.string.noSignOnPdfTitle)); ^ 符号: 方法 getResources() 位置: 类 MuPDFFragment ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1308: 错误: 方法不会覆盖或实现超类型的方法 @Override ^ ...\mupdf\src\main\java\com\artifex\mupdfdemo\MuPDFFragment.java:1310: 错误: 找不到符号 super.onConfigurationChanged(newConfig); ^ 符号: 变量 super 位置: 类 MuPDFFragment ...问题原因
- 编译错误主要是因为 Android Support Library 已被废弃,而项目仍在使用
android.support.v4包中的类,例如 Fragment、MotionEventCompat 等,当前项目已经迁移到了 AndroidX
处理策略
- 将代码中使用 Android Support Library 的地方迁移到 AndroidX
- 修改
import android.support.v4.app.Fragment
// 原来是这样的importandroid.support.v4.app.Fragment// 修改成这样importandroidx.fragment.app.Fragment- 修改
import android.support.v4.view.MotionEventCompat;
// 原来是这样的importandroid.support.v4.view.MotionEventCompat;// 修改成这样// 直接删除或注释// import android.support.v4.view.MotionEventCompat;- 修改使用 MotionEventCompat 的地方
// 原来是这样的mLastTouchX=MotionEventCompat.getX(event,ident);mLastTouchY=MotionEventCompat.getY(event,ident);// 修改成这样mLastTouchX=event.getX(ident);mLastTouchY=event.getY(ident);// 原来是这样的floatupX=MotionEventCompat.getX(event,ident);floatupY=MotionEventCompat.getY(event,ident);// 修改成这样floatupX=event.getX(ident);floatupY=event.getY(ident);
编程学习
技术分享
实战经验