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”
……..

}
参考文章:升级AS3.0随记
迁移到Android Studio 3.0
解决Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com

你可能感兴趣的:(工作项目问题记录)