我在使用aapt
将资源打包到apk中时遇到了麻烦。在@drawable/[...]
中没有@styles/[...]
或AndroidManifest.xml
方向时,一切正常。但是,一旦我添加例如android:icon="@drawable/icon"
aapt崩溃*解析我的图标文件后(因此压缩图像和东西似乎工作)。
我使用的命令是:
aapt package -v -f -M AndroidManifest.xml -S res -I android.jar -F test.apk
使用-S res
并在清单中添加@ -directions时失败。否则它会成功。
输出日志:
[...]
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的任务)
此外,由于它也可能是系统特定的问题,以下是我的规格:
gnome-terminal
<?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问题
答案 0 :(得分:2)
尝试调整图像大小(降低图像大小),看起来它们的分辨率非常高,并且会占用更多内存。
答案 1 :(得分:0)
解决!对我来说,问题现在已经解决了。我的解决方案是从debian sid安装更新版本的aapt及其所有依赖项。
现在命令运行没有错误!
我从here和here下载了所有必需的文件,从包j
开始,当然,dpkg会告诉您依赖项(有些可以通过int j = i;
taskArray.Add(Task.Factory.StartNew((Object obj) => {
cb.Add(j);
Console.WriteLine("Task #{0} created on {1}",
j, Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(10);
}, , i));
安装)
感谢这些网站!