Подготовка к релизу приложения на google play market
Небольшой гайд по настройке gradle проекта, и android studio для подготовке к сборке релиза для google play market.
Для публикации приложения на google play market нужно приложение подписать ключом шифрования. Что радует, сертификат ключа можно самостоятельно сгенерировать. Печалит тот факт, что если мы потеряем этот сертификат, то мы не сможем обновлять приложение, но радует что и никто другой, взломав аккаунт гугла не «обновит» наш софт. Вот такая радостная пичалька ).
Сертификат можно сгенерировать двумя способами, правильным и через графический интерфейс. На выходе в обоих случаях получается контейнер сертификата java ключа. В Android Studio идем в Build->Generate Signed APK и нажимаем кнопку «Create New..». Открывается окно заполнения данных для сертификата и хранилища сертификата
Заполняем все параметры, задаем путь и нажимаем кнопку «Ok». Создается новый контейнер для сертифката ключа и собственно сам сертификат ключа.
В консоли эти же действия можно провернуть с помощью утилиты, идущей в комплекте с JDK, которая называет keytool. Выполняем команды:
1 |
>keytool -genkey -alias my_certificate -keystore c:\Projects\selfsigned.jks |
Для моей установки результат работы выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
C:\Program Files\Java\jdk1.7.0_17\bin>keytool -genkey -alias my_certificate -keystore c:\Projects\selfsigned.jks Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: Alex Gorbach What is the name of your organizational unit? [Unknown]: development What is the name of your organization? [Unknown]: gorbach.me What is the name of your City or Locality? [Unknown]: Khv What is the name of your State or Province? [Unknown]: Khv What is the two-letter country code for this unit? [Unknown]: RU Is CN=Alex Gorbach, OU=development, O=gorbach.me, L=Khv, ST=Khv, C=RU correct? [no]: yes Enter key password for <my_certificate> (RETURN if same as keystore password): Re-enter new password: |
Я рекомендую делать для каждого приложения свой контейнер сертификатов, и конечно же отдельный ключ. Мало ли с кем потом придется делиться доступом и не нужно давать доступ сразу ко всему пулу своих приложений, а выдать человеку только один файл.
Далее нам нужно настроить gradle для сборки релиза. Придется править только один файл <project>/<module>/build.gradle. Мой файл выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion '19.0.0' defaultConfig { minSdkVersion 9 targetSdkVersion 19 versionCode 2 versionName "1.0" } signingConfigs { release { storeFile file("C:\\Projects\\selfsigned.jks ") storePassword "supersecret" keyAlias "my_certificate" keyPassword "supersecretKey" } } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' signingConfig signingConfigs.release } } } dependencies { compile 'com.android.support:appcompat-v7:+' compile fileTree(dir: 'libs', include: ['*.jar', '*.aar']) } |
Перед каждой публикацией настраиваем versionCode и versionName. versionCode Должен быть всегда больше предыдущего, за этим следит консоль разработчика. И добавляем к автоматически сгенерированному файлу секцию signingConfigs и в buildTypes->release добавляем шаг signingConfig.
После настроек можем выполнить команду в директории проекта:
1 |
>gradlew assembleRelease |
после работы скрипта в директории <project>/<module>/build/apk/<module>-release.apk забираем наш файл, готовый к заливке на play market.