#android #android_studio #компиляция #build #android_manifest
Как сделать так, чтобы при каждом Generate Signed APK... автоматически увеличивался
на единицу versionCode, чтобы не делать это вручную,.. просто, иногда забываешь об
этом и загружаешь в Google Play Console версию со старым versionCode (что не допустимо!)
android:versionCode="X"
Ответы
Ответ 1
Решение 1 android { compileSdkVersion 18 buildToolsVersion "18.1.0" def versionPropsFile = file('version.properties') if (versionPropsFile.canRead()) { def Properties versionProps = new Properties() versionProps.load(new FileInputStream(versionPropsFile)) def code = versionProps['VERSION_CODE'].toInteger() + 1 versionProps['VERSION_CODE']=code.toString() versionProps.store(versionPropsFile.newWriter(), null) defaultConfig { versionCode code versionName "1.1" minSdkVersion 14 targetSdkVersion 18 } } else { throw new GradleException("Could not read version.properties!") } // rest of android block goes here } Решение 2 (использовать время) def date = new Date() def formattedDate = date.format('yyMMddHHmm') def code = formattedDate.toInteger() defaultConfig { minSdkVersion 10 targetSdkVersion 21 versionCode code }Ответ 2
Я делаю по другому. В основе идеи лежит использование номера версии из VCS. В случае git делаем так: //извлечение порядкового номера версии стартуя от HEAD def getVersionCode = { -> try { def stdout = new ByteArrayOutputStream() exec { standardOutput = stdout commandLine 'git', 'rev-list', '--first-parent', '--count', 'master' } println("Build #"+stdout) return asInteger(stdout.toString("ASCII").trim()) } catch (Exception e) { e.printStackTrace(); return 0; } } //присваиваем версию def char[] patches='abcdefghijklmnopqrstuwxyz'.toCharArray() def patch=1 //иногда бывает нужно определить патч внутри версии def majorVersion=1 def minorVersion=0 def revision=getVersionCode() defaultConfig { //blah-blah versionName = majorVersion + '.' + minorVersion + '.' + revision + patches[patch] versionCode = 10000000*majorVersion+10000*minorVersion + 10*revision+patch } На выходе получим что-то типа: versionName="1.0.25a" versionCode="10000251" Аналогичные скрипты можно написать и для SVN Update Инкрементирование версии будет при каждом commit. Отдельно можно также писать githash с тем, чтобы потом по логам восстановить какая именно версия упала и где. Когда юзеров много, не все вовремя апгрейдят версии - крайне полезная штука скажу я вам. Несколько раз реально выручала.
Комментариев нет:
Отправить комментарий