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"
}
}
然後就能運行到設備上了