环境
系统:mac
安卓SDK版本:30.0.0
apktool版本:2.4.1
问题
使用sdk目录里的aapt编译生成R.java报错:First type is not attr!
/Users/liang/Library/Android/sdk/build-tools/30.0.0/aapt p -f -m -J ./gen -S res/ -I /Users/liang/Library/Android/sdk/platforms/android-30/android.jar -M AndroidManifest.xml
First type is not attr!
aapt F 07-18 22:28:55 1467 247240 First type is not attr!
Abort trap: 6
原因
出现这个问题的原因是重打包的apk
的resource.arsc
里面第一个不是attr
,在google
的aapt
工具里面对resource.arsc
里面第一个类型必须得是attr
有强校验,否则就会报First type is not attr!
的错误。aapt1
源码里面对位置为0
的type
做了强校验,如果不为attr
则编译报错
ApkTool
里面使用了aapt1
去对一个已经使用了aapt2
打包的apk
重打包导致此问题
我的解决办法
解压apktool2.4.1,获取到对应的aapt文件
使用截图里的aapt来生成R.java文件即可
aapt_64 p -f -m -J ./gen -S res/ -I /Users/liang/Library/Android/sdk/platforms/android-30/android.jar -M AndroidManifest.xml
其他方法参考:https://baijiahao.baidu.com/s?id=1612770712213635730&wfr=spider&for=pc