Android Gradle 3.0.0-alpha2插件,无法设置只读属性“outputFile”的值
我正在使用这个代码
applicationVariants.all { variant -> variant.outputs.each { output -> def SEP = "_" def flavor = variant.productFlavors[0].name def buildType = variant.variantData.variantConfiguration.buildType.name def version = variant.versionName def date = new Date() def formattedDate = date.format('ddMMyy_HHmm') def newApkName = PROJECT_NAME + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk" def file = new File(newApkName) output.outputFile = file } }
当我build立新的apk时更改apk文件的名称,但是因为我使用Android Studio 3.0 Canary 2,所以出现此错误:
无法设置只读属性“outputFile”的值….
由于Android插件3.0迁移指南build议:
- 使用
all()
而不是each()
- 使用
outputFileName
而不是output.outputFile
如果你只改变文件名(这是你的情况)
指南中的示例:
// If you use each() to iterate through the variant objects, // you need to start using all(). That's because each() iterates // through only the objects that already exist during configuration time— // but those object don't exist at configuration time with the new model. // However, all() adapts to the new model by picking up object as they are // added during execution. android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "${variant.name}-${variant.versionName}.apk" } }
见下文:
applicationVariants.all { variant -> variant.outputs.all { output -> def newApkName = applicationId + "-" + variant.versionName + "(" + variant.versionCode + ")" + ".apk"; outputFileName = new File("${project.projectDir}/../outputs/apks/" + variant.name, newApkName); } }
下面的代码在android studio canary 3.0.0-alpha3上为我工作
android.applicationVariants.all { variant.outputs.all { def newApkName newApkName = "APPLICATION_NAME-" + defaultConfig.versionName + "-" + defaultConfig.versionCode".apk" outputFileName = newApkName; } }
这改变了apk文件的名字
我创build的gradle 3.0已经不在工作了。 源链接
但是,涉及访问outputFile对象的更复杂的任务不再有效。 这是因为变体特定的任务不再在configuration阶段创build。 这导致插件不能预先知道所有的输出,但这也意味着更快的configuration时间。
然后我使用命令gradlew
编译project.and cp
输出apk到我指定的path
在更新到Android Studio 3.0.0并使用新的gradle之后,现在,apks的输出将通过flavor名称和构buildtypes分布在目录中。
- 自动接受所有SDK许可证
- Android Gradle插件0.7.0:“包装APK时重复的文件”
- 错误:执行任务':app:packageRelease'失败。 >无法计算/../AndroidStudioProjects/../classes.jar的散列
- 完成非零退出值
- BuildConfig未正确创build(Gradle Android)
- 无法parsing:com.android.support.design:25.4.0
- Gradle构buildnull控制台对象
- 有没有什么办法可以将Eclipse与Gradle集成到Android项目中?
- 如何使用新的Gradle Android构build系统手动包含外部aar包