由于我几个电脑上as的版本都不一样,所以同一个项目于的gradle文件也不一样;最近给mac装了as3.4.2后导入以前的老项目各种报错
- 首先gradle依赖要改成3.4.2
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
}
- gradle-wrapper.properties中gradle版本最低支持到5.1.1
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
- 资源整合失败,如自定义属性和自定义id :ids.xml中写法不兼容报错
报错的位置app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml;鼠标点击会跳转到具体报错的位置,但是这个是编译后的资源文件,我们要改的是源文件,可以复制相关属性去全局搜索;这里说’item标签中的值要么为具体资源的引用要么为空,以前的写法是可以用一个默认值占位的’
– 以前的写法
<item name="xxx_id" type="id">xxx_id</item>
–现在的写法,如果xxx_id不是一个引用值可以不写
<item name="xxx_id" type="id"/>
–改完以后上面的error就消失了,如果有多个要逐一修改注意:修改之前可以将原有的先分组,再注释,然后批量修改,有可能其他低版本上要用到,到时候直接注释切换就ok了
##上面的问题解决了再build可以正常执行,但是在run的时候java文件会报各种包找不到的错误,如Gson,okhttp…等第三方的的包找不到;
- 解决方法就是把dependencies里面的compile和implementation换成api即可,因为在报错信息中会让你用’api’或者’implementation’去替换所有的’compile’,但是改成implementation可能获取不到第三方的库,最终方案就是直接用api替换compile
升级IDE全是坑,今天就记录这两问题,以后再慢慢扩展。