相关疑难解决方法(0)

Android 5.x ClassNotFoundException在6.0+上运行正常

我已将项目的minSdkVersion从19更新为21.这导致5.0/5.1设备上的问题,我无法运行该应用程序.我一直在我的Application类上得到一个ClassNotFoundException.完整日志,应用程序类和gradle文件如下所示.如果我将我的项目还原为minSdkVersion 19,那么应用程序将在4.4+上运行,没有任何问题.

我试过了什么

  • 清洗/重建

  • 更新和降级构建工具版本

  • 跨项目的所有支持库都具有相同的版本号

  • 使我所有的清单类相对而绝对

  • 更新了所有Sdk和构建工具

日志

04-27 14:37:07.152 6278-6278/? E/AndroidRuntime: FATAL EXCEPTION: main
     Process: com.package.testapp, PID: 6278
     java.lang.RuntimeException: Unable to instantiate application com.package.TestApplication: java.lang.ClassNotFoundException: Didn't find class "com.package.Application" on path: DexPathList[[zip file "/data/app/com.package.testapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.package.testapp-1/lib/x86_64, /vendor/lib64, /system/lib64]]
         at android.app.LoadedApk.makeApplication(LoadedApk.java:563)
         at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4526)
         at android.app.ActivityThread.access$1500(ActivityThread.java:151)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:135)
         at android.app.ActivityThread.main(ActivityThread.java:5254)
         at java.lang.reflect.Method.invoke(Native Method)
         at java.lang.reflect.Method.invoke(Method.java:372)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
      Caused by: java.lang.ClassNotFoundException: Didn't find class "com.package.TestApplication" on path: DexPathList[[zip file "/data/app/com.package.testapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.package.testapp-1/lib/x86_64, /vendor/lib64, /system/lib64]]
         at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
         at …
Run Code Online (Sandbox Code Playgroud)

java android gradle android-5.0-lollipop android-5.1.1-lollipop

29
推荐指数
2
解决办法
2692
查看次数

OkHttpClient的NoClassDefFoundError

在gradle中添加facebook依赖项后,我收到此运行时错误:

     compile 'com.facebook.android:facebook-android-sdk:4.6.0'
Run Code Online (Sandbox Code Playgroud)

请注意我也在使用okhttp:

    compile 'com.squareup.okhttp:okhttp:2.5.0'
Run Code Online (Sandbox Code Playgroud)

和错误日志是:

 E/AndroidRuntime: FATAL EXCEPTION: Thread-109754
     Process: com.venkat.project, PID: 4453
            java.lang.NoClassDefFoundError: com.squareup.okhttp.internal.Util
            at com.squareup.okhttp.OkHttpClient.<clinit>(OkHttpClient.java:57)
            at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:127)
            at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:61)
            at java.lang.Thread.run(Thread.java:841)
02-23 18:11:02.729 4453-4573/com.venkat.project I/dalvikvm: Rejecting re-init on previously-failed class Lcom/squareup/okhttp/OkHttpClient; v=0x0
Run Code Online (Sandbox Code Playgroud)

注意:我在三星手机4.4上遇到此错误,但在模拟器上moto g 5.0并且运行正常.

android facebook classnotfoundexception

11
推荐指数
2
解决办法
1万
查看次数

Android应用程序在Samsung Lollipop设备上崩溃NoClassDefFoundError

我们最近将应用程序的minSdkVersion从16(Jellybean)提升到了21(Lollipop).虽然我们主要使用调试版本对我们的应用程序进行了大量测试,但我们现在面临着应用启动时的大量生产崩溃,主要是在较旧的三星设备上 - (Note3和S4是顶级的crashers)并且总是在Lollipop上.

错误是

Fatal Exception: java.lang.NoClassDefFoundError: com.retailconvergence.ruelala.delegate.GoogleLoginDelegate
   at com.retailconvergence.ruelala.delegate.LifecycleDelegateManager.addDelegateOfType(LifecycleDelegateManager.java:48)
   at com.retailconvergence.ruelala.extensions.activity.LifecycleDelegateActivity.addDelegateOfType(LifecycleDelegateActivity.java:55)
   at com.retailconvergence.ruelala.activity.SplashActivity.setupDelegates(SplashActivity.java:198)
   at com.retailconvergence.ruelala.activity.SplashActivity.onCreate(SplashActivity.java:60)
   at android.app.Activity.performCreate(Activity.java:6288)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)
   at android.app.ActivityThread.access$900(ActivityThread.java:177)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:5942)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Run Code Online (Sandbox Code Playgroud)

SplashActivity是应用程序的初始启动活动.未找到的课程是一个历史悠久的课程,而不是新引入的课程.作为旁注,作为最新版本的一部分,我们升级到Android Studio 3并引入了Kotlin代码,但我不认为这些与此问题有关.我们没有在构建中使用proguard.

我知道当minSdkVersion为21及以上,与使用ART而不是Dalvik有关时,构建发生了重大变化,所以我想知道三星Lollipop设备是否还有一些缺陷正在寻找现在的主要dex文件?

模块级build.gradle:

import java.text.SimpleDateFormat
import java.util.concurrent.TimeUnit

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
apply plugin: 'spoon'

// Manifest version information
def versionMajor = 4
def versionMinor = 2
def versionPatch …
Run Code Online (Sandbox Code Playgroud)

android samsung-mobile android-5.0-lollipop

4
推荐指数
1
解决办法
1023
查看次数