子目录在1.6和2.1之间的不同aapt行为?

时间:2010-02-19 22:12:59

标签: android

场景:我有一个如下目录结构:

mkdir -p foo/bar  
touch foo/bar/test.txt

我想要做的是将test.txt添加到目录foo / bar下的.apk中,以便解压缩或列出apk返回相同的目录结构。

这在1.6 SDK下工作正常:

aapt add test.apk foo/bar/test.txt

我可以列出并解压缩test.apk,一切都很顺利。但是,在2.1下,test.txt被添加到test.apk的根目录中,这不是我想要的。

我刚刚在我的桌面上的2.1 SDK和笔记本电脑上的旧版本1.6下进行了测试,我已经确认它曾经工作过,现在却没有。

我已经查看了aapt命令行选项,如果有一个--keep-the-files-i-add-in-their-subdirectories选项,那么我只是没有看到它。 :/谷歌搜索也没有返回任何有用的东西。

非常感谢这方面的帮助。我需要在我的Android应用程序中存储第三方.properties文件,因此它们位于类路径中,而我无法找到正确的命令行咒语是唯一阻止此应用程序脱离2.1的阻止程序。 :)

非常感谢。

2 个答案:

答案 0 :(得分:0)

似乎在Win与Ubuntu(所有Linux?)中可能存在不同的行为。我可以确认Nolan在我的Ubuntu-karmic机器下的原帖中说了些什么。 dir结构在Windows下添加得很好,都使用Android-8。有谁知道为什么或如何解决这个问题?

答案 1 :(得分:0)

您看到的行为是AAPT中的错误。您可以在Repackage APK file to contain custom assets - what build tool to use?找到更多相关信息。

某些SDK中存在AAPT的破坏版本。正确的行为是它应该像你描述的那样工作,但我也很努力让它发挥作用。

不幸的是我不能告诉你哪个SDK有一个可用的AAPT版本 - 我们办公室的某个人通过反复试验找到了它,因此我们已将其存档用于我们的开发目的,现在我们只使用该副本。

所以解决方案是下载许多SDK,并尝试每个AAPT(糟糕,费力,并不是一个很好的解决方案,但它的工作原理)。如果你做对了,AAPT就很棒。

我们已经使用它来定位2.1但我不确定它是我们使用的2.1 SDK版本。

(不,谷歌搜索这对我也没有帮助 - 遗憾地对这个问题发出太多噪音)。