Android Studio 3.0升级注意事项

2018-05-29  本文已影响0人  bestdxw

最近把Android Studio从2.3.3升级到3.1.2,遇到了不少难缠的问题,现记录一下希望可以给大家解惑。

错误1.apk输出异常

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=tiger8shopDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl. Open File

这个是控制AS输出apk文件的名称,新版本不能这样配置了,看官方的引导可以改成

    android.applicationVariants.all { variant ->
        variant.outputs.all {
            if (variant.name.endsWith("Debug")) {
                //debug包
                outputFileName = "${defaultConfig.versionCode}_${variant.productFlavors[0].name}_debug.apk"
            } else {
                //release包
                outputFileName = "${defaultConfig.versionCode}_${variant.productFlavors[0].name}_release.apk"
            }
        }
    }

命名可以自己酌情修改

错误2.flavor配置异常

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

有两种方法

 defaultConfig {
 targetSdkVersion:***
minSdkVersion :***
versionCode:***
 versionName :***
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}
  //之前的配置
    productFlavors {
        _360 {}
       baidu {}
       xiaomi {}
       meizu {}
       tencent {}
    }
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [CLICK_CHANNEL_VALUE: name]
    }
 //  ==============================分割线===================================   
    //改成如下配置,问题解决
    flavorDimensions "tier"//新增的,值是数组
    productFlavors {
         _360 { dimension "tier"}
        baidu { dimension "tier"}
        xiaomi { dimension "tier"}
        meizu { dimension "tier"}
        tencent { dimension "tier"}
    }
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [CLICK_CHANNEL_VALUE: name]
    }

二选一即可

错误3.AAPT2编译异常

AAPT2 error: check logs for details

是因为在gradle 3.0.0中AAPT2是默认打开的,在项目的gradle.properties中添加android.enableAapt2=false,sync后就编译通过了
如果这么做还是报错
那么就要在build.grandle中添加

aaptOptions.cruncherEnabled = false  
aaptOptions.useNewCruncher = false  

这是忽略图片检测的,不知道原因,但就是有用

另外,升级完后有一些改动是必须的

1.build.grandle里面

dependencies下所有的compile

 compile 'com.android.support:design:27.1.1'
 compile 'com.android.support:recyclerview-v7:27.1.1'

改为implementation

 implementation 'com.android.support:design:27.1.1'
 implementation 'com.android.support:recyclerview-v7:27.1.1'

testcompile

testcompile 'junit:junit:4.12'

改为androidTestImplementation

androidTestImplementation 'junit:junit:4.12'

ps:依赖的library里面同样也是改为implementation

上一篇下一篇

猜你喜欢

热点阅读