如何在APK中替换XML文件?

时间:2012-08-30 09:23:33

标签: android apk

我想在每个下载的APK文件中包含其他(每用户)数据。换句话说,我在服务器上有一个现有的APK文件,并希望:

  • 使用动态生成的XML文件替换现有APK中的文件/res/user_info.xml
  • 在用户下载之前更新并重新签名整个包

更多信息:我知道可以使用aapt,apktool,jarsigner完成...问题是文档很差,我无法找到(或开发)工作重新打包APK文件的技巧。例如,aapt始终将XML文件放在根路径(/)中,无论我做什么。我也不确定需要更新哪些资源,以便APK文件再次有效。此外,/res/中的现有XML文件已编译 - 我是否也需要使用我的XML文件?如果是的话,我该怎么做?如果不是,我应该将我的XML文件放在/res/raw/吗?

问题:如何在APK中替换XML文件并重新打包?需要哪些步骤以及我使用哪些工具?

1 个答案:

答案 0 :(得分:4)

在这个writing中,您可以找到解压缩和打包apk文件的基本步骤。

Basicly;

=使用apktool.bat d -s sample.apk .\sample\仅解码apk的资源。(在您的情况下,无需解码源部分)

=添加/编辑/替换您所需的资源。

=使用apktool.bat b .\sample\ .\sample_edited.apk构建更改的apk。

=生成RSA 2048密钥以签署apk(如果您还没有):keytool -genkey -v -keystore my.keystore -alias myandroidalias -keyalg RSA -keysize 2048 -validity 20000

=使用生成的密钥jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my.keystore .\sample_edited.apk -signedjar .\sample_signed.apk myandroidalias

签署apk

=并将带有4字节边界的签名apk对齐zipalign.exe -v 4 .\sample_signed.apk .\sample_aligned.apk zipalign附带android-sdk