一个小的文本编辑后,APK可以重新打包吗?

我正在创build一个软件,引导用户通过几个步骤,发布一个Android应用程序(APK文件)。

我这样做的方式是,APK文件已经被编译,我所需要做的就是replace包中的XML文件,这将改变应用程序的行为。 我现在最大的问题是,解压缩apk文件,做任何小小的文本编辑,然后再打包,破坏签名,并阻止应用程序在任何设备上运行,给出一个消息,签名是不正确的。

我该如何解决这个问题? 我想安全地打开APK,在文本文件中写入一些内容,然后再closures它。 请注意,此操作将在用户的计算机上完成(在他购买了我们的应用程序之后),因此我们正在寻找一个没有像JDK这样的特殊要求的命令行工具。

任何帮助?

Solutions Collecting From Web of "一个小的文本编辑后,APK可以重新打包吗?"

好吧,我达到了最好的“testing”解决scheme – 我在这里发布,以节省其他开发人员的search时间。 唯一的缺点是,我将要求客户在他的机器上安装JDK,不幸的是。 原因是因为我没有find任何纯粹在Windows上运行的apk签名工具,而不依赖于JDK。

我有我的Android应用程序创build使用空气,所以这使我容易 – 所有的空气文件被视为资源资产。 所以你的APK档案文件准备好了。

准备好您的修改后,将其放入名为“assets”的临时文件夹中。 您将使用7-zip命令行工具(免费: http : //sourceforge.net/projects/sevenzip/ )更新您的apk内容。 为了让它与你的apk一起工作,你将不得不将你的apk的扩展名重命名为zip – 不用担心,稍后你会改变它。

现在从包含apk文件(zip扩展名)和您的资产文件夹的位置从一个.bat文件(或直接在命令提示符)中,您可以调用:7za u APK-file.zip资产

现在你的apk文件被更新了。 将它重命名为.apk扩展名

现在您将使用https://code.google.com/p/signapk/中的signAPK工具,并注意这是安装JDK的唯一步骤。 它还假定你有你的密钥文件准备好(replace包中包含的虚拟文件)。 提取文件内容并调用:java -jar signapk.jar key.x509.pem key.pk8 [android_app] .apk [signed_android_app] .apk

在最后,你可能会发现你的签名的apk文件的大小急剧增加。 所以你需要使用android的zipAlign工具:(darn,不能发布链接,因为新用户最多只能发布两个超链接),你将调用命令:zipAlign -c 4 [signed_android_app] .apk

瞧! 这是我正在采取的路线。

如果有人find一种方法来执行签名过程而不依赖于JDK(假设密钥文件已准备就绪),请分享。

我该如何解决这个问题?

你没有。 如果您修改APK文件,无论如何,它必须重新签名。

Android apk文件必须签名。 这个签名certificate了apk的内容没有被最初发布的内容所修改。 (这正是你在做什么。)签名同时也certificate了作者是谁。

所以在一个正常的apk文件中:

  1. 你知道作者是谁 (即使这不是你所能理解的东西)
  2. 你知道内容是由作者放在那里,而不是自修改。

这是Android内置的一个关键的安全措施,是有很好的理由,无法克服的。 它可以防止病毒被embedded到无辜的apk文件中。