拆分apk崩溃为null,无需拆分即可正常运行

时间:2018-07-10 12:40:21

标签: android android-gradle gradle-plugin

这是我的应用程序级别的gradle-

android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
    ---------
}

splits {
    abi {
        enable true
        reset()
        include "armeabi","armeabi-v7a","arm64-v8a","mips","x86","x86_64"
        universalApk false
    }
}
ext.abiCodes = ['armeabi':3, 'armeabi-v7a':4, 'arm64-v8a':5, 'mips':6, 'x86':7, 'x86_64':8]
import com.android.build.OutputFile
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
    def baseAbiVersionCode =
            project.ext.abiCodes.get(output.getFilter(OutputFile.ABI))
    if (baseAbiVersionCode != null) {
        output.versionCodeOverride =
                baseAbiVersionCode * 1000 + variant.versionCode
    }
}

我正在获取拆分的APK,但是在运行它们时,应用因错误而崩溃-

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
                                                   at -----------.SplashActivity$5.a(Unknown Source)

我无法找出问题所在。运行通用版本时,一切正常。我究竟做错了什么 ?

1 个答案:

答案 0 :(得分:1)

我通过设置

使它起作用
buildTypes {
    release {

        minifyEnabled false

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

以前看起来像这样-

buildTypes {
    release {
        useProguard true
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

我不确定为什么使用progaurd会导致问题。