java.lang.RuntimeException:无法实例化应用程序。 ClassNotFoundException:没有找到类

问题描述:

我知道这个问题已被问及一百万次,但我找不到我的具体情况的答案。我有一个包含所有代码的库以及一些导入库的其他模块。java.lang.RuntimeException:无法实例化应用程序。 ClassNotFoundException:没有找到类

-project 
--mylibrary 
---sr/main/java 
----co/android/mylibrary 
----BaseApp (extends MultidexApp) 
--Application1 
---sr/main/java 
----co/android/app2 
-----Android Manifest 
--Application2 
---sr/main/java 
----co/android/app2 
-----Android Manifest 

而这两个清单使用这样的基本应用程序。

<application 
    android:name="co.android.mylibrary.BaseApp" 
    android:allowBackup="false" 
    android:fullBackupContent="false" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:largeHeap="true" 
    android:theme="@style/AppTheme" 
    tools:replace="android:icon,android:theme, android:allowBackup"> 

而构建依赖关系是这样的:

dependencies { 
    releaseCompile project(path: ':mylibrary', configuration: 'release') 
    debugCompile project(path: ':mylibrary', configuration: 'debug') 
} 

我的基本应用程序的方法来初始化multidex:

protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    try { 
     MultiDex.install(this); 
    }catch (RuntimeException e){} 
} 

我的一些proguard的规则,我已经在两个加地点(图书馆和应用程序)。这些不包括第三方库和我自己的一些类的一些规则。

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.view.View 
-keep public class co.android.mylibrary.data.greendao.**{ *; } 

所以应用程序运行在我的S8罚款,但不会在某些手机上,如摩托G.他们也会如果Proguard的启用和资源萎缩,像发布版本运行正常。我注意到的另一个奇怪的行为是,当我在我的代码的某些部分设置断点并运行发布版本(可调试设置为true)时,它会在s8上打破,但不会在moto上打破。

为什么这种奇怪的行为?另一个我发现超类似的问题是unable to instantiate application - ClassNotFoundException。但仍然没有解决。

这是错误的完整日志。忽略软件包名称。 Exception log

编辑

改变我编译我的应用程序库的方式,基于从@Mostafa安特suggestiongs后:

compile project(path: ':mylibrary', configuration: 'debug') 

它开始给我这个错误。我有我的即时运行关闭。

Class not found exception on Firebase.initProvider

+0

你能显示ClassNotFoundException的logcat详细信息吗? – JRG

化妆基类Application然后onCreate方法调用这一行MultiDex.install(this);

修改模块级的build.gradle文件以启用multidex并添加multidex库作为依赖性,内部,如图 延伸在这里:

android { 
defaultConfig { 
    ... 
    minSdkVersion 15 
    targetSdkVersion 26 
    multiDexEnabled true 
} 
... 
} 

dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
} 
+0

已经这么做了。 – user2130331

+0

你在使用proguard吗?如果是提供给我们的规则 –

+0

尝试将此行添加到progaurd -keep public class your_missing_class_full_name –

如果使用JavaVersion.VERSION_1_8请确保您在所有模块

使用
android { 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
}