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。但仍然没有解决。
编辑
改变我编译我的应用程序库的方式,基于从@Mostafa安特suggestiongs后:
compile project(path: ':mylibrary', configuration: 'debug')
它开始给我这个错误。我有我的即时运行关闭。
化妆基类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'
}
已经这么做了。 – user2130331
你在使用proguard吗?如果是提供给我们的规则 –
尝试将此行添加到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
}
}
你能显示ClassNotFoundException的logcat详细信息吗? – JRG