10

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

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

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

有什么帮助吗?

4

3 回答 3

12

好的,我找到了最好的“经过测试”的解决方案——我把它贴在这里是为了节省其他开发人员在谷歌上搜索的时间。唯一的缺点是我会要求客户在他的机器上安装 JDK,很遗憾。原因是我没有找到任何纯粹在windows上工作的apk签名工具,而不依赖于JDK。

我使用 Air 创建了我的 android 应用程序,所以这对我来说很容易——所有的空气文件都被视为资源资产。因此,请准备好您的 APK 存档文件。

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

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

现在您的 apk 文件已更新。将其重命名为 .apk 扩展名

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

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

瞧!这就是我要走的路线。

如果有人找到了一种不依赖 JDK 来进行签名过程的方法(假设密钥文件已准备好),请分享。

于 2012-04-15T11:37:51.417 回答
2

我该如何解决这个问题?

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

于 2012-04-14T23:38:12.857 回答
1

Android apk 文件必须经过签名。该签名证明 apk 的内容并未从最初发布的内容中修改。(这正是你正在做的。)签名的同时,也证明了作者是谁。

所以在一个普通的签名apk文件中:

  1. 你知道作者是谁。(即使它不是你作为人类可以理解的东西。)
  2. 你知道这些内容是作者放在那里的,从那以后就没有修改过。

这是内置于 Android 中的一项关键安全措施,其存在是有充分理由的,而且无法克服。它可以防止病毒之类的东西嵌入到无辜的 apk 文件中。

于 2012-04-15T02:24:33.787 回答