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

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

1.打包输出配置问题

studio1.png

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


Androidstudio升级3.0后的一些问题解决_第1张图片
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有错误了。下面这样的:


Androidstudio升级3.0后的一些问题解决_第2张图片
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就完事了。

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


Androidstudio升级3.0后的一些问题解决_第3张图片
hehe.png

以上,Finish!

你可能感兴趣的:(Androidstudio升级3.0后的一些问题解决)