Мы не должны хранить файл хранилища ключей и учетные данные в системе контроля версий. Мы можем скрыть учетные данные с помощью создания файла keystore.properties и использования учетных данных из этого файла в подписывающей части конфигурации следующим образом:
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
...
signingConfigs {
release {
keyAlias keystoreProperties['releaseKeyAlias']
keyPassword keystoreProperties['releaseKeyPassword']
storeFile file(rootDir.getCanonicalPath() + '/' + keystoreProperties['releaseKeyStore'])
storePassword keystoreProperties['releaseStorePassword']
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
...
}
keystore.properties содержит учетные данные хранилища ключей:
releaseKeyAlias=Prod
releaseKeyPassword=12345678
releaseKeyStore=release.keystore.jks
releaseStorePassword=12345678
В siging config, файл хранилища ключей release.keystore.jks используется, но мы не будем хранить его в vcs. Итак, нам нужно сгенерировать файл хранилища ключей перед созданием приложения android в непрерывной интеграции.
Разработчик имеет файл хранилища ключей и ключи подписи приложения, которые видны в build.gradle
. Я использую это решение для защиты нашего файла хранилища ключей:
Сохранение зашифрованного файла хранилища ключей в системе контроля версий:
Сначала создайте для себя секретный ключ:
openssl enc -aes-256-cbc -k ciappsigningexample-secret -P -md sha1
Генерирует соль, ключ и iv. Мы будем использовать 256-битный секретный ключ. Затем зашифруйте файл хранилища ключей с помощью своего 256-битного секретного ключа:
openssl aes-256-cbc -e -in debug.keystore.jks -out debug.keystore.jks.encrypted -k 99924EB44...
. Он сгенерирует файл debug.keystore.jks.encrypted
, и вы сможете скопировать sh этот файл в git. Чтобы расшифровать хранилище зашифрованных ключей в CI, вам необходимо добавить свой 256-битный секретный ключ в CI в качестве среды. Затем вы можете расшифровать файл хранилища ключей с помощью этого секретного ключа на этапе предварительной сборки с помощью следующей команды:
openssl aes-256-cbc -d -in debug.keystore.jks.encrypted -k $DEBUG_ENCRYPT_SECRET_KEY >> debug.keystore.jks