Eclipse无法安装目标SDK版本30的应用问题求助
问题原因
Android 11(API 30及以上)系统强制要求,目标版本为30+的APK必须将resources.arsc文件设为不压缩,且整个APK完成4字节对齐,否则安装时会抛出对应的解析错误。Eclipse默认的Android调试构建流程没有开启对应的配置,所以会触发该报错。
解决方案
方案1:修改构建配置,一劳永逸适配调试构建
Eclipse默认使用Ant完成Android项目打包,你可以在项目根目录新建
custom_rules.xml文件,添加以下配置,让调试构建自动处理对齐和不压缩规则:<?xml version="1.0" encoding="UTF-8"?> <project name="custom_rules"> <!-- 给aapt添加参数,不压缩resources.arsc --> <property name="aapt.ignore.assets" value="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~:arsc" /> <!-- 强制调试构建也执行4字节对齐 --> <property name="zip.align" value="4" /> <target name="-post-package"> <exec executable="${zipalign}" failonerror="true"> <arg value="-f" /> <arg value="${zip.align}" /> <arg path="${out.unaligned.apk}" /> <arg path="${out.apk}" /> </exec> </target> </project>配置完成后重启Eclipse,重新构建调试包即可正常安装。
方案2:手动处理生成的调试APK
如果你不想修改构建配置,可以每次手动处理Eclipse生成的未对齐调试包:
- 正常构建项目,拿到
bin目录下生成的[项目名]_debug_unaligned.apk - 执行aapt命令重新打包,保留resources.arsc不压缩:
aapt p -0 arsc -u -f -M AndroidManifest.xml -S res -I [你的SDK路径]/platforms/android-30/android.jar -F bin/temp.apk bin/classes - 执行4字节对齐操作:
zipalign -f 4 bin/temp.apk bin/debug_aligned.apk - 安装对齐后的APK:
adb install -r bin/debug_aligned.apk
注意:
aapt和zipalign工具都位于Android SDK的build-tools/[对应版本号]/目录下,你可以将该路径加入系统环境变量,或者执行命令时补全工具的完整路径。- 正常构建项目,拿到
方案3:临时调试的快速方案
如果你只是临时调试功能,不需要验证API 30的适配特性,可以暂时将
AndroidManifest.xml里的targetSdkVersion改为29,调试完成后再改回30即可规避该报错。
内容的提问来源于stack exchange,提问作者J mott
相关产品推荐
相关产品推荐

