app-release-unsigned.apk non è firmato


199

Ho scaricato il file zip di un'app Android su github e sto provando a eseguirlo, ma visualizzo una finestra di dialogo con questo messaggio

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

Sto usando Android Studio. Cosa dovrei fare?

Risposte:


438

Se qualcuno desidera eseguire il debug della build di rilascio utilizzando Android Studio, attenersi alla seguente procedura:

  1. Imposta la variante di build in modalità di rilascio.

inserisci qui la descrizione dell'immagine

  1. Fare clic con il tasto destro sull'app nel riquadro di navigazione sinistro, fare clic su Apri le impostazioni del modulo .

  2. Vai alla scheda Firma. Aggiungi una configurazione di firma e inserisci le informazioni. Seleziona anche il tuo portachiavi.

inserisci qui la descrizione dell'immagine

  1. Vai alla scheda Tipo di build . Seleziona la modalità di rilascio e imposta:

-Debuggable a true .

-Accesso a Config per la configurazione . (Quello che hai appena creato).

inserisci qui la descrizione dell'immagine

Sincronizza il tuo voto. Godere!


3
Dovremmo impostare Debuggable su false quando si genera effettivamente l'APK di rilascio per prod? o lo farà lo studio da solo?
Ishaan Garg,

7
@IshaanGarg Dovresti impostare il debuggable su false mentre
fai l'

1
Penseresti che per impostazione predefinita sarebbe il primo a chiedersi perché non lo fa ... forse sarebbe male per alcuni firmare pacchetti che non volevano firmare ... ma grazie, amico, ho dimenticato di impostare il tipo di build " Signing Config "e fino allo screenshot, non mi ricordavo
CrandellWS l'

14
non è NECESSARIO impostare Debuggable su true (a meno che non lo si desideri davvero).
computingfreak

4
Dovresti essere consapevole del fatto che dopo aver impostato una configurazione per il tipo di build, tutte le informazioni sulle tue chiavi (comprese le password) appariranno nel file gradle ...
Jacob.B

95

Assicurati che la variante di build sia impostata sul debug (e non sul rilascio ) in Android Studio (controlla il pannello delle varianti di build ).

Se impostato su debug, dovrebbe firmare automaticamente l'app con il keystore di debug generato automaticamente, senza modificare gli script di build.

Tuttavia, sarà necessario creare e configurare un keystore specifico per il rilascio.

Documentazione ufficiale relativa alle modalità di debug e rilascio: https://developer.android.com/tools/publishing/app-signing.html


53

Firma sempre la tua build usando lo script DSL build.gradle in questo modo:

    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
        }
    }
}

Se vuoi capire un po 'di più del sistema di build Gradle associato ad Android Studio, visita:

Guida dell'utente del plug-in Gradle


Ma perché devo farlo? Sulla guida dicono "Per impostazione predefinita, esiste una configurazione di debug che è impostata per utilizzare un keystore di debug, con una password nota e una chiave predefinita con una password nota". Non ho problemi con altre applicazioni.
Andrew

Se la tua password è ok e debug.keystore è raggiungibile, non lo so. I soliti problemi che ho visto in passato con questo sono i permessi dei file o delle directory. Forse il progetto che hai scaricato sta mantenendo i file locali di Android Studio che indicano altri keystore di debug come i tuoi. In ogni caso il tuo registro dei voti deve mostrare l'errore del percorso, includi tale registro per ulteriore aiuto.
Martin Revert,

Hmmm, non funziona neanche per me. Nessun errore gradle, ma continua a ricevere l'errore di firma (ed è puntato sul mio file di chiavi).
Brian Knoblauch,

Ciao Brian! Potresti provare a cancellare il tuo debug.keystore? Quindi avviare un nuovo progetto fittizio e deve essere generato un nuovo keystore. Successivamente, riapri il tuo progetto reale e prova. È l'unica cosa che posso raccomandare se qualcos'altro commentato prima fallisce.
Martin Revert,

1
Non si debug.keystoretrova nella .androidcartella? Potresti voler dare il percorso completo a meno che tu non lo abbia spostato nel tuo progetto
Gokhan Arik il

36

Sono stato in grado di eseguire correttamente il debug dell'APK firmato, attenersi alla seguente procedura:

  1. Scegli la versione "release" nella barra degli strumenti "Build Variant"
  2. In Build.gradleper il modulo impostato debuggable trueper il tipo di build di rilascio
  3. Vai a File-> Struttura del progetto-> nella scheda Firma inserisci tutte le informazioni-> Nella scheda Sapori-> Scegli la configurazione della firma Hai appena creato
  4. Imposta i punti di interruzione
  5. Esegui l'applicazione in modalità debug

Non funziona per me. Ho impostato il debuggable true per la variante di gestione temporanea, ma devo ancora firmare l'apk prima di creare.
Nishant Tanwar,

18

Se qualcuno desidera eseguire il debug e rilasciare una variante di build separata utilizzando Android Studio 3.5, attenersi alla seguente procedura: 1. Impostare la variante di build sulla modalità di rilascio.

Crea variante

  1. Vai a File >> Struttura del progetto
  2. Seleziona Moduli, quindi Config firma
  3. Fare clic sull'icona Più in Config firma

Config. Firma

  1. Seleziona la sezione di rilascio e Fornisci le informazioni sull'app di rilascio, quindi Applica e OK.

registrati

  1. Vai al livello della tua app build.gradlee modifica la sezione buildTypes> "rilascio" come nella schermata qui sotto.

finale

Quindi esegui il tuo progetto. Happy Coding.


Da dove prendi il file .jks?
Marc Alexander,

@MarcAlexander qui non c'è alcun codice .jks che generi Screenshot. Puoi generare il file .jks dall'editor di studio Android.
Shohel Rana,

13

signingConfigs dovrebbe essere prima di buildTypes

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

se vuoi eseguire l'app in modalità debug

1) Guarda in basso a sinistra, sopra ai Preferiti c'è la variante di costruzione

2) Fai clic su Crea varianti. Fai clic su Rilascio e scegli Debug

funziona perfettamente !!!


9

Il progetto dell'app che hai scaricato potrebbe includere informazioni firmate nel file build.gradle. Se hai visto codici come questi:

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

potresti eliminarli e riprovare.


8

Per il grado Kotlin dsl

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")
    }
}

6

Per motivi di sicurezza, non è possibile installare un apk non firmato su Android. Quindi se hai solo l'apk senza segno: devi firmarlo. Ecco come farlo: link

Nota che puoi firmare l'apk con un certificato autofirmato.

Un'alternativa può essere:

  • per scaricare l'apk firmato se disponibile.
  • per scaricare i sorgenti, compilarli (con Android-Studio o Gradle o ...). Produrrà più apk e uno di essi verrà firmato con la chiave di debug (e così sarai in grado di installarlo)

1
Non sono sicuro di capire. Ho scaricato il codice zip dell'app e sto provando a compilarlo con Android Studio ...
Andrew

quindi devi compilare una versione firmata. Di solito la versione firmata viene creata contemporaneamente e si trova nella stessa directory di quella non firmata.
ben75,

Se creo un apk firmato funziona, ma non posso farlo ogni volta che devo testare l'app. Mi manca qualcosa qui, voglio solo provare l'app come faccio con le mie applicazioni ...
Andrew

5

Il mio problema è stato risolto modificando la variante di build come suggerito da Stéphane, se qualcuno stava lottando per trovare le "varianti di build" come ho fatto qui è uno screenshot in cui puoi trovarlo.

inserisci qui la descrizione dell'immagine


1
Sto affrontando problemi dopo aver modificato la variante di build da Debug a Release
Parth Patel,

2

Nella barra degli strumenti selezionare Crea varianti Modifica versione da rilascio a debug


2

Come ho risolto questo

Questo errore si verifica perché hai impostato le varianti di build in modalità di rilascio. impostalo in modalità build ed esegui nuovamente il progetto.

Se si desidera eseguire in modalità di rilascio, è sufficiente generare un apk firmato nel modo in cui lo facciamo normalmente quando si rilascia l'app


Ho solo le opzioni "debug" e "release"?
Steve Smith,

0

La mia soluzione era quella di cambiare il nome della mia configurazione di firma da "config" predefinito a "debug". Per verificare, l'ho cambiato con qualche altro nome casuale e ho ripreso l'errore, quindi l'ho cambiato in "debug" e l'errore era sparito. Quindi, mentre sembra artificiale e tendo a non credere che questa sia l'intera storia, prova questa soluzione.


0

anche io visualizzo questo problema e il mio codice qui sotto

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

il motivo è l'errore del nome della proprietà, dovrebbe essere keyPassword non keypassword


0

Ciò che alla fine ha funzionato per me, e non ho idea del perché, è:

  • Sono andato a LastPass (il servizio che utilizzo per conservare tutte le mie password)
  • Seleziona la mia password posizionando il cursore sopra la password e facendo doppio clic
  • Una volta selezionato, premo cmd C per copiare
  • Sono andato a studiare Android e cmd V per incollare

Si noti che ho provato a copiare più volte selezionando la password facendo clic alla fine della password e selezionando la password spostando il mouse.

È strano ma ha funzionato solo facendo doppio clic sulla parte superiore della password per copiarlo.

Inoltre ho usato il metodo Open Module Settings> Signing ... spiegato da @NightFury in questo post.


0

l'aggiunta di righe di codice nel file build.gradel ha funzionato per me, aggiungendole sotto il blocco buildTypes sotto la versione come mostrato

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.