AndroidStudio升级到3.2.1版本后遇到的几个坑,解决无果的话大家看看我的方案是否能GET到。

1、背景:最近升级了AS,发现了几个致命的坑,为什么说是致命,因为解决时间很长影响了正常的开发时间。

2、问题一描述:

升级后第一次肯定是遇到这个问题,引入的第三方工程中依赖的包报红。上网查了查,这个倒是一个很简单问题。

升级gradle版本和gradle插件。

1、旧版本gradle插件比如大家是这样的:

你需要替换成比如这个版本或者这个版本以上的:

dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
    }

2、旧版本的gradle比如大家是这样的:

你需要替换成这样的版本或以上的:

#Tue Feb 12 15:41:56 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

3、OK替换完之后 还报红???

那是大家将引入的第三方工程的依赖包全都设置成了implementation,为什么不能设置成implementation?

新版本需要我们将compile替换成implementation,当然我们不能完全都替换成implementation,我们先来看一下implementation和compile的故事:api或compile关键字引用的包对于其他module来说是可见的,而implementation关键字引用的包对于其他module来说是不可见的。

意思就是:在主工程中大家部分调用的方法,主工程并没有相应依赖lib,这些lib是依赖于引用的第三方项目中的, 在旧版本的Gradle时,使用的compile关键字引用的包对于其他module来说是可见的即主module是可以直接调用使用的。替换为implementation后这些部分使用到其他module中依赖包的方法就会报红。

OK,知道原因后,我们该怎么做?将报红的一些第三方工程依赖包的关键字从implementation改为api 比如这样

报红问题解决后,我们试着运行一下,哎呀,运行失败。

3、问题二描述:

运行失败,我们将迎来另一个网上众说纷纭的问题。

大家看到这个是不是崩溃了,有人试过翻墙网络代理设置的方法,有人试过重启AS clean项目的方法,有人试过改gradle版本的方法等等等等,我都试过,没有一点用好吧。来看我如何解决,希望对大家有所帮助:

这个问题很简单,就是像文中所说的module没有找到相应的配置。

大家的除主工程外的module的buildTypes应该是这样配置的:

升级gradle版本之前这些配置是没有一点问题的,升级之后我们需要改为这样的配置:

 buildTypes {
        debug {
        }
        web6 {
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

跟主module一样的buildTypes,不一样的是不需要主module那些复杂的东西,只需要加这两个没有的环境名称就行了。

ok,这样重新运行,我们的问题是不是很简单的解决了呢?如果解决了,给个赞哦。

猜你喜欢

转载自blog.csdn.net/u010351988/article/details/87804461