2012-06-04 23 views
48

Ho finalmente creato un keystore "finale" per la mia app. Poiché la mia app utilizza Google Maps, devo aggiornare tutti i layout per utilizzare la nuova chiave API risultante dall'app.Configurare Eclipse per utilizzare il keystore firmato

Ora sono pienamente consapevole dell'esigenza di esportare un APK firmato per il rilascio ma cosa dopo? Il mio pensiero è che per ulteriori sviluppi e test, sarebbe più semplice se potessi configurare Eclipse per usare il mio keystore finale invece del keystore di debug ... ma non ho trovato alcun modo per farlo? Mi consente solo di configurare una chiave di debug 'alternativa' ma suppongo che non sia la stessa cosa.

Scusate se sono troppo confuso se ho totalmente frainteso qualcosa qui.

+3

FYI, se hai bisogno di eseguire il debug con il tuo keystore di rilascio, aggiungi android: debuggable = "true" al tuo nel tuo AndroidManifest.xml e quindi esporta l'APK firmato. Esegui l'app sul dispositivo e dovresti essere in grado di collegarti al tuo processo e ottenere punti di interruzione. –

risposta

61

sono stato in grado di utilizzare al mio Google chiavi gioco di sblocco come mia abitudine di debug chiavi per aiutare con il debug funzionalità acquisto in-app. Lo stesso potrebbe senza dubbio essere applicato anche al debug di Google Maps.

Come Devunwired mentioned, ci sono avvertenze. Ma la mia soluzione era questa:

  1. Copia la chiave di rilascio da qualche parte.
  2. Modificare la password dell'archivio di chiavi/password della chiave e l'alias chiave successivo a the instructions here (inoltre, seguendo i consigli di Devunwired per renderlo simile al keystore di debug).
  3. Cambia le preferenze di Eclipse> Android> Crea> Impostazione keystore personalizzata sul percorso della copia effettuata al passaggio 1.
  4. Fine!
+1

Funziona bene. L'unico problema che ho avuto è dovuto al fatto che la mia applicazione è divisa in due parti (libreria e applicazione specifica per l'ambiente). Stavo ottenendo eccezioni java.lang.NoClassDefFoundError fino a quando ho pulito entrambe le parti per ricostruire. –

+0

Questa risposta con i collegamenti forniti era esattamente ciò di cui avevo bisogno per ottenere un acquisto in-app che funzioni da una build di debug. Grazie! –

70

È possibile configurare un keystore personalizzato da utilizzare per le build di debug (quelle che si verificano quando si fa clic su Esegui ...) in Eclipse andando in Preferenze -> Android -> Crea e immettendo il nome del file in "Personalizzato debug keystore "opzione.

Tuttavia, è l'avvertenza che essa deve seguire le stesse regole come un tradizionale chiavi di debug, principalmente:

  1. La password dell'archivio chiavi deve essere "Android"
  2. Si deve contenere una chiave denominata "androiddebugkey"
  3. password Quella chiave deve essere "Android"

Pertanto, mentre è possibile firmare le tue app in debug di ingegno h lo stesso keystore di Esporta con, richiede che il keystore di produzione assomigli ad un archivio di debug, il che lo rende meno sicuro se qualcuno si impossessa del file (sarebbe più facile ispezionare e indovinare le password).

HTH

+0

Grazie per il chiarimento!Ciò significa che se utilizzo solo la mia chiave finale per creare un pacchetto APK di rilascio, devo adattare tutte le chiavi dell'API di Google Maps prima di creare il pacchetto APK, è corretto? – richey

+0

È possibile trovare le preferenze BTW andando sul menu a discesa "Finestra", quindi selezionare "Preferenze" – Hevski

+1

Sembra esserci un'altra avvertenza che questa preferenza è globale per tutti i progetti in Eclipse. Pertanto, altri progetti useranno questa nuova chiave di debug durante il debug, il che potrebbe essere fuorviante (le app firmate con la stessa chiave possono comunicare più facilmente tra loro). In Android Studio, sembra che la chiave di debug possa essere impostata su una base per progetto. – ADTC

3

Abbiamo impostato chiavi personalizzato da utilizzare per la nostra build di debug. Eclipse Vai a Preferenze -> Android -> Crea e inserisci il nome del file nel "Custom keystore di debug personalizzato".

Importante quando creiamo il nostro keystore per le consuetudini di eclissi.:

La password dell'archivio chiavi deve essere "Android" Si deve contenere una chiave denominata "androiddebugkey" password Quella chiave deve essere "Android" Pertanto, mentre è possibile firmare le tue app in debug con lo stesso keystore come Esportare con, richiede che il keystore di produzione assomigli ad un archivio di debug, il che lo rende meno sicuro se qualcuno si impossessa del file (sarebbe più facile ispezionare e indovinare le password).

se vogliamo cambiare la password dell'archivio chiavi: $ keytool -storepasswd -keystore my.keystore

se vogliamo cambiare la password dell'archivio chiavi alias: $ keytool -keypasswd -keystore my.keystore -alias my_name

se vogliamo cambiare l'alias chiavi: $ keytool -changealias -keystore my.keystore -alias my_name -destalias my_new_name

VKJ enter image description here

0

È possibile immettere sia il debug che la versione SHA1 per la stessa chiave API di Google utilizzando la Google Developers Console (console.developers.google.com).

In questo modo, si avrà la stessa chiave API per entrambi e non sarà più necessario modificarlo in AndroidManifest.xml.

0

Abbiamo lo stesso problema qualche tempo fa nel nostro ufficio. Dato che ne avevamo bisogno abbastanza spesso, abbiamo scritto un semplice script per semplificare la conversione dei keystore di rilascio in quelli di debug.

Lo script è accessibile https://github.com/IntellexApps/key2debug

Stiamo usando per qualche tempo, quindi dovrebbe essere abbastanza stabile.

evviva!

4

Per fare in modo che Eclipse firmi automaticamente al momento della distribuzione, è necessario impostare un keystore che si comporta come il keystore di debug. Ciò significa che deve esserci un 'androiddebugkey' e che sia la chiave che la password del keystore devono essere 'android'. Pertanto, vi consiglio il seguente:

  1. Effettuare una copia del keystore, ho la mia copiati in un file chiamato iap.keystore
  2. Apri terminale/comando con keytool sul percorso (per me il percorso è D: \ NVPACK \ jdk1.6.0_45 \ bin \ keytool.exe) o utilizzare il fullpath per keystore nei comandi indicati di seguito
  3. modificare la password dell'archivio chiavi per 'Android':
    • keytool -storepasswd -keystore iap.keystore
    • Seguire richiesto di inserire la password dell'archivio chiavi vecchio
    • Seguire pronta per entrare android come nuova password
    • Seguire richiesta di conferma android come password
  4. Rinominare la chiave per androiddebugkey (sostituire Old_Key_Store_Name con il tuo nome chiave corrente nel comando successivo)
    • keytool -changealias -keystore iap.keystore -alias Old_Key_Store_Name -destalias androiddebugkey
    • Seguire richiesto di inserire la password dell'archivio chiavi (che ora è andorid)
    • Seguire chiesto di immettere la Old_Key_Store_Name password (questo è tutto ciò che in precedenza aveva la password della chiave impostata)
  5. Modificare la password per l'androiddebugkey
    • keytool -keypasswd -keystore iap.keystore -alias androiddebugkey
    • Seguire richiesto di inserire la password dell'archivio chiavi (che ora è andorid)
    • Seguire chiesto di immettere la androiddebugkey password (questo è tutto ciò che in precedenza aveva la password della chiave impostata)
    • Seguire pronta per entrare android come la nuova password della chiave
    • Seguire richiesta di conferma android come la password della chiave
  6. Si dispone ora di un archivio di chiavi (con chiave), che Eclipse c un uso per firmare automaticamente i costruttori.
  7. Carica su Eclipse.
  8. Finestra -> Preferenze -> Android -> Crea
  9. Segui 'Custom di debug chiavi' browse al file iap.keystore ci precedente creato
  10. OK

Ora, quando si avvia/debug il progetto , userà il keystore che abbiamo appena creato per firmare il tuo progetto. Ciò consentirà il funzionamento di cose come IAP.

ATTENZIONE: questo è conveniente, ma ovviamente se qualcuno si impossessa del tuo iap.keystore sarà in grado di firmare le cose come te usando 'android' come password del keystore/chiave. Spero che questo sia evidente dai passaggi sopra elencati, ma ci vuole solo un secondo per apprezzare ciò che questo significa per te stesso (o per la tua azienda). Quindi in base a ciò decidere se i rischi sono accettabili e se è necessario eseguire ulteriori misure per garantire la sicurezza di questo file.

Problemi correlati