使用唯一ID制作APK,无需编译



有这样的问题:

1)我必须使用我们的分发服务向测试人员提供新版本的应用程序(无法使用HockeyApp等)

2)我想给每个测试人员唯一的APK文件。但是我不可能为每个新版本的应用程序编译~3000个APK文件。

所以我想在不重新编译的情况下将某种 ID 添加到 APK 文件。

(我需要它来识别,如果某些用户在未经我许可的情况下在网络上的某个地方共享此APK文件)

例:

用户从我的网站下载.apk文件=>将其上传到某个论坛/网站=> 我看到,有人在网络中共享了我的应用程序 => 我从该论坛/网站下载apk => 我识别了谁分享了它(通过apk的唯一ID)

这并不容易,因为您的APK的所有文件都被签名覆盖,因此您添加的任何内容都必须在其他地方。

您可以尝试修改APK的zip注释(如果您可以找到允许您执行此操作的库 - 也许是" apkzlib"),我不确定签名是否涵盖了这部分。

或者,您可以尝试将一个未在 zip 中央目录中引用的文件添加到 APK(在某种程度上是"幽灵文件",大多数 zip 工具都不存在),也许签名也没有涵盖这些,但我还没有验证。此解决方案还需要对 zip 格式有很好的了解才能实现它。

还要注意的是,如果可以在不触摸签名的情况下完成此操作,也可以在不触摸签名的情况下将其删除......因此,如果您的测试人员之一发现这一点,他们可以将其删除。但我想这样做不是一件小事,所以无论如何这可能就足够了。

有两个约束:

  • 无法安装未签名的 apk。
  • APK 签名对 APK 的每个位进行签名,因此必须对 Apk 进行签名。

幸运的是,签署 apk 只需要几秒钟,对于 3k apk 应该是可行的。

因此,您可以编写一个脚本,将 id 写入 akp 中的文件(基本上是一个.zip文件),然后对其进行签名。请参阅是否可以使用与证书附带的证书不同的证书重新签署.apk?

请参阅 https://developer.android.com/studio/publish/app-signing#sign-manually 了解如何从命令行签名。

最新更新