当通过adb安装安装apk时,应用程序类发生ClassNotFoundException,但在通过android studio运行时工作正常
我正在使用Android studio 3.0 beta 9构建apk。但最近我遇到,当我在emulator或真实设备上通过adb install运行apk时,它会弹出ClassNotFoundException,在dexPathList中找不到应用程序类 但当我通过Android Studio运行时,它运行得很好。知道原因是什么吗 以下是错误日志:-当通过adb安装安装apk时,应用程序类发生ClassNotFoundException,但在通过android studio运行时工作正常,android,adb,Android,Adb,我正在使用Android studio 3.0 beta 9构建apk。但最近我遇到,当我在emulator或真实设备上通过adb install运行apk时,它会弹出ClassNotFoundException,在dexPathList中找不到应用程序类 但当我通过Android Studio运行时,它运行得很好。知道原因是什么吗 以下是错误日志:- E/AndroidRuntime: FATAL EXCEPTION: main Process: com.e
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.demo, PID: 27637
java.lang.RuntimeException: Unable to instantiate application
com.example.demo.MyApplication:java.lang.ClassNotFoundException: Didn't find class "com.example.demo.MyApplication" on path: DexPathList[[zip file "/data/app/com.example.demo-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.demo-1/lib/arm, /data/app/com.example.demo-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:680)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6429)
at android.app.ActivityThread.access$1800(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1898)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7402)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.demo.MyApplication" on path: DexPathList[[zip file "/data/app/com.example.demo-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.demo-1/lib/arm, /data/app/com.example.demo-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newApplication(Instrumentation.java:1005)
at android.app.LoadedApk.makeApplication(LoadedApk.java:670)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6429)
at android.app.ActivityThread.access$1800(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1898)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7402)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Suppressed: java.lang.ClassNotFoundException: com.example.demo.MyApplication
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 12 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
这是因为您的proguard最小化。因此,要么编辑您的proguard属性并排除您的类要么禁用proguard for
release
apk
在您的build.gradle
中,将minifyEnabled
属性设置为false
,以禁用release
apk
中的proguard
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
我终于得到了答案,有两个问题,第一个是提到的 ,当我在Android设备上直接运行应用程序时,我试图在Android Studio构建的apk上安装adb 第二个问题被提到 因此,当我试图通过build gradle任务构建apk时,它显示了错误:-
Error:Failed to complete Gradle execution.
Cause:
The version of Gradle you are using (3.3) does not support the forTasks() method on BuildActionExecuter. Support for this is available in Gradle 3.5 and all later versions.
因此,我将Gradle版本升级到最新版本一次并解决了问题。尝试取消选中即时运行。。谢谢,但我已经启用了minifyEnabled错误配置。但这仍然是一个问题。