我在使用aapt
将资源打包到 apk 中时遇到了一些麻烦。当我AndroidManifest.xml
没有@drawable/[...]
或@styles/[...]
方向时,一切正常。但是一旦我添加例如android:icon="@drawable/icon"
aapt 就会崩溃*在解析我的图标文件后(因此压缩图像和东西似乎有效)。
我正在使用的命令是:
aapt package -v -f -M AndroidManifest.xml -S res -I android.jar -F test.apk
使用-S res
并在清单中添加 @ 方向时失败。否则它成功。
输出日志:
[...]
applyFileOverlay for menu
applyFileOverlay for mipmap
Processing image: res/drawable/icon.png
Processing image: res/drawable-ldpi/icon.png
Processing image: res/drawable-xhdpi/icon.png
(processed image res/drawable-ldpi/icon.png: 82% size of source)
(processed image res/drawable-xhdpi/icon.png: 95% size of source)
(processed image res/drawable/icon.png: 60% size of source)
(new resource id icon from drawable/icon.png #generated)
(new resource id icon from ldpi-v4/drawable/icon.png #generated)
(new resource id icon from xhdpi-v4/drawable/icon.png #generated)
Aborted (dump written)
退出代码是134,找不到任何关于它的信息
谢谢
编辑
所有资源都用于 Android Studio 项目。由于编译没有任何问题,因此我认为资源是有效的
(似乎是aapt或xml解析的问题,我认为gradle取代了Android Studio中aapt的任务)
另外,由于它也可能是系统特定的问题,因此以下是我的规格:
- Ubuntu 16.04.4 64位
- AMD 处理器(6 核)
- 区域设置:德语
- 用于测试的终端:
gnome-terminal
编辑 - 安卓清单的内容.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.app"> <!-- Of cause different but no special chars -->
<application
android:allowBackup="true"
android:icon="@drawable/icon" <!-- With this line, crashes -->
android:label="Title" <!-- Again different title but only english letters -->
android:supportsRtl="true"
android:testOnly="false">
<activity android:name="immerse.MAct">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
更新
在没有@drawable/icon
但有资源的情况下再次尝试。还在崩溃。
所以这似乎不是 xml 问题
尝试调整图像大小(使它们变小),看起来它们的分辨率非常大,并且占用更多内存。
解决了!对我来说,问题现在已经解决了。我的解决方案是安装一个较新版本的aapt及其所有来自debian sid的依赖项。
该命令现在可以运行,没有错误!
我从这里和这里下载了所有必需的文件,从包aapt
当然,dpkg 会告诉你依赖项(有些可以通过apt
安装)
感谢这些网站!