美文网首页
Android Studio 3.0升级注意事项

Android Studio 3.0升级注意事项

作者: bestdxw | 来源:发表于2018-05-29 20:24 被阅读0次

    最近把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
     defaultConfig {
     targetSdkVersion:***
    minSdkVersion :***
    versionCode:***
     versionName :***
    //版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
    flavorDimensions "versionCode"
    }
    
    • 修改productFlavors
      //之前的配置
        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

    相关文章

      网友评论

          本文标题:Android Studio 3.0升级注意事项

          本文链接:https://www.haomeiwen.com/subject/sdaajftx.html