- Android Studio Plugin 3.0.0 Grad
- Android Studio Plugin 3.0.0 Grad
- Android Studio plugin 3.0.0 Grad
- module中implementation的包没法引用
- 安装Android Studio遇到的问题以及解决办法
- Android Gradle 3.0plugin, Cannot
- [React Native]访问操作系统剪贴板 Clipboar
- Android Studio解决导入项目非常慢的问题
- Android Studio解决refreshing grad
- flutter iOS 使用第三方 pod 创建 plugin
最近把Android Stuido 升级到了3.2.1 遇到了很多问题,其中 Cannot set the value of read-only property 'outputFile' 就是其中众多问题中的一个,看来得花些时间学习学习这些新技术了,再好的的脑子也不如一个烂笔头,故,做一下笔记记录一下。
文档
- 作者:翻译不了的声响 Android Studio 3.0正式版填坑之路 写得很不错!强烈建议看一下。
Gradle版本不匹配
AS升级到 Android Studio 3.x(Stable 3.0.0 ~ 3.2.1)之后,就会遇到一些版本升级变更问题。收集整理如下:
修改项目下 gradle/wrapper/gradle-wrapper.propertie 文件中的distributionUrl
AS 3.0.0 ~ 3.0.1改为:
distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
AS 3.1.1 ~ 3.1.4 改为:
distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip
AS 3.2.0 ~ 3.2.x 改为:
distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip
错误
由于将开发工具Android studio 升级了最新的版本,引发的问题。
- Android Studio 3.2.1
- Andorid pluing 2.3.2
- Gradle 4.6
原打包脚本:
android {
defaultConfig {
.....
}
buildTypes {
.....
}
flavorDimensions 'channel','api'
productFlavors{
.....
}
android.applicationVariants.all { variants ->
variants.outputs.all { output ->
outputFileName = "test${releaseTime()}_${defaultConfig.versionName}_${variants.flavorName}.apk"
def outputFile = output.outputFile
def timeNow = ""
if ("true".equals(IS_JENKINS)) {
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为boohee_v1.0_2015-0
timeNow = BUILD_TIME
// timeNow = releaseTime()
def fileName = ""
if (variants.buildType.name.equals('release')) {
fileName = "demo_v${defaultConfig.versionName}_${variants.productFlavors[0].name}_${timeNow}_release.apk"
} else if (variants.buildType.name.equals('debug')) {
fileName = "demo_v${defaultConfig.versionName}_${variants.productFlavors[0].name}_${timeNow}_debug.apk"
}
output.outputFile = new File(outputFile.parent, fileName)
}
}
//删除unaligned apk
if (output.zipAlign != null) {
output.zipAlign.doLast {
output.zipAlign.inputFile.delete();
}
}
}
}
}
解释
在Andorid 3.0 pluing 中outputFile 属性是只读属性,所以outFile 不能new File重新创建一个File对象。
Error:(56, 0) 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.
修改如下:
android.applicationVariants.all { variants ->
variants.outputs.all { output ->
if (outputFileName.endsWith(".apk")){
if ("debug".equalsIgnoreCase(variants.buildType.name)){
outputFileName = "demo_v${defaultConfig.versionName}_${variants.name}_${releaseTime()}_debug.apk"
}else if ("release".equalsIgnoreCase(variants.buildType.name)){
outputFileName = "demo_v${defaultConfig.versionName}_${variants.name}_${releaseTime()}_release.apk"
}
}
}
}
网友评论