Android Gradle Plugin 3.0:apk安装包输出到指定目录新方法

Android Gradle Plugin 3.0对操作apk输出的api做了变更。之前指定apk输出目录的方法不再适用。

Android Gradle Plugin 3.0之前

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(output.outputFile.parent, defaultConfig.versionCode + "_" + output.outputFile.name)
    }
}

Android Gradle Plugin 3.0新方法

需要做两点修改:

  • 使用all()替换 each()
  • 使用outputFileName 替换 output.outputFile,这个只改变输出apk包名。
applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

错误信息

如果没有修改,构建时报会类似的错误信息:

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

参考:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#variant_api

版权声明:著作权归作者所有。

相关推荐

Python安全创建目录的方法

在介绍Python安全创建目录之前,先举一个不安全创建目录的方式:if not os.path.exists(directory):     os.makedirs(directory) 在例子里,先判断目录是否存在,然后创建目录。这种方式是不安全的,它会导致竞争条件。在os.path.exists()和os.makedirs()之间的时

Python卸载setup.py安装的软件包

卸载python使用setup.py安装的软件包,需要手动删除它安装的所有文件。Linux/Mac在Linux或mac,可以使用setup.py重新安装软件包,添加--record参数,它会把所有安装的文件输出到一个文件里。python setup.py install --record files.txt tr '\n' '\0'&nb

Gradle自动签名release的apk

Gradle的任务可以帮我们自动完成很多重复的工作,这里介绍下如何自动对发布的apk进行签名。signing.gradle在app目录下新建signing.gradle文件,文件名可以根据需要修改。signing.gradle内容如下:ext.signing = [         storeFil