2017-10-16 11 views
4

2010 년에 앱을 게시했습니다. 당시에는 변경되지 않고 모두 사용 된 하나의 키와 로컬 키 저장소가 생성되었습니다. 그 이후로 발행 한이 앱의 약 30 개 버전입니다.새 APK 버전 (API 레벨 8에서 지원되지 않는 SHA1)을 업로드 할 때 서명 오류 메시지

Eclipse와 함께 개발 한 날, 안드로이드 스튜디오로 전환 한 지난 몇 년 동안 항상 괜찮 았던 것입니다.

마지막 버전은 2016-12-23입니다. 이제 Android Studio로 서명 한 APK를 생성하고 개발자 콘솔에 업로드했으며 다음 오류 메시지가 표시되었습니다.

업로드 실패 - 잘못된 서명이있는 APK를 업로드했습니다. 서명에 대해 자세히 알아보기). apersigner에서 오류 : ERROR (Jar 서명자 CERT.DSA) : JAR 서명 META-INF/CERT.DSA는 다이제스트 알고리즘 SHA-1 및 서명 알고리즘 SHA-1을 API 수준 8에서 지원되지 않는 DSA와 함께 사용합니다. "

  • 전용"V1 (항아리 서명) "
  • 모두 : APK 나는 (항상 같은 결과 포함) (신규 가능) 서명 버전 옵션이 조합을 시도

을 확인하고 있습니다 V1 (Jar 서명) "및"V2 (전체 APK 서명) "

저는 Android Studio 2.3.3과 buildToolsVersion 25.0.0 및 Gradle 버전 3.3을 사용하고 있습니다.

답변

2

표시되는 오류 메시지는이 APK가 Android Froyo (API 레벨 8)에 설치되지 않는다는 것입니다. APK의 JAR 서명 (META-INF/CERT.DSA)은 OID 1.2.840.10040.4.3 (SHA-1 with DSA)을 사용하여 서명 알고리즘을 지정합니다. 이 OID는 API 레벨 9에서만 JAR 서명의 Android에서 지원되지만 APK의 AndroidManifest.xmlandroid:minSdkVersion 속성을 통해 APK가 API 레벨 8을 지원하도록 지정합니다. DSA의 경우 JAR 서명에 사용할 최상의 서명 알고리즘 OID는 1.2입니다. 840.10040.4.1 (DSA, DSA가있는 SHA-1이 아님). 결과 암호화 서명은 완전히 똑같습니다. 모든 Android 버전에서이 OID가 JAR 서명에서 지원된다는 것입니다. 서명 도구는 일반적으로이 수준의 제어를 제공하지는 않지만 작동하는 OID를 선택해야합니다.

Android Studio, Android Plugin for Gradle 및 apksigner은 모두 맞춤 매개 변수를 지정하지 않으면 서명 된 APK를 올바르게 생성합니다. 예를 들어 build.gradle 파일에 minSdkVersion 9 이상이 지정되어 있습니까? 당신이 서명 해제 - jarsigner를 사용하는 경우,

  • 로 전환 : 또는 아마도 당신은

    아이디어 ... 해제 서명 안드로이드 규칙에 대해 알고하지 않습니다 jarsigner를 사용하여 APK이야 apksigner 또는 출시 서명을 위해 Android Studio/Android Plugin for Gradle을 사용하세요. 당신이 당신의 build.gradle 파일, Gradle을위한 안드로이드 스튜디오/안드로이드 플러그인을 사용하여 공개 서명하는 경우,

    apksigner sign --ks my.keystore app.apk 
    
  • AndroidManifest.xml에서와 동일한 minSdkVersion을 지정 : 예를 들어, APK 사용 apksigner을 다시 서명합니다. 또는, 아마도 minSdkVersion을 빌드에서 삭제하십시오.gradle 파일은 AndroidManifest.xml에서 minSdkVersion을 사용하여 Android 용 Android Studio/Android 플러그인을 만들 것입니까? 나는 안드로이드 스튜디오 2.3.3이 올바른/안전 OID 1.2.840.10040.4.1 서명 등의 APK를 사용하도록되어 있기 때문에

  • 는 9 AndroidManifest.xmlminSdkVersion을 조정 ... 이것에 대해 다소 모호한 해요 이상 당신이 ' Froyo에 대한지지를 떨어 뜨리는 것으로 다시금

P. S. 당신의 APK가 제대로 체결되어 있는지 여부를 확인하고 가능성이 구글에 의해보고됩니다 오류가 업로드 시간에 재생보고 :

apksigner verify my.apk 
+1

감사 상세한 답변을. 제 경우에는 옵션 2가 적용됩니다. Gradle 용 AndroidStudio/Android 플러그인을 사용하여 서명합니다. 내가 이해하는 한 Gradle은 build.gradle 항목에 따라 AndroidManifest.xml의 minSdkVersion 항목을 자동으로 무시합니다 (AndroidStudio 편집기에서 AndroidManifest.xml의 'android : minSdkVersion'행에 마우스를 가져 가면 그렇게 말하는 툴팁 메시지를 얻는다). 그러나 나는 항상 두 파일에서 8을 사용했으며 문제가 없었습니다. 나는 이것을 9로 바꾸어 문제를 해결했다. 하지만 내 앱이 프로 요를 더 이상 지원하지 않는다는 것을 의미합니다 (옵션 3). – Nemax