码字辛苦!转载请注明出处!
最近接到一个外快,需求很简单,于是就爽快答应了。
拿到手上才发现,这是个大龄程序猿用eclipse写的旧项目,导入AS编译后,爆出了这样的错误:
这里强调一下:
网上流传的禁用AAPT2的方法是解决不了这个问题的!
android.enableAapt2=false
↑这是错误的解决方法
=====================罪魁祸首=====================
导致这个问题的原因,是因为
1、AS对于.9图的裁切要求更加精确:
而eclipse使用的.9图只要有粗略的位置就可以了。
2、Gradle3.0+为了安全性,将compile替换成了implementation
=====================解决问题=====================
使用全局文件搜索(双击SHIFT)【.9】:
打开所有.9图,重新抠一下边界。
接下来打开app的build.gradle,将dependencies中所有的compile替换成implementation:
一定要选择dependencies里的内容,否则,全局替换会把你的compileSdkVersion给弄成implementationSdkVersion,导致编译出错。
最后重新【Make project】一下:OK,编译通过~
*这里说一下implementation和compile的区别:
implementation引用的依赖库仅对当前moudule有效,如果其他moudule需要这些依赖库,也需要implementation;
compile引用的依赖库对项目中所有的moudule生效,因此可能造成安全问题。
最后,如果觉得有帮助的话,就给博主发个红包吧~