在进行小文本编辑后可以重新打包APK吗?

时间:2012-04-14 18:43:03

标签: android mobile air apk

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

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

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

任何帮助?

3 个答案:

答案 0 :(得分: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工具:( darn,无法发布链接,因为新用户最多只能发布两个超链接) 你将调用命令:zipAlign -c 4 [signed_android_app] .apk

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

如果有人在不依赖JDK的情况下找到办法进行签名过程(假设密钥文件已准备就绪),请分享。

答案 1 :(得分:2)

  

我该如何解决这个问题?

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

答案 2 :(得分:1)

必须先签署Android apk文件。该签名证明apk的内容并未根据最初发布的内容进行修改。 (这正是你正在做的。)签名同时也证明了作者是谁。

所以在正常签名的apk文件中:

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

这是Android内置的关键安全措施,是有充分理由的,无法克服的。它可以防止像病毒这样的东西被嵌入到无辜的apk文件中。