AndroidStudio升级3.x之后太坑了

由于手欠升级了As 3.0以上的版本,16年写的项目在打开,,彻底崩溃了,浪费了一天时间来整理这些烂摊子。
过程当中遇到的问题主要记录一下

The specified Android SDK Build Tools version (25.0.1) is ignored, as it is below the minimum supported version (26.0.2) for Android Gradle Plugin 3.0.1.Android SDK Build Tools 26.0.2 will be used.
To suppress this warning, remove “buildToolsVersion ‘25.0.1’” from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.
Update Build Tools version and sync project.
Open File.

 

首先就来这个错误,仔细看了一下是因为build.gradle中compileSdkVersion 版本号与buildToolsVersion不匹配。

解决方式 进入build.gradle文件中把两个版本号改成一支,,或者留下compileSdkVersion 28 buildToolsVersion删除;

 

 

Error:Execution failed for task ':app:javaPreCompileDebug'.
> Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath are found to contain annotation processor.  Please add them to the annotationProcessor configuration.
    - permissionsdispatcher-processor-2.3.1.jar
  Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior.  Note that this option is deprecated and will be removed in the future.
  See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.

这个问题就比较蛋疼了,我只知道注解出了问题,后来问了度娘才知道最新版build.gradle需要添加这句代码

 apply plugin: 'com.android.application'

    ....
    androdi{
                defaultConfig{
                ....
                ...
                javaCompileOptions {
                annotationProcessorOptions {
                    includeCompileClasspath true
                }
        }
    }
}

 

 

还有一个最主要的问题 就是新版的as 对库的依赖compile 要用 implementation 或 api 替换   testCompile 要用 testImplementation 或 testApi 替换 androidTestCompile 要用 androidTestImplementation 或 androidTestApi 替换。。。。。一脸懵逼,老项目全部都得换。还是换了,项目编译,运行其他引进来的module代码中都报错说是找不到这个包找不到哪个包的。。十脸懵逼,咋回事儿,心态要蹦了,明明module所依赖的commonLibrary(module)中这些包都依赖了。。就是找不到,后来查资料看才知道他们之间的区别了

              1.  api是complie的替代品,api 与 complie 没有区别。

               2.  最新官方推荐 implementation 用来代替 compile, implementation 会使AS编译速度更快

               3.  implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。

                api声明的依赖包时, 模块依赖于此模块,此模块使用api声明的依赖包是可以被其他模块使用

意思就是在我的Amodule中所依赖的库想要别的依赖Amodule的Bmodule中使用的话,,Amodule中  complie必须改成api,而不能改成 implementation,如果改成implementation的话就只有自身的module中使用,其他的库是不能使用的。。知道了这些立马改成api,,编译立马通过!

其他的错误很简单容易解决。。建议在做老项目的童鞋不到万不得已不要升级了,,太头疼了,学习路程太漫长了,我才刚刚开始!加油!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值