Android 构建变体调试给出 java.lang.NoClassDefFoundError
Android build variant debug gives java.lang.NoClassDefFoundError
我一直在做一个非常好的项目,直到我包含了 android-smack-xmpp 库。
添加后,我无法在调试模式下 运行 设备 (API < 21) 上的应用程序。但是我能够 运行 它在发布构建变体上。
Process: com.example, PID: 496
java.lang.NoClassDefFoundError: com.example.network.ServerCalls
at com.example.network.ServerCalls.initData(ServerCalls.java:167)
at com.example.ui.fragmentsAndActivities.homeFeed.HomePageActivity.onCreate(HomePageActivity.java:212)
at android.app.Activity.performCreate(Activity.java:5248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access0(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
ServerCalls 包含在 HomePageActivity 中,编译工作正常。我可能在这里遗漏了什么?
另外 HomePageActivity.java:212 是 :
ServerCalls.samosaInitData()
编辑:我已经能够让它在 gradle 中的 minifyEnabled
和 shrinkResources
到 true
的调试版本中工作。这可能指向 JVM 中的不正确链接。但这对我来说就像一个黑客。有人能告诉我一个更简洁的方法吗?
您似乎没有在最终的 .apk 文件中导出库。
您必须在“依赖项”部分的 Android Studio 项目设置中选择“编译”选项。
错误是对解决方案进行多重索引。
smack-api 库的引入导致超过 64k dex 限制。
Multidexing 解决方案就可以了。
我一直在做一个非常好的项目,直到我包含了 android-smack-xmpp 库。
添加后,我无法在调试模式下 运行 设备 (API < 21) 上的应用程序。但是我能够 运行 它在发布构建变体上。
Process: com.example, PID: 496
java.lang.NoClassDefFoundError: com.example.network.ServerCalls
at com.example.network.ServerCalls.initData(ServerCalls.java:167)
at com.example.ui.fragmentsAndActivities.homeFeed.HomePageActivity.onCreate(HomePageActivity.java:212)
at android.app.Activity.performCreate(Activity.java:5248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access0(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
ServerCalls 包含在 HomePageActivity 中,编译工作正常。我可能在这里遗漏了什么?
另外 HomePageActivity.java:212 是 :
ServerCalls.samosaInitData()
编辑:我已经能够让它在 gradle 中的 minifyEnabled
和 shrinkResources
到 true
的调试版本中工作。这可能指向 JVM 中的不正确链接。但这对我来说就像一个黑客。有人能告诉我一个更简洁的方法吗?
您似乎没有在最终的 .apk 文件中导出库。
您必须在“依赖项”部分的 Android Studio 项目设置中选择“编译”选项。
错误是对解决方案进行多重索引。 smack-api 库的引入导致超过 64k dex 限制。 Multidexing 解决方案就可以了。