美文网首页Android开发经验谈半栈工程师Android知识
Androidstudio升级3.0后的一些问题解决

Androidstudio升级3.0后的一些问题解决

作者: 我是李戴表 | 来源:发表于2017-12-27 16:09 被阅读176次

    最近升级了下androidstudio从2.3.3到3.0.1,升级后,立马就各种编译错误了。最终也是网上查的各种资料,糊里糊涂的搞好了。都比较乱,自己整理下发出来,以后直接找自己的笔记了。

    1.打包输出配置问题

    studio1.png

    这里提示 Cannot set the value of read-only property 'outputFile' ........
    点击错误提示里的Open File 打开对应的gradle文件一看(定义的不用看,每人的都有点差别):


    studio3.png

    3.0版本,outputFile属性只读了。只能通过另一种方式配置,改成下面这样既可:

    android.applicationVariants.all { variant ->
     //这俩定义是我工程自己的,每人都不同,用自己的就行,
            def nextGetFunctionName = "${variant.buildType.name}";
            def nextGetFunctionNameOK =  nextGetFunctionName.substring(0,1).toUpperCase()+nextGetFunctionName.substring(1,nextGetFunctionName.length()).toLowerCase();
        //这才是3.0的改动地方
            variant.outputs.all {
                outputFileName = "随便自定义名字-${nextGetFunctionNameOK}-${releaseTime()}.apk"
            }
        }
    

    重新编译,这个打包输出配置错误就Over了。中间会有些能自动解决的错误提示,无非是编译版本问题,点击Update Build Tools version and sync project即可。进入下一个坑。

    2.retrolambda警告及批量打包配置error

    studio4.png

    第一个retrolambda警告是因为studio3.0后,直接用的java8里面的lambda支持了,就是我们不需要声明引入这个库了。把相关retrolambda库配置去掉即可。我这里的位置直接注释了:


    studio5.png

    这个警告问题Done

    第二个是批量打包flavos配置错误,跟之前的打包输出一样,3.0针对这个项也改了。原来的配置是这样的:

    productFlavors {
            ks {}
            huawei {}
        }
    

    明显不合时宜了。改成下面这样就行了

    flavorDimensions "default"
        productFlavors {
            ks {dimension "default"}
            huawei {dimension "default"}
            yingyongbao {dimension "default"}
            t360 {dimension "default"}
            jinbaobei  {dimension "default"}
        }
    
        productFlavors.all {
            flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }
    

    重点就是新版需要指定dimension这个东东。 到此,重新编译,之后还有会什么google()配置的错误,点击sync就行了,ide自动配置修复了。Over

    3.Could not resolve project : xxxxx

    这是加载我们的Module有错误了。下面这样的:


    studio6.png

    这些Module为啥都报错呢,新版本要求gradle配置编译类型buildTypes时,增加preview版本,如下是我的:

    buildTypes {
            release {
                signingConfig signingConfigs.release
                minifyEnabled false
                buildConfigField "int", "BUILD_TARGET", "3"
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    
                // 移除无用的resource文件
                shrinkResources false
                buildConfigField "boolean", "LOG_DEBUG", "false"
            }
    
            gama {
                signingConfig signingConfigs.release
                buildConfigField "int", "BUILD_TARGET", "2"
                buildConfigField "boolean", "LOG_DEBUG", "false"
            }
    
            debug {
                signingConfig signingConfigs.release
                buildConfigField "int", "BUILD_TARGET", "0"
                buildConfigField "boolean", "LOG_DEBUG", "true"
            }
    //划重点,上面三个不要管,是我自己工程的配置,主要是下面这个,添加到buildTypes里面就行
            preview {
                signingConfig signingConfigs.release
                //重要的是这句,这个指明上面那走自己的,不干涉
                matchingFallbacks = ['release', 'gama', 'debug']
            }
        }
    

    这个加完,还没完事。所有的module中,都得加入一样的buildType ,之前我的module没有这个配置,通通加上了, 当然,加上最简单的就行。重要的是:app的buildtypes有几种,module需要加入一样的几种(release,gama,debug)。如果工程app只需要一种,或者两种,就写那一两种,加上preview就完事了。我的其他Module通通加了个最简单配置,如下:

    buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
            gama {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
            debug {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
            preview {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                matchingFallbacks = ['release']
            }
        }
    

    把你们那些报错的module中的gradle通通加上这个,try again就完事了。

    我升级时,就这几个错误,如果有发生其他错误,再自行度娘股沟吧~


    hehe.png

    以上,Finish!

    相关文章

      网友评论

        本文标题:Androidstudio升级3.0后的一些问题解决

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