Kabul edilen cevap, projenin aynı kök klasöründe bulunan APK'yı imzalamak için hangi anahtar deposunun kullanılacağını kontrol etmek için bir dosya kullanır. Git gibi vcs kullandığımızda , göz ardı edilecek özellikler dosyasını eklemeyi unuttuğumuzda kötü bir şey olabilir. Çünkü şifremizi dünyaya açıklayacağız. Sorunlar hala devam ediyor.
Özellikler dosyasını projemiz içinde aynı dizinde yapmak yerine dışarıda yapmalıyız. Gradle.properties dosyasını kullanarak dışarıda yapıyoruz.
İşte adımlar:
Kök projenizde gradle.properties dosyasını düzenleyin veya oluşturun ve aşağıdaki kodu ekleyin, yolu kendinizle düzenlemeyi unutmayın:
AndroidProject.signing=/your/path/androidproject.properties
2. /pro / yolunuzda androidproject.properties oluşturun ve aşağıdaki kodu ekleyin, /your/path/to/android.keystore anahtar deponuzun yolunu değiştirmeyi unutmayın:
STORE_FILE=/your/path/to/android.keystore
STORE_PASSWORD=yourstorepassword
KEY_ALIAS=yourkeyalias
KEY_PASSWORD=yourkeypassword
3. uygulama modülünüzde build.gradle (proje kökü build.gradle değil) yoksa aşağıdaki kodu ekleyin veya buna ayarlayın:
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
4.Adım 3'teki kodun altına aşağıdaki kodu ekleyin:
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
}
}
Bu kod, 1. adımdaki gradle.properties dosyasında AndroidProject.signing özelliğini arayacaktır . Özellik bulunursa, özellik değerini 2. adımda oluşturduğumuz androidproject.properties'e işaret eden dosya yolu olarak çevirir . Ardından, tüm özellik değeri build.gradle için imzalama yapılandırması olarak kullanılacaktır.
Artık anahtar deposu şifremizi ifşa etme riski konusunda tekrar endişelenmemize gerek yok.
Devamı için build.gradle içinde deposu bilgi koymadan imzalanması Android Apk'nizin
build.gradle
, sen dışında bir şey olması gerekirbuild.gradle
, ister bu, ortam değişkenlerine (bir yanıt başına), özellikler dosyasına (başka bir yanıt başına) veya başka yollara yapılan bir düzenlemedir. Dışarıda bir şeyler yapmak istemiyorsanızbuild.gradle
, tanım gereği tüm imzalama bilgileri içeride olmalıdırbuid.gradle
.