Могу ли я использовать AAPT для добавления кода версии в APK?

Мне сказали, что есть способ использовать параметр --version-code aapt для добавления/вставки кода версии в APK, чей манифест не определяет его. Однако я не нашел примеров того, как это делают люди (кроме https://groups.google.com/forum/#!msg/adt-dev/XjehZDzfXhk/g2sWBC37_I4J, который ссылается на мертвую страницу и даже не то, что я пытаюсь сделать), если действительно можно сделать.

В настоящее время aapt d badging example.apk запуск рассматриваемого apk возвращает что-то вроде

пакет: name='com.example.core' versionCode='' versionName='1.0.0' sdkVersion:'8'

В моем манифесте в настоящее время у меня есть версияName, определенная как строка в файле xml, поэтому я могу вытащить ее с помощью чего-то вроде android:versionName="@string/app_version_name" (внутри тега манифеста). Однако, если я попробую это с кодом версии, похоже, он не хочет разрешать ссылку. Он пытается буквально установить код версии на путь, который я ввожу, а затем терпит неудачу, поскольку он не является целым числом.

Я пытался сделать что-то вроде aapt p --version-code 100 example.apk, но, похоже, он хочет упаковать весь проект и ожидает в качестве входных данных каталог файлов, а не файл apk. (Я предполагаю, что это поведение по умолчанию для aapt p[ackage])

Можно ли установить код версии APK после его создания с помощью инструмента aapt? Если да, то каков правильный синтаксис?


person matt5784    schedule 30.07.2012    source источник


Ответы (1)


Это решение не будет использовать aapt напрямую, но будет за кулисами.

Вы можете использовать Android APKTool, чтобы открыть APK, изменить файл AndroidManifest.xml , добавив версию Информация; а затем снова используйте APKTool для перепаковки. Этот инструмент с открытым исходным кодом и использует aapt. Таким образом, вы можете посмотреть на его код, чтобы понять, как это сделать, используя aapt напрямую.

person André Oriani    schedule 31.07.2012
comment
В основном я ищу решение, которое я могу добавить в наш текущий процесс сборки maven. Например, файл android build.xml по умолчанию будет вставлять код версии при запуске aapt, если вы установите определенное свойство. Тем не менее, у меня нет контроля над вызовами maven aapt, поэтому я надеялся, что смогу добавить еще один после того, как apk будет создан, чтобы затем вставить код версии. - person matt5784; 31.07.2012
comment
В итоге я выбрал более простой поиск/замену шаблонного манифеста с использованием скрипта, но это было бы хорошим альтернативным решением. - person matt5784; 18.09.2012