android - 无需编译即可制作具有唯一ID的APK

标签 android testing apk

存在这样的问题:

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

2) 我想为每个测试人员提供唯一的 APK 文件。但是我不可能为每个新构建的应用程序编译约 3000 个 APK 文件。

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

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

例子:

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

最佳答案

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

您可以尝试修改 APK 的 zip 注释(如果您能找到允许您这样做的库 -- 也许是“apkzlib”),我不确定签名是否涵盖了这部分内容。

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

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

关于android - 无需编译即可制作具有唯一ID的APK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54099362/

相关文章:

android - 如何查找我的 Android 设备上是否存在特定包?

ruby-on-rails - 为什么我在 RSpec 中遇到这些失败?

testing - 编写质量测试

android - Telegram Messenger Running 项目仍然遇到 : Unfortunately, Telegram 已停止

Android -- 将应用程序传输到设备

android - 调用 `setRequestedOrientation`后查找设备方向变化的方法

java - Android 加密/解密 sqlite 数据库 100% 安全

android - Caused by : java. lang.RuntimeException : com. android.builder.dexing.DexArchiveMergerException: Error while merging dex archives 错误

html - Lighthouse - robots.txt 错误语法无法理解

android - 如何在 Android Studio 中安装我的应用程序所需的外部 APK?