Как включить строку версии в имя файла при сборке Android apk с муравьем? - PullRequest
22 голосов
/ 11 марта 2011

Обычно мы собираем пакет Android в режиме отладки с помощью команды

ant debug

и получаем имя файла apk AppName-debug.apk .

Есть ли способ?создать файл apk в формате AppName-debug-<version-number>.apk напрямую без команды 'mv'?

Спасибо.

Ответы [ 4 ]

38 голосов
/ 11 марта 2011

Я сделал это автоматически, используя информацию из манифеста Android.

Мой подход состоял в том, чтобы изменить локальный файл проекта ant build.xml для импорта пользовательской копии главного файла build.xml, в последней версии SDK главный файл, импортируемый в локальный файл, расположен по адресу <SDK>/tools/ant/build.xml (в предыдущих версиях был android_rules.xml) Обратите внимание на строку import в файле по умолчанию build.xml, локальном для вашего проекта.

Комментарии в локальном build.xml, созданные инструментами Android, содержат сведения о том, как выполнить настройку, чтобы будущие обновления инструментов не нарушали ваши изменения.

В файле пользовательских правил добавьте:

<xmlproperty file="AndroidManifest.xml" prefix="mymanifest" collapseAttributes="true"/>

В манифесте это выглядит как набор свойств муравья с настраиваемым префиксом, предотвращающим конфликт имен.

Затем вы можете добавить $ {mymanifest.manifest.android:versionName broadcast к любому из мест, для которых определено имя apk, просто найдите .apk в файле пользовательских правил.

Я использовал этот процесс для автоматизации управления версиями файлов с сервера сборки.

С некоторыми дополнительными настройками вы также можете автоматически подписать ваше релизное приложение, купить пароли в свойствах и использовать их в задаче подписи. Фактические пароли хранятся в отдельном файле свойств, который находится только на сервере сборки. Хотя это незначительный риск для безопасности, в некоторых случаях он взвешивается необходимостью полной комплексной автоматизации сборки.

9 голосов
/ 09 января 2012

Другое, более похожее на Android решение состоит в использовании задачи XPATH, как это делается в $ {sdk.dir} /tools/ant/build.xml:

.
<xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName"
                        output="versionName" default="unknown"/>
<echo message="name: ${versionName}"></echo>

Для этого требуется определение задачи:

<path id="android.antlibs">
    <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
</path>

<taskdef name="xpath"
        classname="com.android.ant.XPathTask"
        classpathref="android.antlibs" />

Я не знаю, какая минимальная версия SDK, но она работает с SDK14.

С уважением, Michael

2 голосов
/ 02 июля 2013

Решение, описанное в следующем посте, имеет файл custom_rules.xml, который можно просто скопировать для достижения желаемого результата. http://jeffreysambells.com/2013/02/14/build-your-android-apk-with-the-manifest-version-number

0 голосов
/ 11 марта 2011

Да, есть способ создать apk-файл с любым именем, я даю вам процесс, следуйте этому процессу, если вы получили .apk упомяните свое имя.

1-Щелкните правой кнопкой мыши приложение в проводнике пакетов.2-Выбрал экспорт.3-выбрал приложение Android 4-Choose Export Android.5-Создать новое хранилище ключей.6- заполните форму.7-: Дайте имя файла apk , что вы хотите 8-: укажите местоположение apk для хранения apk.

Тогда вы найдете решение вашей проблемы.Я надеюсь, что это помощь.

...