서명 버전의 차이점-Android Studio에서 서명 된 APK를 생성하는 동안 V1 (Jar Signature) 및 V2 (Full APK Signature)?


234

Android Studio 2.3에서 사용할 서명 버전 중 하나 이상을 선택하십시오

이제 Android Studio에서 서명 된 APK를 생성하는 동안 서명 된 APK 생성 프로세스의 마지막 단계에서 서명 버전 으로 1 V1 (Jar Signature)과 2의 두 가지 옵션 (CheckBox)이 표시 됩니다.V2 (Full APK Signature)

** 서명 버전 ** 옵션

V1 (Jar Signature) 과 의 차이점은 무엇입니까?새로운 Android Studio 업데이트에서 V2 (Full APK Signature) 입니까?

그리고 Play 스토어 출시를 위해 apk에 서명하려면 어느 것을 사용해야합니까?

또한 두 번째 옵션을 사용할 때 APK를 설치하는 동안 Install Parse Failed No Certificates 오류가 발생 합니다 .

답변:


219

APK 서명을보다 안전하게 만들기 위해 추가 기능을 갖춘 Android 7.0에 도입 된 새로운 서명 메커니즘입니다.

필수는 아닙니다. 가능하면 해당 확인란을 모두 확인해야하지만 새로운 V2 서명 메커니즘에 문제가 있으면 생략 할 수 있습니다.

따라서 문제가 발생하면 V2를 선택하지 않은 채로 둘 수 있지만 가능하면 점검해야합니다.


그래도 질문을 다시 입력해야합니다. 링크 된 문서를 읽지 않은 것 같습니다 ... 확인 표시를 선택하지 않은 채로 둘 수 있음을 아는 것이 유용합니다. "오류 메시지와 발생한 문제"를 추가하면이 질문은 미래에 더욱 가치가있게 될 것입니다.
Booger

V1 및 V2를 사용하여 서명 된 응용 프로그램으로 앱을 업로드했습니다. 그 후 Google Play에서 응용 프로그램을 다운로드하고 Android Studio에서 동일한 버전을 실행하면 "장치에 동일한 패키지이지만 서명이 다른 응용 프로그램이 있기 때문에 설치에 실패했습니다."라는 대화 상자가 표시됩니다. build.gradle을 잘못 업데이트해야합니까?
Usman Afzal

@UsmanAfzal, 릴리스와 함께 플레이 스토어에서 앱에 서명 한 후 이제는 디버그가있는 Android Studio를 통해 앱을 디버깅하거나 실행하려고합니다. 릴리스와 디버그는 다른 서명입니다
Parama Dharmika

44

Play 스토어 출시를 위해 apk에 서명해야합니까? 대답은 입니다.

당으로 https://source.android.com/security/apksigning/v2.html#verification :

Android 7.0에서 APK는 APK 서명 체계 v2 (v2 체계) 또는 JAR 서명 (v1 체계)에 따라 검증 될 수 있습니다. 이전 플랫폼은 v2 서명을 무시하고 v1 서명 만 확인합니다.

V2 (Full Apk Signature) 옵션 을 확인하여 빌드를 생성하려고했습니다 . 그런 다음 7.0 장치 아래에 릴리스 빌드를 설치하려고 할 때 장치에 빌드를 설치할 수 없습니다.

그 후 버전 확인란을 모두 선택하여 빌드를 시도하고 릴리스 빌드를 생성했습니다. 그런 다음 빌드를 설치할 수 있습니다.


24

여기에 쓰여 있습니다 "APK 서명 구성표 v2 및 JAR 서명을 사용하는 기존 서명 방식 모두를 사용하여 응용 프로그램을 서명 Gradle을 2.2, 기본적으로 안드로이드 스튜디오 2.2과 안드로이드 플러그인을."그

이 새로운 확인란이 Android 2.3에 등장한 것으로 보이므로 이전 버전의 Android Studio (최소 2.2)가 두 서명으로 서명 한 것으로 알고 있습니다. 따라서 이전과 마찬가지로 계속하려면 두 확인란을 모두 선택하는 것이 좋습니다.

2017 년 3 월 31 일 수정 : 두 서명이있는 여러 앱을 제출했습니다 => 문제 없음 :)


7

나는 이것이 좋은 대답 이라고 생각 합니다 .

APK 서명 체계 v2 확인

  1. 찾아 APK Signing Block 을 확인하십시오.
    1. 두 개의 크기 필드 APK Signing Block는 동일한 값 을 포함합니다.
    2. ZIP Central Directory바로 뒤에 ZIP End of Central Directory기록이옵니다.
    3. ZIP End of Central Directory 뒤에 더 많은 데이터가 없습니다.
  2. APK Signature Scheme v2 Block내부 에서 첫 번째를 찾습니다APK Signing Block . v2 차단이 있으면 3 단계로 진행하십시오. 그렇지 않으면 v1 구성표를 사용하여 APK 확인으로 돌아갑니다.
  3. 의 각 서명자에 대해 APK Signature Scheme v2 Block :
    1. 서명에서 가장 강력한 지원되는 서명 알고리즘 ID를 선택하십시오. 강력한 순서는 각 구현 / 플랫폼 버전에 달려 있습니다.
    2. 공개 키를 사용하여 서명 된 데이터에 대해 서명의 해당 서명을 확인하십시오. 서명 된 데이터를 구문 분석하는 것이 안전합니다.
    3. 요약 및 서명의 순서화 된 서명 알고리즘 ID 목록이 동일한 지 확인하십시오. (서명 제거 / 추가를 방지하기위한 것입니다.)
    4. 서명 알고리즘에서 사용하는 다이제스트 알고리즘과 동일한 다이제스트 알고리즘을 사용하여 APK 내용의 다이제스트를 계산합니다.
    5. 계산 된 다이제스트가 다이제스트의 해당 다이제스트와 동일한 지 확인하십시오.
    6. SubjectPublicKeyInfo첫 번째 인증서 인증서 중 공개 키와 동일한 지 확인하십시오 .
  4. 하나 이상의 서명자가 발견되고 각 발견 된 서명자에 대해 3 단계가 성공하면 확인에 성공합니다.

참고 : 3 단계 또는 4 단계에서 오류가 발생하면 v1 구성표를 사용하여 APK를 확인해서는 안됩니다.

JAR 서명 APK 확인 (v1 구성표)

JAR 서명 APK는 표준 서명 JAR이며, 여기에 나열된 항목 META-INF/MANIFEST.MF과 모든 서명이 동일한 서명자 세트에 의해 서명되어야 하는 항목이 정확히 포함되어야합니다 . 무결성은 다음과 같이 확인됩니다.

  1. 각 서명자는 META-INF/<signer>.SFMETA-INF/<signer>.(RSA|DSA|EC)JAR 항목으로 표시됩니다 .
  2. <signer>.(RSA|DSA|EC)A는 PKCS #7 CMS ContentInfo그의 시그니처를 통해 확인 SignedData와 구조 <signer>.SF파일.
  3. <signer>.SFfile META-INF/MANIFEST.MF은의 각 섹션에 대한 전체 파일 다이제스트 및의 각 섹션 다이제스트를 포함합니다 META-INF/MANIFEST.MF. 의 전체 파일 다이제스트 MANIFEST.MF가 확인됩니다. 실패하면 각 MANIFEST.MF섹션 의 요약이 대신 확인됩니다.
  4. META-INF/MANIFEST.MF무결성으로 보호 된 각 JAR 항목에 대해 항목의 압축되지 않은 내용의 요약을 포함하는 해당 이름의 섹션이 들어 있습니다. 이 모든 다이제스트가 확인됩니다.
  5. APK에 목록에 MANIFEST.MF없고 JAR 서명의 일부 가 아닌 JAR 항목이 APK에 포함되어 있으면 APK 확인에 실패합니다 . 따라서 보호 체인은 각 무결성 보호 JAR 항목의 <signer>.(RSA|DSA|EC)<signer>.SFMANIFEST.MF→ 내용입니다.

여기서 "참고 : 3 단계 또는 4 단계에서 오류가 발생하면 v1 체계를 사용하여 APK를 확인해서는 안됩니다", 2 단계 또는 체계 1의 3 단계 또는 4 단계에서 APK를 확인해서는 안됩니다. 또한 v2의 3 단계 또는 4 단계에서 오류가 발생하고 v1 체계를 사용하여 확인할 수 없다고 말하면 v1 또는 v2에서 어떻게 검증되지 않습니까?
isJulian00

7

이 링크에 따르면 : 서명 도움말

APK Signature Scheme v2는 다음을 제공합니다.

  1. 더 빠른 앱 설치 시간
  2. APK 파일의 무단 변경에 대한 추가 보호

Android 7.0은 새로운 앱 서명 체계 인 APK Signature Scheme v2를 도입하여 앱 설치 시간을 단축하고 APK 파일의 무단 변경을 방지합니다. 기본적으로 Android Studio 2.2 및 Gradle 2.2 용 Android 플러그인은 APK 서명 체계 v2와 JAR 서명을 사용하는 기존 서명 체계 를 모두 사용하여 앱에 서명합니다.

되는 추천 APK 서명 구성표 사용 V2를 하지만입니다 필수는 아닙니다 .

APK Signature Scheme v2를 앱에 적용하는 것이 좋지만이 새로운 체계는 필수는 아닙니다. APK Signature Scheme v2를 사용할 때 앱이 제대로 빌드되지 않으면 새 체계를 비활성화 할 수 있습니다.


안녕 @ Shirish, 우리는 일식에서 v2 빌드를 만들 수 있습니까?
Arjun T Raj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.