无法在空对象上调用方法getDefaultProguardFile()

时间:2019-09-11 09:50:26

标签: android android-studio gradle jar android-gradle-plugin

为什么我的build.proguard中的makeProguardJar任务在同步期间发生“无法在空对象上调用方法getDefaultProguardFile()”。 当我将gradle-plugin从3.1.4更新到3.5.0时会发生这种情况。在3.1.4中,它正常通过了。

我不知道要尝试修复它。代码是配置android.getDefaultProguardFile('proguard-android.txt')。

task makeProguardJar(dependsOn: ['makeJar'], type: ProGuardTask) {
    //Android 默认的 proguard 文件
    configuration android.getDefaultProguardFile('proguard-android.txt')
    //manifest 注册的组件对应的 proguard 文件
    configuration project.buildDir.absolutePath + "/intermediates/proguard-rules/release/aapt_rules.txt"
    configuration 'proguard-rules.pro'
    String inJar = makeJar.archivePath.getAbsolutePath()
    //输入 jar
    injars inJar
    //输出 jar
    outjars inJar.substring(0, inJar.lastIndexOf(File.separator)) + "/" + SDK_PROGUARD_NAME + "." + SDK_JAR
    //设置不删除未引用的资源(类,方法等)
    dontshrink
    Plugin plugin = getPlugins().hasPlugin(AppPlugin) ?
            getPlugins().findPlugin(AppPlugin) :
            getPlugins().findPlugin(LibraryPlugin)
    if (plugin != null) {
        List<String> runtimeJarList
        if (plugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
            runtimeJarList = plugin.getRuntimeJarList()
        } else if (android.getMetaClass().getMetaMethod("getBootClasspath")) {
            runtimeJarList = android.getBootClasspath()
        } else {
            runtimeJarList = plugin.getBootClasspath()
        }
        for (String runtimeJar : runtimeJarList) {
            //给 proguard 添加 runtime
            libraryjars(runtimeJar)
        }
    }
}

无法在空对象上调用方法getDefaultProguardFile()

0 个答案:

没有答案