app-release-unsigned.apk imzalı değil


201

Github'da bir Android uygulamasının zip dosyasını indirdim ve çalıştırmaya çalışıyorum, ancak bu mesajla bir iletişim kutusu alıyorum

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

Android Studio kullanıyorum. Ne yapmam gerekiyor?

Yanıtlar:


438

Herkes Android Studio'yu kullanarak yayın derlemesinde hata ayıklamak istiyorsa şu adımları izleyin:

  1. Derleme varyantını serbest bırakma moduna ayarlayın.

resim açıklamasını buraya girin

  1. Sol gezinme bölmesinde uygulamaya sağ tıklayın, Modül Ayarlarını Aç'a tıklayın .

  2. İmzalama Sekmesine gidin. Bir imzalama yapılandırması ekleyin ve bilgileri girin. Anahtar zincirinizi de seçin.

resim açıklamasını buraya girin

  1. Git Tip kurmak sekmesini. Serbest bırakma modunu seçin ve ayarlayın:

İçin -Debuggable gerçek .

İçin Config'i -Signing yapılandırma . (Az önce oluşturduğunuz).

resim açıklamasını buraya girin

Gradle'ınızı senkronize edin. Zevk almak!


3
Prod için sürüm APK'sını oluştururken Debuggable'ı false olarak ayarlamalı mıyız? ya da stüdyo bunu kendi başına yapacak mı?
Ishaan Garg

7
@IshaanGarg Serbest bırakma yaparken hata ayıklamayı yanlış olarak ayarlamalısınız apk
NightFury

1
İlk neden yaratılmadığını merak edeceğinizi düşünürsünüz ... neden bazılarını imzalamak istemedikleri paketleri imzalamak kötü olur ... ama teşekkürler, adam yapı türünü ayarlamayı unuttum " İmzalama Config "i ve ekran görüntüsüne kadar hatırlamıyordum
CrandellWS

14
orada GEREK YOK ayarlamak için debuggable için gerçek (gerçekten çok amaçlanan sürece).
computingfreak

4
Yapı türüne bir yapılandırma ayarladıktan sonra, tüm anahtar bilgilerinizin (şifreler dahil) not dosyasında görüneceğinin
farkında olmalısınız

95

Derleme varyantının Android Studio'da hata ayıklamaya (ve bırakmayacak ) ayarlandığından emin olun ( derleme varyantları panelini kontrol edin ).

Hata ayıklama olarak ayarlanırsa, derleme komut dosyalarını düzenlemeden uygulamayı otomatik olarak oluşturulan hata ayıklama anahtar deposuyla imzalamalıdır.

Ancak, sürüm için belirli bir anahtar deposu oluşturmanız ve yapılandırmanız gerekir.

Hata ayıklama ve sürüm modlarını kapsayan resmi belgeler: https://developer.android.com/tools/publishing/app-signing.html


54

Her zaman build.gradle DSL komut dosyanızı kullanarak derlemenizi imzalayın:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}

Android Studio ile ilişkili Gradle derleme sisteminin biraz daha fazlasını anlamak istiyorsanız, şu adresi ziyaret edin:

Gradle Plugin Kullanım Kılavuzu


Ama bunu neden yapmalıyım? Kılavuzda "Varsayılan olarak, bilinen bir parola ile bir hata ayıklama anahtar deposunu ve bilinen bir parolaya sahip bir varsayılan anahtarı kullanmak için ayarlanmış bir hata ayıklama yapılandırması vardır. Diğer uygulamalarla herhangi bir sorunum yok.
Andrew

Parolanız uygunsa ve debug.keystore'a erişilebiliyorsa, bilmiyorum. Bu konuda geçmişte gördüğüm olağan sorunlar dosya izni veya dizin izinleridir. Belki de indirdiğiniz proje, sizinkinden başka hata ayıklama anahtar deposuna işaret eden Android Studio yerel dosyalarını tutmaktır. Her durumda Gradle günlüğünüz yol hatasını göstermelidir, daha fazla yardım için lütfen bu günlüğü ekleyin.
Martin Revert

Hmmm, benim için de çalışmıyor. Gradle hataları yok, ancak yine de imzalama hatası alıyorum (ve anahtar dosyama işaret ediliyor).
Brian Knoblauch

Merhaba Brian! Debug.keystore dosyanızı silmeyi deneyebilir misiniz? Ardından yeni bir kukla proje başlatın ve yeni bir anahtar deposu oluşturulmalıdır. Bundan sonra, gerçek projenizi yeniden açın ve deneyin. Başka bir şey önce başarısız yorum yapamazsanız tavsiye edebilir tek şeydir.
Martin Revert

1
Klasörde debug.keystoreyer almıyor .androidmu? Projenize taşınmadıkça tam yol vermek isteyebilirsiniz
Gokhan Arik

36

İmzalı APK'da hata ayıklamayı başarıyla başardım, şu prosedürü izleyin:

  1. "Build Variant" Araç Çubuğunda "yayınla" sürümünü seçin
  2. In Build.gradlemodülü set için debuggable trueSürüm oluşturma türü için
  3. Dosya-> Proje Yapısı-> imzalama sekmesi altında tüm bilgileri doldur-- Lezzetler altında sekmesi-> İmzalamayı seç Yapılandır Yeni oluşturdunuz
  4. Kesme noktalarını ayarlama
  5. Uygulamayı hata ayıklama modunda çalıştırın

Benim için çalışmıyor. Hazırlama varyantı için hata ayıklanabilir doğru ayarladım, ancak yine de oluşturmadan önce apk'yi imzalaması gerekiyor.
Nishant Tanwar

20

Herkes Android Studio 3.5 kullanarak ayrı derleme varyantında hata ayıklamak ve serbest bırakmak istiyorsa, aşağıdaki adımları izleyin: 1. Derleme varyantını serbest bırakma moduna ayarlayın.

Yapı Varyantı

  1. Dosyaya Git >> Proje Yapısı
  2. Modüller'i ve ardından İmzalama Yapılandırması'nı seçin
  3. İmza Yapılandırma altındaki Artı simgesine tıklayın

İmzalama Yapılandırması

  1. Sürüm bölümünü seçin ve Sürümünüzün Uygulama Bilgilerini sağlayın, ardından Uygula ve Tamam.

oturum aç

  1. Uygulama seviyenize gidin build.gradleve buildTypesaşağıdaki Ekran Görüntüsü gibi "sürüm" bölümünüzü değiştirin .

nihai

Ardından Projenizi çalıştırın. Mutlu Kodlama.


.Jks dosyasını nereden alıyorsunuz?
Marc Alexander

@MarcAlexander burada herhangi bir .jks kodu oluşturmak Ekran Görüntüsü. Android stüdyo düzenleyicisinden .jks dosyası oluşturabilirsiniz.
Shohel Rana

14

signingConfigs, buildTypes'ten önce olmalıdır

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }

12

uygulamayı hata ayıklama modunda çalıştırmak istiyorsanız

1) Sol Tarafın altına bakın, Sık Kullanılanların üstünde Yapı Varyantları var

2) Yapı Varyantları'na tıklayın. Sürümü tıklayın ve hata ayıklamayı seçin

mükemmel çalışıyor !!!


10

İndirdiğiniz uygulama projesi build.gradle dosyasında imzalı bir bilgi içerebilir. Bunun gibi kodlar gördüyseniz:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

bunları silebilir ve tekrar deneyebilirsiniz.


9

Kotlin DSLR seviye için

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}

7

Benim problemim Stéphane tarafından önerildiği gibi yapı varyantı değiştirilerek çözüldü, eğer herkes benim yaptığım gibi "Yapı varyantları" bulmakta zorlanıyorsa onu bulabileceğiniz bir ekran görüntüsü.

resim açıklamasını buraya girin


1
Hata ayıklama
sürümünden

6

Güvenlik nedeniyle, Android'e imzalanmamış bir apk yükleyemezsiniz. Yani sadece imzasız apk'niz varsa: imzalamanız gerekir. Bunu nasıl yapacağınız aşağıda açıklanmıştır: bağlantı

APK'yı kendinden imzalı bir sertifika ile imzalayabileceğinizi unutmayın.

Bir alternatif şunlardan biri olabilir:

  • imzalı apk indirmek için.
  • kaynakları indirmek, derlemek (Android-Studio veya gradle veya ... ile). Birden fazla uygulama üretecek ve bunlardan biri hata ayıklama anahtarınızla imzalanacak (ve böylece yükleyebileceksiniz)

1
Anladığımdan emin değilim. Uygulamanın kodunun zip dosyasını
Andrew

imzalı bir sürümü derlemelisiniz. Genellikle imzalı sürüm aynı anda oluşturulur ve imzasız sürümle aynı dizinde bulunur.
ben75

İmzalı bir apk oluşturursam işe yarar, ancak uygulamayı her test etmem gerektiğinde yapamam. Burada bir şey eksik, sadece kendi uygulamaları ile yaptığım gibi uygulamayı denemek istiyorum ...
Andrew


2

Bunu nasıl çözdüm

Bu hata, derleme değişkenlerinizi yayın moduna ayarladığınız için oluşur. derleme moduna ayarlayın ve projeyi tekrar çalıştırın.

Sürüm modunda çalıştırmak istiyorsanız, uygulamayı serbest bırakırken normalde yaptığımız gibi imzalı bir apk oluşturun


Yalnızca "hata ayıklama" ve "yayınlama" seçeneklerim var mı?
Steve Smith

0

Benim çözümüm imzalama yapılandırmamın adını varsayılan "config" yerine "debug" olarak değiştirmekti. Doğrulamak için, onu başka bir rastgele isimle değiştirdim ve hatayı tekrar aldım ve sonra tekrar "debug" olarak değiştirdim ve hata gitti. Yapay gibi görünse de, bunun tüm hikaye olduğuna inanmama eğilimindeyken, bu çözümü deneyin.


0

ben de bu sorunu ve aşağıdaki kodumu görünür

        storeFile file(properties.getProperty("filepath"))
        storePassword properties.getProperty("keypassword")
        keyAlias properties.getProperty("keyAlias")
        keyPassword properties.getProperty("keypassword")

nedeni özellik adı hatası, anahtar parola değil anahtar


0

Sonunda benim için işe yarayan ve neden bilmiyorum:

  • LastPass'e gittim (tüm şifrelerimi saklamak için kullandığım hizmet)
  • İmleci şifrenin üzerine getirip çift tıklatarak şifremi seçin
  • Seçildikten sonra kopyalamak için cmd C'ye basarım
  • Android çalışmasına gittim ve yapıştırmak için cmd V

Dikkat: Parolanın sonuna tıklayarak parolayı seçip fareyi hareket ettirerek parolayı seçerek birçok kez kopyalamaya çalıştım.

Garip ama sadece kopyalamak için parolanın üstüne çift tıklayarak çalıştı.

Ayrıca bu yazıda @NightFury tarafından açıklanan Açık Modül Ayarları> İmzalama ... yöntemini kullandım.


0

build.gradel dosyasına aşağıdaki kod satırlarını ekleyerek benim için çalıştı, gösterildiği gibi buildTypes bloğunun altına ekleyin

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
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.