
在 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 的地方// 原来是这样的mLastTouchXMotionEventCompat.getX(event,ident);mLastTouchYMotionEventCompat.getY(event,ident);// 修改成这样mLastTouchXevent.getX(ident);mLastTouchYevent.getY(ident);// 原来是这样的floatupXMotionEventCompat.getX(event,ident);floatupYMotionEventCompat.getY(event,ident);// 修改成这样floatupXevent.getX(ident);floatupYevent.getY(ident);