android库崩溃启动MultiDex

时间:2018-02-16 12:30:13

标签: android android-library android-multidex

我已经构建了一个安卓库(一个自定义按钮)并将其上传到我的JFrog Artifactory 现在我尝试在一个示例应用程序中测试它(非常简单,具有默认活动)。

同步进展顺利,我将Button添加到xml布局中,当我运行应用程序时,它在崩溃之前崩溃:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26

    lintOptions {
        abortOnError false
    }

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0.1"
        multiDexEnabled true

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            multiDexEnabled true
        } }}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.google.firebase:firebase-messaging:11.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    compile 'com.google.dagger:dagger:2.9'
    compile 'com.squareup.retrofit2:retrofit:2.+'
    compile 'com.squareup.retrofit2:converter-gson:2.+'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.+'
    compile 'io.reactivex:rxjava:1.0.4'
    compile "com.google.android.gms:play-services-gcm:11.0.4"
    compile 'io.reactivex:rxandroid:0.24.0'
    compile 'com.android.support:design:23.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:support-v4:23.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
    provided 'javax.annotation:jsr250-api:1.0'
    compile 'com.evernote:android-job:1.1.8'
    compile 'com.android.support:multidex:1.0.2'
}
apply plugin: 'com.google.gms.google-services'

哪个类扩展了MultiDexApplication,

当我从库项目(使用另一个本地应用程序模块和活动)运行它时运行良好,但是当我从服务器编译它时会导致此错误

经过大量谷歌搜索,我已经尝试过清理并重建并禁用即时运行,我尝试从xml文件中删除该视图,但它仍然崩溃,似乎该应用程序存在库的问题。 / p>

任何人都可以提供帮助?所有的帮助将不胜感激!

编辑:

我正在使用MultiDex并且我尝试了两种方法来实现它,扩展了Application并扩展了MultiDexApplication,同样的结果,也尝试了重建清理等等,我也试过-dontobfuscate我的情况它是由它引起的因为proguard

这是库build.gradle

=index(A:A, iferror(match(G5, B:B, 0), iferror(match(G5, C:C, 0), match(G5, D:D, 0))))

3 个答案:

答案 0 :(得分:1)

尝试添加到android部分:

dexOptions {         javaMaxHeapSize“2g” }

另外,如果问题消失,请检查您是否从api 19更改为api 21。

答案 1 :(得分:0)

尝试将此添加到扩展Application

的类中
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

添加multiDexEnabled true还不足以让它真正发挥作用。

修改

如果这不适合您,还有其他选择:

通过AndroidManifest.xml添加:

<application
    android:name="android.support.multidex.MultiDexApplication" >
    ...
</application>

或者,不是扩展Application,而是扩展MultiDexApplication

public class MyApplication extends MultiDexApplication { ... }

答案 2 :(得分:0)

当3个方库中的一个或多个未按预期构建时,会发生这种情况。尝试检查是否有这些库的更新版本