Keytool-Fehler: java.io.IoException: Falsches AVA-Format


177

Ich bin neu in der Android-Entwicklung. Wenn ich versucht habe, die Anwendung zu signieren, wird der folgende Fehler angezeigt. Kann mir jemand in dieser Angelegenheit helfen?

keytool error :java.io.IoException:Incorrect AVA format

Ich habe in den Foren eine Lösung gefunden, zum Beispiel muss ich die ausführen, debug.keystoreaber ich war nicht erfolgreich.



Antworten:


474

Wahrscheinlich haben Sie in ein Feld für Name, Organisation oder irgendwo anders ein unzulässiges Zeichen (etwa (Komma)) eingegeben.

Natürlich, wenn Sie wirklich wollen, kann ein Charakter mit \ sign entkommen


21
Nur zu Ihrer Information, wenn Sie wirklich ein Komma in einem Feld wollen, können Sie es mit einem führenden Backslash, z. B. Acme \, Inc., umgehen . Siehe docs.oracle.com/javase/6/docs/technotes/tools/solaris/… . Dies funktioniert auch im Signaturdialog der Eclipse-IDE.
Yojimbo

1
Für mich war es ein + Zeichen im Feld "Organisation". Das Vorbereiten mit einem Backslash hat es geschafft, danke Yojibmo!
Chad Schultz

4
Wow, ich hätte Tage damit verbringen können, dies herauszufinden, und es war ein Komma im Namen meiner Organisation (ich habe "..., LLC" verwendet). Danke vielmals.
Akousmata

+1 Dies sollte die akzeptierte Antwort sein. Außerdem sollte überprüft werden, wann der Benutzer (Komma) (,) oder ein Sonderzeichen eingegeben hat. Der Exportassistent sollte den Benutzer darüber informieren oder auf dieses bestimmte Textfeld verweisen, dass dies nicht zulässig sein sollte. Bitte ändern Sie es.
Zubair Ahmed

1
Das Problem für mich war die Landesvorwahl. Ich habe "+1" gesetzt und anscheinend hat das + die Ausnahme ausgelöst.
Donato

50

Beim Versuch, eine signierte APK-Datei mit Eclipse ADT zu exportieren, ist ein Fehler aufgetreten. Der Fehler war der gleiche wie Ihr Fehler. In meinem Fall habe ich vor dem Ländercode ein + -Zeichen verwendet. Durch Entfernen des + -Zeichens aus diesem Namen wurde das Problem behoben und ich konnte meine signierte APK-Datei vollständig exportieren. Dieser Fehler kann auch auftreten, wenn Komma, Schrägstrich, Semikolon oder Anführungszeichen verwendet werden.


Vielen Dank. Ich habe auch das Pluszeichen '+' verwendet. )
DmitryKanunnikoff

Vielen Dank. Dies löste mein Problem, das ich + im Ländercode verwendet habe
Khizar Hayat

20

Sie haben versucht, beim Exportieren von apk Sonderzeichen zu verwenden. Sie können diese Sonderzeichen in keinem Feld verwenden, das beim Erstellen der apk angezeigt wird. Der Sonderzeichensatz enthält:

  • Kommas (,)
  • Zusatzsymbol (+)
  • Anführungszeichen (")
  • Back-Slash ("\")
  • Abgewinkelte Klammern (<und>)
  • Semikolon (;)

7

Ich habe diese Ausnahme durch Ändern des Ländercodes gelöst:

+91 zu India


Für dieses Feld sollten Sie den Ländercode
ISO

6

Ich bin auf diesen Fehler gestoßen, als ich die Option für den definierten Namen überhaupt nicht festgelegt habe. Dies wurde korrigiert, indem die Option auf eine gültig formatierte Zeichenfolge gesetzt wurde.

Dieser Befehl ist mit der Ausnahme des AVA-Formats fehlgeschlagen: (Zeilenumbrüche wurden aus Gründen der Lesbarkeit hinzugefügt)

C:\Program Files\Java\jdk1.6.0_45\jre\bin>keytool 
-genkey -v -dname PatrickTaylor -validity 10000 
-keystore C:\drops\patrickkeystore 

Dieser Befehl wurde erfolgreich ausgeführt:

C:\Program Files\Java\jdk1.6.0_45\jre\bin>keytool 
-genkey -v -dname PatrickTaylor -validity 10000 
-keystore C:\drops\patrickkeystore 
-dname "cn=Patrick Taylor, ou=engineering, o=company, c=US"

4

Dieses "Wahrscheinlich haben Sie ein illegales Zeichen (so etwas wie (Komma)) in ein Feld für Name, Organisation oder irgendwo anders eingegeben." hat für mich funktioniert. Ich hatte ein Komma für den Staat oder die Provinz. Bitte markieren Sie diese Antwort in der Regel als Antwort. as + in +91 ist ein Sonderzeichen.


Für mich wurde der Fehler durch ein Komma zwischen Firmenname und llc verursacht. (Danke Kingsley Sithole).
tmr

1

Sonderzeichen / allen guten Antworten entkommen / könnten das Problem sein; Sie haben Ihre eigentliche "keytool" -Befehlszeile nicht so schwer geteilt, um eine genaue Antwort zu geben. Wenn Sie versuchen, ein Pub / Priv-Schlüsselpaar ("-genkeypair" -Parameter) zu generieren, besteht ein Problem darin, dass der definierte Name des Zertifizierungssubjekts (" -dname " arg) nicht in der richtigen X.500-AVA angegeben wurde (" A ttribute- V alue- A ssertion") Format. Lassen Sie beispielsweise das "CN =" vor dem allgemeinen Namen des Betreffs (CN) weg. Param sollte ungefähr so ​​aussehen:

keytool ... -dname="CN=SomeCertSubject" ...

In diesem eindeutigen Namen param " CN " ( "Common Name") ist die " A ttribute", " SomeCertSubject " ist die " V ert".


0

Google kann nicht "Ungültiges Zeichen" sagen. Stattdessen heißt es "Incorret AVA format". Entfernen Sie nicht alphanumerische Zeichen, keine Akzente und keine seltsamen Buchstaben.


Bitte geben Sie die richtigen Antworten!
Amanuel Nega
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.