AndroidStudio升级到3.0后gradle也升级到了3.0的版本
如果继续使用原来的打包方式就会出错
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def finalVersionCode =v10000 + versionCode
output.versionCodeOverride = finalVersionCode
output.outputFile = new File(
output.outputFile.parent, output.outputFile.name.replace(".apk","-${finalVersion}.apk"))
}
}
错误信息
Error:(23, 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.
修改方法:
1. each()改为all()
2. 将output.outputFile改为outputFileName
修改后:
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def finalVersionCode = 10000 + versionCode
output.versionCodeOverride = finalVersionCode
outputFileName = new File(
output.outputFile.parent,
outputFileName.replace(".apk", "-${finalVersionCode}.apk"))
}
}
分割线
上面的方法虽然不会再报错,但是在build的时候却出现了新的错误:
Error:Execution failed for task ‘:app:packageDebug’. Cannot create directory
我一直以为是编译的问题,clean,rebuild都不行,后面查到还是打包出现的问题,应该修改为:
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def finalVersionCode = 10000 + versionCode
output.versionCodeOverride = finalVersionCode
outputFileName = "${variant.name}-${finalVersionCode}.apk"
}
}
然后就能运行到设备上了