Android Studio 2.3で使用する署名バージョンを少なくとも1つ選択してください
Android Studioで署名付きapkを生成している間、それは2つのオプション(CheckBox)を示しています、すなわち1. V1(Jar Signature)
と2。最後にSignature Versionsとして `V2(Full APK Signature) '署名付きapk生成プロセスのステップ。
だから、これらのV1(Jar Signature)とV2(Full APK Signature)の違いは何ですか? Android Studioのアップデート?
そして、Play Storeリリースのためにapkを署名するのにどちらを使うべきですか(または両方)?
また、私はエラーを取得しています私は2番目のオプションを使用するときapkをインストール中にインストール解析失敗証明書なし。
これは、Android 7.0で導入された新しい署名メカニズムです。APK署名をより安全にするように設計された追加機能があります。
必須ではありません。可能であればこれらのチェックボックスの両方をチェックする必要がありますが、新しいV2署名メカニズムによって問題が発生する場合は、省略することができます。
そのため、問題が発生した場合はV2を未チェックのままにしておくことができますが、可能であればチェックするようにしてください。
Play Storeリリース用のapkの署名に(または両方)使用するべきですか?答えは _ yes _ .
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 device以下にインストールしようとしたときにビルドをデバイスにインストールできません。
その後、バージョンチェックボックスをオンにしてリリースビルドを生成することでビルドを試みました。それからビルドをインストールすることができます。
here that「デフォルトでは、Android Studio 2.2およびGradle 2.2用のAndroidプラグインは、APK Signature Scheme v2と従来のJAR署名を使用する署名スキーム。」
これらの新しいチェックボックスはAndroid 2.3で表示されたように見えるので、以前のバージョンのAndroid Studio(少なくとも2.2)は両方の署名で署名したことを理解しています。そのため、以前のように続行するには、両方のチェックボックスをオンにすることをお勧めします。
EDIT 2017年3月31日:両方の署名を持ついくつかのアプリを送信=>問題なし:)
これ は良い答えだと思います。
APK署名スキームv2の検証
APK Signing Block
を見つけて、それを確認してください:APK Signing Block
の2つのサイズフィールドは同じ値を含みます。Zip Central Directory
の直後にZip End of Central Directory
レコードが続きます。Zip End of Central Directory
の後にデータが続きません。APK Signature Scheme v2 Block
内の最初のAPK Signing Block
を見つけます。 v2ブロックが存在する場合は、手順3に進みます。それ以外の場合は、v1スキームを使用したAPKの検証に戻ります。APK Signature Scheme v2 Block
の各署名者に対して:SubjectPublicKeyInfo
が公開鍵と同一であることを確認してください。注:手順3または4で障害が発生した場合は、APKをv1方式で検証しないでください。
JAR署名付きAPK検証(v1スキーム)
JAR署名付きAPKは標準の署名付きJARであり、META-INF/MANIFEST.MF
にリストされているエントリと、すべてのエントリが同じ署名者のセットによって署名されている必要があります。その整合性は次のように検証されます。
META-INF/<signer>.SF
およびMETA-INF/<signer>.(RSA|DSA|EC)
JARエントリで表されます。<signer>.(RSA|DSA|EC)
は、署名がPKCS #7 CMS ContentInfo
ファイルで検証されるSignedData構造を持つ<signer>.SF
です。<signer>.SF
ファイルには、META-INF/MANIFEST.MF
のファイル全体のダイジェストと、META-INF/MANIFEST.MF
の各セクションのダイジェストが含まれています。 MANIFEST.MF
の全ファイルダイジェストが検証されます。それでも失敗した場合は、代わりに各MANIFEST.MF
セクションのダイジェストが検証されます。META-INF/MANIFEST.MF
には、各整合性保護されたJARエントリに対して、エントリの非圧縮コンテンツのダイジェストを含む、対応する名前のセクションが含まれています。これらのダイジェストはすべて検証されています。MANIFEST.MF
に記載されておらず、JAR署名の一部ではないJARエントリが含まれている場合、APK検証は失敗します。したがって、保護チェーンは<signer>.(RSA|DSA|EC)
→<signer>.SF
→MANIFEST.MF
→それぞれの整合性保護されたJARエントリの内容です。このリンクによると: 署名ヘルプ
APK Signature Scheme v2は以下を提供します。
Android 7.0では、APK署名スキームv2が導入されました。これは、アプリのインストール時間が短縮され、APKファイルへの不正な変更からの保護が強化された新しいアプリ署名スキームです。デフォルトでは、Android Studio 2.2と Androidプラグインfor Gradle 2.2は、 APK署名方式v2とJAR署名を使用する従来の署名方式の両方を使用してアプリに署名します。
APK署名スキームを使用するのは 推奨 です v2 ですが 必須ではありません 。
アプリにAPK署名スキームv2を適用することをお勧めしますが、この新しいスキームは必須ではありません。 APK Signature Scheme v2を使用しているときにアプリが正しくビルドされない場合は、新しいスキームを無効にすることができます。