2017-03-07 13 views
120

Wybierz co najmniej jedną z wersji sygnatur do wykorzystania w Android Studio 2.3Różnica między wersjami sygnatur - V1 (podpis Jar) i V2 (pełny podpis APK) podczas generowania podpisanego apk w AndroidStudio?

Teraz podczas generowania podpisany APK Android Studio to pokazano dwie opcje (pole wyboru) Mianowicie 1. V1(Jar Signature) i 2. `V2 (pełne APK Signature) "as Podpis Wersje w ostatnim kroku procesu podpisanego generowania apk.

**Signature Versions** options

Więc jaka jest różnica między tymi V1 (Jar Podpis) i V2 (Full Podpis APK) w nowym Android Studio aktualizować?

I do czego powinienem użyć (lub obu) do podpisania apk dla wydania play play?

Dostaję również komunikat o błędzie Zainstalowanie analizy składniowej nie powiodło się Brak certyfikatów podczas instalowania apk, gdy korzystam z drugiej opcji.

Odpowiedz

118

Jest to nowy mechanizm logowania wprowadzony w systemie Android 7.0 z dodatkowymi funkcjami zaprojektowanymi w celu zwiększenia bezpieczeństwa podpisu APK.

To nie jest obowiązkowe. Powinieneś sprawdzić KAŻDY z tych pól wyboru, jeśli to możliwe, ale jeśli nowy mechanizm podpisu V2 daje ci problemy, możesz go pominąć.

Możesz więc pozostawić niezaznaczone V2, jeśli napotkasz problemy, ale powinieneś je sprawdzić, jeśli to możliwe.

+0

Powinieneś jednak ponownie wyrazić swoje pytanie, wygląda na to, że nawet nie przeczytałeś dokumentacji, która była połączona ... warto wiedzieć, że możesz pozostawić to zaznaczenie niezaznaczone. Być może po dodaniu "komunikatu o błędzie i napotkanego problemu), to pytanie stanie się bardziej cenne dla przyszłości – Booger

+0

po użyciu v2 otrzymałem błąd, więc opuszczam v2. –

+0

Mam przesłane aplikację przez podpisaną aplikację przy użyciu V1 i V2 Po tym pobierać aplikację z Google Play i uruchomić tę samą wersję z Android Studio pokazuje mi okno dialogowe "Instalacja nie powiodła się, ponieważ urządzenie ma aplikację z tym samym pakietem, ale inny podpis. . . .. " Czy możesz zasugerować mi, co robię źle, trzeba zaktualizować build.gradle? –

18

Został napisany here, który "Domyślnie Android Studio 2.2 i wtyczka Android dla Gradle 2.2 podpisują twoją aplikację za pomocą zarówno APK Signature Scheme v2, jak i tradycyjnego schematu podpisywania, który wykorzystuje podpisywanie JAR."

Wygląda na to, że pojawiły się nowe pola z systemem Android 2.3. Rozumiem, że moje poprzednie wersje Androida Studio (przynajmniej 2.2) podpisywały się przy użyciu obu podpisów. Tak więc, aby kontynuować tak jak poprzednio, uważam, że lepiej jest zaznaczyć oba pola wyboru.

EDIT 31 marca 2017: złożone kilka aplikacji z obu podpisów => nie ma problemu :)

3

myślę this reprezentuje dobrą odpowiedź.

weryfikacji V2 Schemat sygnatury APK

  1. Znajdź APK Signing Block i sprawdza:
    1. dwa pola w wymiarach APK Signing Block zawierać tę samą wartość.
    2. ZIP Central Directory zostaje natychmiast zastąpione rekordem ZIP End of Central Directory.
    3. ZIP End of Central Directory nie jest śledzony przez więcej danych.
  2. Zlokalizuj pierwszy APK Signature Scheme v2 Block wewnątrz APK Signing Block. Jeśli blok v2, jeśli jest obecny, przejdź do kroku 3.W przeciwnym razie powróć do weryfikacji pliku APK za pomocą schematu v1.
  3. Dla każdej osoby podpisującej w APK Signature Scheme v2 Block:
    1. wybrać najsilniejszy obsługiwane Algorytm podpisu identyfikator z podpisami. Kolejność siły zależy od wersji każdego wdrożenia/platformy.
    2. Zweryfikuj odpowiednią sygnaturę na podstawie podpisów podpisanych danych za pomocą klucza publicznego. (Teraz można bezpiecznie analizować dane podpisane.)
    3. Sprawdź, czy uporządkowana lista identyfikatorów algorytmu podpisu w skróconych i podpisach jest identyczna. (Ma to na celu zapobieganie zdzieraniu/dodawaniu podpisów).
    4. Wyliczyć zawartość APK przy użyciu tego samego algorytmu skrótu, co algorytm skrótu używany przez algorytm podpisu.
    5. Sprawdź, czy obliczony skrót jest identyczny z odpowiednim skrótem z podsumowań.
    6. Sprawdź, czy SubjectPublicKeyInfo pierwszego certyfikatu jest identyczny z kluczem publicznym.
  4. Weryfikacja kończy się powodzeniem, jeśli znaleziono co najmniej jeden podpisujący, a krok 3 powiodło się dla każdego znalezionego podpisującego.

Uwaga Apk nie mogą zostać zweryfikowane przy użyciu schematu v1 Jeżeli wystąpi awaria w etapie 3 lub (schemat V1)

Podpisany JAR-4.

JAR podpisany weryfikacji APK APK to standardowy podpisany plik JAR, który musi zawierać dokładnie wpisy wymienione w META-INF/MANIFEST.MF i gdzie wszystkie wpisy muszą być podpisane przez ten sam zestaw podpisujących. Jego integralności sprawdza się następująco:

  1. Każdy podpisujący jest reprezentowany przez wejście META-INF/<signer>.SF i META-INF/<signer>.(RSA|DSA|EC) JAR.
  2. <signer>.(RSA|DSA|EC) to PKCS #7 CMS ContentInfo ze strukturą SignedData, której podpis jest weryfikowany w pliku <signer>.SF. Plik
  3. <signer>.SF zawiera całokształt pliku skrótu META-INF/MANIFEST.MF i trawienie każdej sekcji META-INF/MANIFEST.MF. Pełne streszczenie pliku MANIFEST.MF zostało zweryfikowane. Jeśli to się nie powiedzie, zamiast tego weryfikowana jest sekcja każdego z odcinków MANIFEST.MF.
  4. META-INF/MANIFEST.MF zawiera, dla każdego wpisu JAR chronionego integralnością, odpowiednio nazwaną sekcję zawierającą skrót zawartości nieskompresowanej pozycji. Wszystkie te skórki są weryfikowane.
  5. Weryfikacja APK kończy się niepowodzeniem, jeśli plik APK zawiera wpisy JAR, które nie są wymienione w MANIFEST.MF i nie są częścią sygnatury JAR. Łańcuch ochrony jest zatem <signer>.(RSA|DSA|EC)<signer>.SFMANIFEST.MF → zawartość każdego wpisu JAR chronionego integralnością.
19

Czy powinienem użyć (lub obu) do podpisania apk do wydania w sklepie Play? Odpowiedź brzmi: TAK.

Zgodnie https://source.android.com/security/apksigning/v2.html#verification :

w Android 7.0 pakiety APK można zweryfikować według schematu sygnatury v2 APK (schemat V2) lub podpisania JAR (schemat V1). Starsze platformy ignorują podpisy v2 i weryfikują tylko podpisy v1.

Próbowałem wygenerować kompilację z opcją sprawdzania V2 (pełna sygnatura apk). Następnie, gdy próbowałem zainstalować kompilację wydania poniżej 7.0 urządzenie i nie jestem w stanie zainstalować wbudowany w urządzenie.

Potem próbowałem zbudować, zaznaczając pole wyboru obu wersji i generując kompilację wydania. Następnie w stanie zainstalować kompilację.

1

Według tego linku: signature help

APK schematu podpisu v2 oferuje:

  1. Szybsza aplikacja zainstalować razy
  2. Większa ochrona przed nieuprawnionymi zmianami do plików APK.

Android 7.0 wprowadza schemat APK Signature v2, nowy app-podpisaniu schemat aplikacja, która oferuje szybsze i zainstalować razy większą ochronę przed nieautoryzowanymi zmianami do plików APK. Domyślnie Android Studio 2.2 i Dodatek dla Androida dla Gradle 2.2 podpisują Twoją aplikację przy użyciu zarówno APK Signature Scheme v2, jak i tradycyjnego schematu podpisywania, który używa podpisu JAR pod numerem .

Jest zaleca użycie APK Signature Scheme v2 ale jest nie obowiązkowe.

Chociaż zalecamy stosowania APK schematu podpisu v2 do swojej aplikacji, ten nowy system nie jest obowiązkowe. Jeśli Twoja aplikacja nie jest prawidłowo budowana podczas korzystania ze Sck Signature Scheme v2, możesz wyłączyć nowy schemat.

+0

Hi @ Shirish, czy możemy tworzyć kompilacje v2 z zaćmienia? –