Как изменить предварительно упакованный файл apk на стороне клиента пользователем, который использует мое настольное приложение? - PullRequest
0 голосов
/ 09 сентября 2011

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

Вот моя проблема:

  • Я написал программу для Android, которая отображает содержимое (текст, изображения и т. Д. В необработанном формате), которое хранится в папке «assets». Теперь я хочу доставить это приложение вместе с приложением Windows (также написанным мной) для конечных пользователей, что позволяет им добавлять содержимое в папку «assets» файла apk и выводить измененный apk с желаемым именем (отображаться на их телефон).

Каково лучшее решение для этого и какие инструменты и команды мне следует использовать? Я имею в виду, какие инструменты (aapt, jarsigner, ...) я должен включить в свое программное обеспечение и какие команды должны быть запущен моим программным обеспечением для этого?

Больше информации о моем случае:

  • Мои пользователи не являются продвинутыми и ничего не знают о программировании Android и изменении apk, и я хочу, чтобы они использовали только мое клиентское приложение Windows.
  • Я не хочу использовать JDK, JRE, ... на компьютере клиента.
  • Процесс изменения включает: замену AndroidManifest.xml и drawable \ icon.png и добавление некоторых файлов в папку активов.
  • Я бы распространял свой файл хранилища ключей и неподписанный оригинальный файл apk вместе с моим программным обеспечением для подписи в конце процесса.

P.S: Хорошо, через несколько часов я почти нашел решение за 9 шагов, получил окончательный файл apk с пользовательской подписью и zip-выравниванием и установил на устройство без ошибок! Но теперь проблема в том, что все apk-файлы, которые будут создаваться моими пользователями, будут иметь одинаковое имя пакета (com.MyName.MyApp) и вызовут проблему, если кто-то установит 2 или более из них на свои телефоны. Должен ли я попробовать "aapt --rename-manifest-package" для этой проблемы? и как им пользоваться?

1 Ответ

4 голосов
/ 29 августа 2012

Я наконец-то получил это рабочее решение, я поставил его здесь для всех, кто заинтересован.

1 - Извлечение «original.apk» (source.apk) во временную папку (т. Е. TempFolder)

2 - Поместить созданные пользователем файлы в папки «assets» и «res \ drawable» в TempFolder

3 - создайте AndroidManifest.xml и поместите в TempFolder

4- Запустите эту команду: aapt package -f -M "PathToManifest" -S "PathToResFolder" -I android.jar -F "NearlyFinal.apk" -A "PathToAssetsFolder"

5 - скопировать "classes.dex" в папку, где существует NearlyFinal.apk.

6 - запустите эту команду: aapt add -f NearlyFinal.apk classes.dex jad.properties

7- подписать файл apk: jarsigner -storepass [keystorePass] -keystore KeyStoreFile.key NearlyFinal.apk [KeyStoreName]

8- файл zipalign apk: zipalign 4 NearlyFinal.apk "Final.apk"

9 - переименуйте и переместите Final.apk в соответствии с предпочтениями пользователя.

FINISH

...