Android Studio: Gradle kullanarak imzalı apk nasıl oluşturulur?


90

Google ve SO'da aradım ancak cevabımı bulamıyorum.

Bu, gradle sistemiyle ilk kez çalışıyorum ve şimdi google play'e yüklemek için imzalı bir APK oluşturma noktasındayım (Proje, tutulmadan içe aktarılır).

Şimdi http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Building-and-Tasks bölümünüze eklemeniz gereken bölümü okudum signingConfigs.build.gradle

Bu satırları ekledim ve şimdi çalıştırmanız gerektiğini gördüm, ./gradlew assembleReleaseancak bunu cmd'imde çalıştırmak 'gradle' dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor. Ayrıca build.gradle'a sağ tıklayıp başarılı olduğunu söyleyerek çalıştırmayı denedim, ancak build / apk klasörüne baktığımda sadece adlı dosyaapp-debug-unaligned.apk

Peki, Gradle sistemini kullanarak imzalı apk'yi nasıl oluşturabilirim?



@ScottBarta Kısmen hile yaptım, yayın moduna geçip gradle'ı çalıştırdığımda hala bir hata alıyorum, ancak o 'u kullanarak> menü aracılığıyla imzalı apk oluşturarak sonunda işe yaradı! Teşekkürler Size sağlanan bağlantıya oy verdim.
Gooey

gradle dosyasından v1 (jar imzası) veya v2 (tam apk imzası) sürümü ile imzalayın mı? çözüm burada: stackoverflow.com/questions/57943259/…
user1506104

Yanıtlar:


97

Yapınızı oluşturmanın üç yolu vardır buildType. (Sizin durumunuzda serbest bırakılır, ancak istediğiniz herhangi bir ad verilebilir.)

  1. Android Studio'nun sağ panelinde Gradle Görevi'ne gidin ve Modül Görevleri'ni assembleReleaseveya assemble(#your_defined_buildtype)altında arayın

  2. Sol Panelde Varyant Oluştur seçeneğine gidin ve açılır menüden yapıyı seçin

  3. File Explore'da proje kök dizinine gidin ve cmd / terminali açın ve şunu çalıştırın:

    Linux: ./gradlew assembleRelease or assemble(#your_defined_buildtype)

    Pencereler: gradlew assembleRelease or assemble(#your_defined_buildtype)

Bir sürüm derlemesi yapmak istiyorsanız (yalnızca), Build> kullanabilirsiniz Generate Signed apk. Diğer yapı türleri için yalnızca yukarıdaki üç seçenek mevcuttur.

Oluşturulan APK'yi module/builddizininizde derleme türü adına sahip olarak bulabilirsiniz .


4
Bu, yalnızca build.gradle'ınızda yapı yapılandırmanız varsa imzalı bir apk oluşturur. Bunu kaynak kodu yönetim araçlarında saklarsanız veya diğer kişilerle paylaşırsanız, imzalama anahtarınızın kimlik bilgilerini kaynak kodunuzdan ayırmayı düşünmelisiniz.
Janusz

Yapı> İmzalı apk üret ... onun bu kadar basit olarak
Atul

61

Mevcut herhangi bir Android Studio gradle projesini alıp herhangi bir dosyayı düzenlemeden komut satırından oluşturmak / imzalamak mümkündür. Bu, anahtarlarınızı ve parolalarınızı ayrı tutarken projenizi sürüm kontrolünde saklamayı çok güzel kılar:

./gradlew assembleRelease -Pandroid.injected.signing.store.file=$KEYFILE -Pandroid.injected.signing.store.password=$STORE_PASSWORD -Pandroid.injected.signing.key.alias=$KEY_ALIAS -Pandroid.injected.signing.key.password=$KEY_PASSWORD

1
Kaynak kodunu tamamlayıcıya iletmemiz gerektiğinden, anahtar deposu öğelerimizi gizli tutmanın en iyi yolu budur. Teşekkürler.
Yeung

2
yine de bu android.injected.signing. * özelliklerinin varlığını öğrenmeye başladın mı?
Tixeon

Bu bilgiyi Android Studio ekibinden Xav'dan aldım ve bunun gibi başka değişkenler olup olmadığını bilmiyorum.
Wayne Piekarski

Java.lang.RuntimeException: com.android.ide.common.signing.KeytoolException: "C: \ Users \ somedirectory \ Desktop \ someKey.jks" deposundan XXXXXX anahtarı okunamadı: 'XXXXXX' takma adıyla anahtar yok anahtar deposunda C: \ Users \ somedirectory \ Desktop \ someKey.jks'de bulundu. Neden?
Archie G. Quiñones

40

Bu kodu kullanabilirsiniz

android {
   ...
    signingConfigs {
        release {
            storeFile file("../your_key_store_file.jks")
            storePassword "some_password"
            keyAlias "alias_name"
            keyPassword "key_password"
        }
    }

    buildTypes {

        release {
            signingConfig signingConfigs.release
        }
    }
   ...
}

sonra terminalden koş

./gradlew assembleRelease

apk'yı şuradan alacaksınız

android-uygulamanız / derleme / çıktılar / apk / android-uygulamanız-sürüm.apk


@ozcanovunc lütfen anahtar deposu yolunuzu tekrar kontrol edin, yolunuz yanlış tanımlanmış olabilir.
bhavesh kaila

Bunu yaparken, muhtemelen sizin build.gradleve şifrelerinizin sürüm kontrolüne girme ihtimali vardır ! Projenizde güvenlik önemli olduğunda başka bir rota seçmeyi düşünün.
Marco7757

1
gradle assembleRelease çalışmıyor. Gradlew assembleRelease yerine kullanın
Gadde


-3

inşa menüsü> imzalı apk oluştur


Bunu çalıştırırsan, sana bunu yapmanın yolu olmadığını söyler. Ayrıca .apk dosyasını yüklersem, hata algılamalarının veya bir şeyin açık olduğunu söyleyen bir hata ortaya çıkar.
Gooey

11
hata ayıklamanın açık olduğunu söylüyor ... android stüdyosunda, solda, 'varyantlar oluştur' yazan bir sekme olmalı ... üzerine tıklayın ve her şeyi 'hata ayıklama'dan' yayınlama'ya geçirin ... ondan sonra , tekrar imzalı apk
oluştur

2
Bu artık çalışmıyor! Örneğin, oluşturduğu APK'nin BuildConfig.DEBUG değeri true olarak ayarlanmıştır. Bu bana sorun çıkarmadı, şimdi gradlew assembleRelease yöntemini kullanmalısınız.
Ben Clayton

@BenClayton Kesinlikle haklısınız! Bu yüzden saatlerimi boşa harcadım! Android Studio'daki çok can sıkıcı bir "hata" daha
Sorunlarla

Bu basit adımın neden açıkça belirtildiği gibi imzalı apk oluşturmak için en uygun yol olmadığını merak ediyorum. Bu adım uygulama oluşturdu ve benim için mükemmel çalışıyor, herhangi bir sorun yaşamadan. Ancak SO'daki diğer pek çok cevap, yaptığım şeyin ne şekilde veya neyin doğru olmadığını düşünerek kafamı karıştırdı.
Atul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.