android studio3.0升級問題記錄
今天早上升級了android studio3.0升級穩定版,之後編譯專案出現了一些問題,通過網上搜索解決了,以下把自己遇到的問題記錄一下:
1.gradle打包,自定義apk名稱程式碼報錯(Cannot set the value of read-only property ‘outputFile’ )
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.
解決:在app的buide.gradle修改3.0之前輸出自定義apk名字的程式碼,程式碼如下:
// applicationVariants.all { variant ->
// variant.outputs.each { output ->
// def outputFile = output.outputFile
// if (outputFile != null && outputFile.name.endsWith('.apk')) {
// def fileName = "小袋快借${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
// output.outputFile = new File(outputFile.parent, fileName)
// }
// }
// }
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "小袋快借${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
}
}
上面註釋的3.0之前自定義輸出的寫法,下面是現在自定義apk名字的寫法。
2.AAPT2 編譯報錯 AAPT2 error
報錯
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
解決:在gradle.properties中關閉APPT2 編譯?
android.enableAapt2=false
注:如果是eclipse轉到as上的專案,可能沒有gradle.properties檔案,請在專案根目錄中手動建立
參考文章:詳解升級Android Studio3.0時遇到的幾個問題
3.Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
解決:專案中用了多渠道,3.0之前配置多渠道:productFlavors配置不同的渠道包,3.0 新增了flavorDimensions的配置
報錯的大致原因是:Android Plugin3.0的依賴機制:在使用library時會自動匹配variant(debug, release),就是說app的debug會自動匹配library的debug,相信大多數人也像我一樣,當library多了,不會手動選擇每個Library的variant。現在好了,它會自動匹配了。同樣如果使用flavor的時候,比如app的redDebug同樣會自動匹配library的readDebug。雖然有這樣的優勢,但是在使用flavor時,必須定義flavor dimension,否則會提示錯誤:
在app中的build.gradle的
android{
…….
flavorDimensions “channel”
……..