Как автоматизировать приращение кода версии в AndroidManifest? - PullRequest
10 голосов
/ 08 февраля 2011

У меня есть приложение, загруженное в репозиторий Subversion / SVN. Можно ли использовать скрипт для изменения кода версии приложения, хранящегося в AndroidManifest? Я имею в виду во время / после оформления заказа / обновления?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="mypackage"
          android:versionCode="100000"
          android:versionName="1.0">

Ответы [ 4 ]

4 голосов
/ 17 ноября 2012

Я сделал это, добавив дополнительную цель сборки - поэтому код версии увеличивается при сборке проекта, а не при фиксации в SVN. Это инструкции, чтобы заставить это работать в IntelliJ IDEA.

Сначала добавьте в корень вашего проекта новый файл с именем svn-revision.build.xml со следующим содержимым:

<project default="svn-revision">
    <target name="svn-revision">
        <exec executable="sh" outputproperty="revision">
            <arg value="-c" />
            <arg value="svnversion | sed -e 's/^[^:]*://;s/[A-Za-z]//'" />
        </exec>
        <echo>Revision (app): ${revision}</echo>
        <replaceregexp file="AndroidManifest.xml" match='android:versionCode="([^".]+)(\.[^"]*)?"' replace='android:versionCode="${revision}"' />
    </target>
</project>

Затем в меню перейдите на View > Tools > Ant Build, затем нажмите маленькую кнопку + в окне и добавьте вновь созданный файл. Щелкнув зеленую кнопку «Выполнить» в окне Ant Build, вы сразу же запустите скрипт. Чтобы скрипт запускался каждый раз при сборке, вам нужно установить цель 'svn-revision' в качестве цели по умолчанию.

4 голосов
/ 08 февраля 2011

SVN имеет подстановку ключевых слов , которую можно использовать для помещения номера ревизии в файл.Однако это приведет к изменению, когда сам файл манифеста был изменен в последний раз, а это не то, что вам нужно.

Лучший способ добиться того, чего вы хотите - это вызвать svnversion из сценария сборки, ивстроить вывод в файл манифеста оттуда.Вы можете иметь файл manifest.template под управлением версией, который может использоваться вашим сценарием сборки для генерации реального файла манифеста.Поместите слово-заполнитель в шаблон и замените его на номер ревизии, полученный с svnversion.

edit : в Eclipse вы, вероятно, использовали бы скрипт Ant и вызывали егодо нормальной сборки .В связанном примере создается файл класса с номером редакции, но вы также можете сгенерировать файл манифеста очень похожим образом.

0 голосов
/ 15 октября 2014

SVN подход хорош, но не обязательно подходит для всех.Я предпочитаю иметь элемент управления приращением versionName и versionCode приложения , поэтому я сделал собственное простое приложение на Java, чтобы сделать это

Особенности:

  • versionName должнобыть major.minor.point (по рекомендации Android doc)
  • versionName может быть сохранено, сброшено до 1.0.0 или увеличено (одна его часть и последующие части)установлено / установлено на 0)
  • код версии будет заменен на Время Unix

Доступно здесь: номер сборки манифеста Android

0 голосов
/ 08 февраля 2011

Вы можете сделать это во время сборки, используя цель Ant xpath, предоставленную сценариями сборки Android по умолчанию, чтобы получить текущее значение, а затем использовать Ant replace.

...