使用aapt2 link命令处理androidx appcompat 1.0.2时出现alpha属性未找到错误
问题原因
你遇到的属性找不到错误,核心原因是androidx.appcompat:appcompat:1.0.2不是独立的库,它的自定义属性(比如报错的alpha属性)定义在它的上游依赖库中,你当前的link步骤只传入了appcompat自身的资源和系统android.jar,没有包含依赖库的资源,导致aapt2无法识别这些自定义属性。
解决步骤
- 第一步:整理appcompat 1.0.2的全部必需依赖,至少包含
androidx.core:core、androidx.vectordrawable:vectordrawable等基础依赖库,将所有依赖的aar文件分别解压到独立文件夹。 - 第二步:对每个依赖库分别执行aapt2 compile命令,编译各自的res目录,生成对应的.flata编译产物,示例命令如下(以core库为例):
"C:\Android\SDK\build-tools\31.0.0\aapt2.exe" compile --dir "C:\Temp\core-xxx\res" -o "C:\Temp\core_res.flata"
- 第三步:修改原有的aapt2 link命令,将所有依赖库编译得到的.flata文件全部通过
-R参数传入,同时检查你路径拼写是否正确(报错日志中路径为appcompat.1.0.2,你解压路径为appcompat-1.0.2,注意二者一致性避免额外错误)。修改后的link命令示例如下:
"C:\Android\SDK\build-tools\31.0.0\aapt2.exe" link --auto-add-overlay -I "C:\Android\SDK\platforms\android-31\android.jar" --manifest "C:\Temp\appcompat-1.0.2\AndroidManifest.xml" -R "C:\Temp\compiled_res.flata" -R "C:\Temp\core_res.flata" -R "C:\Temp\vectordrawable_res.flata" -o "C:\Temp\linked_res.ap_" --java "C:\Temp\src"
执行修改后的命令即可正常生成对应R类的Java源码。
内容的提问来源于stack exchange,提问作者Dave Nottage
相关产品推荐
相关产品推荐

