Android Multidex找不到类
当我达到64K方法限制时,我在我的应用程序中激活了Multidex 我正在两个不同的设备上进行测试:Android Multidex找不到类,android,android-multidex,Android,Android Multidex,当我达到64K方法限制时,我在我的应用程序中激活了Multidex 我正在两个不同的设备上进行测试: 三星Galaxy S7(API 24) 阿尔卑斯山A733(API 19,谷歌服务未更新) 在第一个应用程序中,一切正常,但在第二个应用程序中,我发现了这些错误,整个应用程序冻结(不会崩溃) 错误 E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.google
- 三星Galaxy S7(API 24)
- 阿尔卑斯山A733(API 19,谷歌服务未更新)
E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.google.android.gms.internal.zzcfr.zzazv
E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.google.android.gms.internal.zzcfr.zzs
E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
我是这样做的:
在我的简历中,我补充道:
multiDexEnabled true
,因为我将API 16定为Minsdk版本编译'com.android.support:multidex:1.0.1'
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
为了解决这个问题,我创建了一个multidex config.txt
文件,该文件与引用它的build.gradle位于同一文件夹中
multidex-config.txt(已编辑)
然后在渐变中:
buildTypes {
debug {
multiDexKeepFile file('multidex-config.txt')
//...
}
debugStaging {
initWith(buildTypes.debug)
//...
}
release {
multiDexKeepFile file('multidex-config.txt')
minifyEnabled false
//...
}
}
我想我错过了什么。有线索吗
编辑
渐变文件
android {
compileSdkVersion 26
defaultConfig {
//...
minSdkVersion 16
targetSdkVersion 25
multiDexEnabled true
versionCode 10
//...
}
buildTypes {
//...
debug {
//...
multiDexKeepFile file('multidex-config.txt')
}
debugStaging {
initWith(buildTypes.debug)
//...
}
release {
//...
multiDexKeepFile file('multidex-config.txt')
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//...
}
}
dexOptions {
maxProcessCount 6
javaMaxHeapSize "2g"
jumboMode true
}
//...
}
ext {
//...
}
dependencies {
//...
implementation 'com.android.support:multidex:1.0.2'
//...
}
// Required by Firebase
apply plugin: 'com.google.gms.google-services'
multidex-config.txt的格式似乎与中描述的格式不同 似乎-keep不应该在这里。它的一部分 multiDexKeepProguard非multiDexKeepFile
android {
compileSdkVersion 26
defaultConfig {
//...
minSdkVersion 16
targetSdkVersion 25
multiDexEnabled true
versionCode 10
//...
}
buildTypes {
//...
debug {
//...
multiDexKeepFile file('multidex-config.txt')
}
debugStaging {
initWith(buildTypes.debug)
//...
}
release {
//...
multiDexKeepFile file('multidex-config.txt')
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//...
}
}
dexOptions {
maxProcessCount 6
javaMaxHeapSize "2g"
jumboMode true
}
//...
}
ext {
//...
}
dependencies {
//...
implementation 'com.android.support:multidex:1.0.2'
//...
}
// Required by Firebase
apply plugin: 'com.google.gms.google-services'
格式应该是
com/example/MyClass.class
com/example/MyOtherClass.class
由于阿尔卑斯山A733拥有API 19,(任何API级别低于20的应用程序),您的应用程序因错误
java.lang.NoClassDefFoundError而崩溃。
您可以共享您的gradle文件吗?multiDexEnabled写在哪里?你的Mindk版本是什么?此外,你需要在清单文件中添加MultiDexApplication类。@ArnabKar我已经添加了整个gradle(减去不相关/条件相同的数据)。@Radhey如前所述,我的min SDK是16。有3种方法可以为应用程序添加多索引:通过清单,通过扩展MultiDexApplication
类,或者通过添加Multidex.install(此)代码>。我选择了最后一个选项是的,你是对的。我混合了multiDexKeepFile和multiDexKeepProguard的格式。所以我改变了它,但仍然得到了错误(我将用新的实现更新我的问题),从库中保留类的格式和保留自己的类的格式相同吗?是的,完全相同