Сделать APK с уникальным идентификатором без компиляции - PullRequest
0 голосов
/ 08 января 2019

Есть такая проблема:

1) Я должен использовать нашу службу распространения для предоставления новых сборок приложения для тестировщиков (нет возможности использовать HockeyApp и т. Д.)

2) Я хочу дать уникальный файл APK каждому тестеру. Но я не могу скомпилировать ~ 3000 APK-файлов для каждой новой сборки приложения.

Поэтому я хочу добавить какой-нибудь идентификатор в файл APK, не перекомпилируя его.

(мне нужно определить, если какой-то пользователь поделится этим APK-файлом где-то в сети без моего разрешения)

Пример:

Пользователь загружает файл .apk с моего сайта => загружает его на какой-то форум / сайт => Я вижу, что кто-то поделился моим приложением в сети => Я скачиваю apk с этого форума / сайта => Я определяю, кто поделился это (через уникальный идентификатор apk)

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Есть два ограничения:

К счастью, подписание apk занимает всего несколько секунд и должно быть выполнимо для 3k apks.

Таким образом, вы можете написать скрипт, который записывает идентификатор в файл в akp (который в основном является .zip-файлом) и подписывает его впоследствии. См. Могу ли я повторно подписать .apk с сертификатом, отличным от того, с которым он поставляется?

См. https://developer.android.com/studio/publish/app-signing#sign-manually о том, как подписать из командной строки.

0 голосов
/ 09 января 2019

Это будет непросто, потому что все файлы вашего APK защищены подписью, поэтому все, что вы добавите, должно быть где-то еще.

Вы можете попробовать изменить zip-комментарии APK (если вы можете найти библиотеку, которая позволяет вам это делать - может быть, «apkzlib»), я не уверен, покрыта ли эта часть подписью.

В качестве альтернативы, вы можете попробовать добавить в APK файл, на который нет ссылки в центральном каталоге zip (в некотором смысле «файл-призрак», он не будет существовать для большинства инструментов zip), возможно, подпись этого не делает покрыть те либо, но я не подтвердил. Это решение также требует хорошего знания формата zip для его реализации.

Также обратите внимание, что если это можно сделать, не касаясь подписи, ее также можно удалить, не касаясь подписи ... поэтому, если один из ваших тестеров узнает об этом, он может удалить ее. Но я думаю, это было бы несложно, так что в любом случае этого может быть достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...