重新包装APK文件以包含自定义资产 - 使用什么构建工具?

Ric*_*ier 9 ant android apk aapt

更新:这是一篇旧帖子,下面对破损aapt版本的引用将会过时.


根据之前的反馈,我将自定义文本字段存储在我的应用程序的assets目录中.

我将使用资产文件中的默认用户详细信息编写应用程序,并且客户端希望为每个用户重建应用程序,包括资产文件中该用户的详细信息.

(我知道这种方法有一些严重的缺点,但客户仍然热衷于这样做 - 请参阅APK文件中的嵌入登录详细信息,每个用户(或其他选项?)不同)

这个问题与我重建APK文件时遇到的麻烦有关,一旦我解压缩它,并更新了自定义资产文件.我确信我错过了一些小的东西,然而,我在这些方法上找到的文档和帖子对于新手来说是没有用的.

  1. aapt - Android sdk工具:不幸的是,Android文档[下面的链接2]上的"使用aapt"的android文档是非常有限的.控制台命令-help显示更多信息.当尝试使用它只是将文件添加到test.apk时,它最终会删除原始文件,并创建一个新文件test.apk.zip,其中只包含我尝试添加的文件.我无法找到正确的命令行组合来获取解压缩的apk并重新打包 - 这将是我的第一奖.

  2. apkbuilder - Android sdk工具:首先,这个工具已被弃用,这是一个负面因素.我也无法使用它在解压缩文件夹中的工作.我想我错过了一个apkbuilder之前的步骤,因为apkbuilder请求资源zip存档,我有一个资源文件夹.

  3. ant - build工具:其他类似的帖子说用ant构建,而不是使用android工具.我无法上班.获取Ant与Android合作的一个特定链接[下面的链接3]看起来很有希望,但看起来它是针对不同的android sdk(我的build.xml由android生成看起来与他不同).不幸的是,我对蚂蚁​​知之甚少,而且很难成为足以解决我当前问题的专家.
    继下面的NickT解决方案 - 运行ant脚本给我错误
    taskdef类com.android.ant.SetupTask无法使用类加载器AntClassLoader []找到.
    我在网上找到了一些关于这个错误的引用,已经确认local.properties有一个指向我的android sdk安装文件夹的sdk.dir设置(sdk.dir =/Applications/android-sdk-mac_86).

  4. ?????:可能还有其他一些我未列出/发现的选项,我有兴趣听到.

我意识到深入研究通常由我的ide所掩盖的齿轮会导致困难.但我知道很多SO用户可以做很多这样的事情,我希望我能引起其中一些人的兴趣.谢谢你的帮助.

(Mac Snow Leopard 10.6 64位上的Eclipse 3.6)

PS,我还不能发布超过1个超链接,所以我已经包含这些地址以显示更多信息给我的问题.

(1):stackoverflow.com/questions/4783160/embed-login-details-in-apk-file-different-for-each-user-or-other-options

(2):developer.android.com/guide/developing/tools/aapt.html

(3):www.disgruntledrats.com/?p = 27

Ric*_*ier 9

用我们最终选择的方法回答我自己的问题,并"记录":

我无法让Ant正常工作(我缺乏理解).

我最终使用了aapt工具.它适用于Android sdk文档,使用起来非常简单:

aapt add -v Test.apk "assets/readme.txt"
Run Code Online (Sandbox Code Playgroud)

这将添加一个readme.txt文件(我们将其存储在当前运行文件夹的子文件夹中,称为资产.如果要将新文件存储在其他位置,aapt会提供命令行开关来指定)

但是,有一些警告:

  1. 我无法让它在签名的APK文件上工作.
  2. 某些版本的aapt 无法正常工作!他们无法识别子文件夹......

要解决1:

  1. 从eclipse导出APK作为未签名的APK.
  2. 使用keytool生成密钥(请参阅Android dev文档).
  3. 使用aapt.
  4. 使用jarsigner签署APK.

要解决2:

我真的无法帮助解决这个问题.我尝试下载的每个版本的SDK(在Mac上)都包含一个无法识别子文件夹的aapt工具.一位同事下载了一个有效的版本,但是我们仍然无法弄清楚他下载了哪个版本,所以我们保留了这个"魔术"副本并重命名它并将使用它直到我们找到一个有效的新版本.