2012-07-24 11 views
5

Piuttosto un po 'di errore di strano sta accadendo dopo l'aggiornamento Android ed Eclipse strumenti a v20Ant non riesce a costruire apk firmato dopo l'aggiornamento a v20 Android

costruire attraverso Ant smesso di lavorare con il seguente errore sulla creazione del firmato apk

BUILD FAILED 
C:\Programs\Android\tools\ant\build.xml:1097: The following error occurred while executing this line: 
C:\Programs\Android\tools\ant\build.xml:1109: Cannot recover key 

Qualche idea di cosa potrebbe essere cambiato quando si esegue l'aggiornamento ai componenti Android JB e come è possibile correggerlo?

Apprezzo tutto l'aiuto ...

risposta

3

Ho appena trascorso circa 5 ore su questo argomento ... Tutto è finito in uno spazio dopo la password.

Apparentemente nella versione precedente stava tagliando la password e nella versione attuale no.

Quindi assicurarsi di non avere spazi alla fine delle linee potrebbe fare la differenza. Questo ha risolto il problema per noi - non c'è bisogno di andare a JDK7 (anche se sembra costruire e funzionare comunque bene, almeno da formica).

+0

Sei un vero toccasana @Roberto C Serrano. Inoltre non ci sono righe vuote in più alla fine del file ant.properties. –

0

Sembra che la chiave di debug non è visto da formica.

+0

Grazie per la risposta, build xml è configurato per firmare l'app con la chiave di rilascio. Quella impostazione è specificata nel file ant.properties il percorso a cui è specificato nel file build.xml. Si prega di notare che tutto funzionava prima di aggiornare gli strumenti di Android ed Eclipse a v20 (Jelly beans) –

8

Abbiamo avuto lo stesso problema e abbiamo una soluzione, ma non una spiegazione!

costruisce i nostri esistente ha avuto il seguente nel file di proprietà:

  • key.store = COMPANY_NAME-key.keystore
  • key.alias = COMPANY_NAME
  • key.store.password = KEY_STORE_PASSWORD
  • key.alias.password = KEY_ALIAS_PASSWORD

Ma questo ha smesso di funzionare - tuttavia quando cambiamo il key.alias.p assword per abbinare la password dell'archivio si sta lavorando ad esempio:

  • key.store = COMPANY_NAME-key.keystore
  • key.alias = COMPANY_NAME
  • key.store.password = KEY_STORE_PASSWORD
  • key.alias .password = KEY_STORE_PASSWORD

Alias ​​non è sicuro del perché, forse qualcuno ha incasinato la libreria delle formiche?

+0

Grazie per la risposta uesr1556185. La tua risposta in realtà ha sollevato più domande. Il fatto è che il mio negozio e le password degli alias sono sempre state le stesse dall'inizio ... A proposito, posso esportare un apk firmato usando gli strumenti di Eclipse per Android - Fare clic con il tasto destro del mouse sul progetto> Strumenti Android> Esporta applicazione firmata Pacchetto ... –

+0

Grazie, questo ha funzionato per me, ma davvero molto strano. – HefferWolf

+0

Contento che funzioni per te HefferWold, mi dispiace per Nar Gar. Sono un po 'in imbarazzo su cosa suggerire, ho dato un'occhiata al sorgente Git per il bersaglio della formica SignApk e non vedo nulla di chiaramente sbagliato. Fa menzione di alcuni cambiamenti nel processo di firma - il check in è qui: https://android.googlesource.com/platform/sdk/+/1cb06d5bc82268dc5c684aa2ee7415175ce14c7e non riesco a capire perché sarebbe un problema. Quale JDK stai usando? Forse l'SDK 7 potrebbe funzionare? – TeazelDev2

1

Prima di SDK v20, avevo costruito un progetto che utilizza uno script bash, entrando le password in questo modo:

build_v1.sh

ant release 
[email protected] 
[email protected] 

In v20 non riesce perché l'isn password' essere accettato Sembra essere correlato al carattere di fine riga, ma non ne sono sicuro. Per impedire al processo di generazione di chiedere la password, è possibile aggiungere le proprietà della password al file ant.properties:

ant.proprietà

key.store=company-key.keystore 
key.alias=company 
[email protected] 
[email protected] 

Per il mio progetto specifico, una password di archivio chiavi falso viene salvato in ant.properties e sto sostituendolo con la password rilascio chiavi al momento della compilazione:

build_v2.sh

[email protected] 
sed -i "s|key.store.password=.*|key.store.password=${keyPass}|g" ant.properties 
sed -i "s|key.alias.password=.*|key.alias.password=${keyPass}|g" ant.properties 
ant release 

Ciò consente di archiviare la password del keystore in un'altra posizione. In bocca al lupo!

2

Attenzione al Error-Message:

sbagliato key.store.password porta a:

Keystore è stato manomesso, o password sono errati: Password verifica fallita

considerando che un male key.alias.password porta a:

non possono recuperare chiave

Per tutti erano allegri che hanno controllato solo il negozio-password keytool -v -list mykeystore.keystore e mai verfied l'alias.password.

Problemi correlati