Błąd keytool: java.io.IoException: niepoprawny format AVA

179

Jestem nowy w programowaniu na Androida; kiedy próbuję podpisać aplikację, pojawia się następujący błąd. Czy ktoś może mi pomóc w tej sprawie?

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

Znalazłem rozwiązanie na forach, na przykład muszę uruchomić, debug.keystoreale mi się nie udało.

pallavi
źródło

Odpowiedzi:

476

Prawdopodobnie wpisałeś niedozwolony znak (coś w rodzaju (przecinek)) w polu Nazwa, Organizacja lub gdzieś indziej.

Oczywiście, jeśli naprawdę chcesz jakiś znak, możesz go zmienić znakiem \

reguła
źródło
21
Po prostu do Twojej wiadomości, jeśli naprawdę chcesz przecinek w polu, możesz go zmienić z początkowym ukośnikiem odwrotnym, np. Acme \, Inc. Zobacz docs.oracle.com/javase/6/docs/technotes/tools/solaris/… . Działa to również w oknie dialogowym podpisywania środowiska Eclipse IDE.
Yojimbo
1
Dla mnie był to znak + w polu „Organizacja”. Wstawianie odwrotnego ukośnika załatwiło sprawę, dzięki Yojibmo!
Chad Schultz
4
Wow, mogłem spędzić wiele dni próbując to rozgryźć, a był to przecinek w nazwie mojej organizacji (użyłem „..., LLC”). Dzięki za tonę.
akousmata
+1 To powinna być zaakceptowana odpowiedź. Ponadto powinno być sprawdzane, kiedy użytkownik wprowadził (przecinek) (,) lub znak specjalny, a kreator eksportu powinien poinformować użytkownika lub wskazać to konkretne pole tekstowe, że nie powinno to być dozwolone. Zmień to.
Zubair Ahmed
1
Dla mnie problemem był kod kraju. Wpisałem „+1” i najwyraźniej + wskazywał na wyjątek.
Donato,
50

Wystąpił błąd podczas próby wyeksportowania podpisanego pliku .apk za pomocą Eclipse ADT. Błąd był taki sam jak twój błąd. W moim przypadku użyłem znaku + przed kodem kraju. Usunięcie znaku + z tej nazwy rozwiązało problem i pozwoliło mi w pełni wyeksportować podpisany plik .apk. Ten błąd może również wystąpić, gdy użyjesz przecinka, ukośnika, średnika, cudzysłowu.

Ratna Halder
źródło
Dzięki. Użyłem też znaku „+”. )
DmitryKanunnikoff
Dzięki. To rozwiązało mój problem, którego użyłem + w kodzie kraju
Khizar Hayat
20

Próbowałeś użyć znaków specjalnych podczas eksportowania apk.Nie możesz używać tych znaków specjalnych w żadnym polu wyświetlanym podczas tworzenia apk. Specjalny zestaw znaków zawiera:

  • Przecinki (,)
  • Symbol dodatku (+)
  • Cudzysłów (")
  • Ukośnik wsteczny ("\")
  • Nawiasy kątowe (<i>)
  • Średnik (;)
surhidamatya
źródło
7

Rozwiązałem ten wyjątek, zmieniając kod kraju:

+91 do India

Steve
źródło
W tym polu należy użyć kodu kraju ISO 3166-1 , w Twoim przypadku „IN”
PassKit,
6

Wystąpił ten błąd, gdy w ogóle nie ustawiłem opcji nazwy wyróżniającej. Zostało to poprawione przez ustawienie tej opcji na poprawnie sformatowany ciąg.

to polecenie nie powiodło się z wyjątkiem formatu AVA: (dla czytelności dodano podziały wierszy)

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

to polecenie zostało wykonane pomyślnie:

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"
Patrick
źródło
4

to „Prawdopodobnie wpisałeś niedozwolony znak (coś w rodzaju (przecinek)) w polu Nazwa, Organizacja lub gdzie indziej.” zadziałało dla mnie. Miałem przecinek na temat stanu lub prowincji. proszę oznaczyć tę odpowiedź z reguły jako odpowiedź; ponieważ + w +91 to znak specjalny.

Kingsley Sithole
źródło
dla mnie błąd był spowodowany przecinkiem między nazwą firmy a llc. (dziękuję, kingsley sithole).
tmr
1

Znaki specjalne / brak dobrych odpowiedzi / mogą być problemem; nie udostępniłeś swojego rzeczywistego wiersza poleceń „keytool” tak trudniej, aby udzielić dokładnej odpowiedzi. Jeśli próbujesz wygenerować parę kluczy pub / priv (parametr „-genkeypair”), jednym problemem może być to, że nazwa wyróżniająca podmiotu certyfikatu ( argument „ -dname ”) nie została określona w prawidłowym pliku AVA X.500 („ A ttribute- V alue- A ssertion”) format. Na przykład pominięcie „CN =” przed nazwą pospolitą podmiotu (CN). Param powinien wyglądać mniej więcej tak:

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

W tej nazwy wyróżniającej param " CN " ( "Common Name") jest " ttribute", " SomeCertSubject " jest " V alue".

user1172173
źródło
0

Google nie może powiedzieć „Nieprawidłowy znak”. Zamiast tego mówią „Nieprawidłowy format AVA”. Usuń wszystkie znaki niealfanumeryczne, akcenty i dziwne litery.

Josh
źródło
proszę o właściwe odpowiedzi!
Amanuel Nega