Jawaban yang diterima menggunakan file untuk mengontrol keystore mana yang akan digunakan untuk menandatangani APK yang berada di folder root proyek yang sama. Ketika kita menggunakan vcs seperti Git , bisa jadi hal yang buruk ketika kita lupa menambahkan file properti ke daftar abaikan. Karena kami akan mengungkapkan kata sandi kami kepada dunia. Masalahnya masih ada.
Alih-alih membuat file properti di direktori yang sama dalam proyek kami, kita harus membuatnya di luar. Kami membuatnya di luar dengan menggunakan file gradle.properties.
Berikut langkah-langkahnya:
1. Edit atau buat gradle.properties pada proyek root Anda dan tambahkan kode berikut, ingatlah untuk mengedit lintasan dengan Anda sendiri:
AndroidProject.signing=/your/path/androidproject.properties
2.Buat properti androidproject.prop di / path / Anda / dan tambahkan kode berikut ke dalamnya, jangan lupa untuk mengubah /your/path/to/android.keystore ke jalur keystore Anda:
STORE_FILE=/your/path/to/android.keystore
STORE_PASSWORD=yourstorepassword
KEY_ALIAS=yourkeyalias
KEY_PASSWORD=yourkeypassword
3.Dalam build.gradle modul aplikasi Anda (bukan build.gradle root proyek Anda) tambahkan kode berikut jika tidak ada atau sesuaikan dengannya:
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
4.Tambahkan kode berikut di bawah kode pada langkah 3:
if (project.hasProperty("AndroidProject.signing")
&& new File(project.property("AndroidProject.signing").toString()).exists()) {
def Properties props = new Properties()
def propFile = new File(project.property("AndroidProject.signing").toString())
if(propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'androidproject.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'androidproject.properties file not found'
android.buildTypes.release.signingConfig = null
}
}
Kode ini akan mencari properti AndroidProject.signing di gradle.properties dari langkah 1 . Jika properti ditemukan, itu akan menerjemahkan nilai properti sebagai path file yang menunjuk ke androidproject.properties yang kita buat di langkah 2 . Maka semua nilai properti darinya akan digunakan sebagai konfigurasi penandatanganan untuk build.gradle kami.
Sekarang kita tidak perlu khawatir lagi akan risiko mengekspos kata sandi kami.
Baca lebih lanjut di Signing Android apk tanpa memasukkan informasi keystore di build.gradle
build.gradle
, Anda harus memiliki sesuatu selainbuild.gradle
, apakah itu adalah penyesuaian ke variabel lingkungan (per satu jawaban), file properti (per jawaban lain), atau cara lain. Jika Anda tidak ingin memiliki hal-hal di luarbuild.gradle
, maka menurut definisi semua informasi penandatanganan harus ada di dalambuid.gradle
.