Google Playアプリの署名を使用して、Google Playにアプリをアップロードする方法を理解しようとしています。
ここに私がやったことがあります:
証明書が証明書ではないと文句を言います
新しいAPKをプロダクションにアップロードする
アップロードに失敗しましたアップロード証明書で署名されていないAPKをアップロードしました。同じ証明書を使用する必要があります。アップロード証明書には指紋があります:[SHA1:0C:...]およびアップロードしたAPKへの署名に使用される証明書には指紋があります:[SHA1:2D:...]
しばらく探した後。 Google Playコンソールに投稿された証明書をキーストアに配置する方法を見つけました。このようなもの:
keytool.exe -importcert -file upload.pem -keystore myapp-release-key.keystore
証明書が入っているようです。キーストアの内容を一覧表示すると、次のようになります。
keytool.exe -list -keystore trackcoachfull-release-key.keystoreキーストアパスワードを入力します。
キーストアタイプ:JKSキーストアプロバイダー:Sun
キーストアには2つのエントリが含まれています
myappfull、2017年5月18日、PrivateKeyEntry、証明書フィンガープリント(SHA1):2D:... uploadkey、2017年5月19日、trustedCertEntry、証明書フィンガープリント(SHA1):0C:...
今、私がブロックされている場所...
Android Studioで、uploadkeyを使用して署名付きAPKを生成しようとしました。
ビルド>署名済みAPKの生成上記のキーストアを選択しますキーストアパスワードを入力しますキーエイリアスとしてuploadkeyを選択しますキーパスワードの入力を強制します。
Android Studioのエラー:
エラー:タスク ':app:packageFullRelease'の実行に失敗しました。
com.Android.ide.common.signing.KeytoolException:ストア "C:\ Users\Admin\AndroidStudioProjects\keystores\myappfull-release-key.keystore"からキーuploadkeyを読み取れませんでした:信頼できる証明書エントリはパスワードで保護されていません
私の質問はこれです:
Google Playが提供するアップロードキーで署名されたAPKを生成するにはどうすればよいですか?
ありがとう
Google Playが提供するアップロードキーを使用してAPKに署名することができました。新しいアプリのために従った手順は次のとおりです。
keytool.exe -importcert -file upload_cert.der -keystore <keystorefile>
を使用して、ダウンロードした証明書を手順(1)で作成したキーストアに追加しますここで注意すべき重要な点は、手順(6)で、keytoolのインポートが元の証明書をGoogle Playからダウンロードした証明書で更新することです。
Google Play Consoleでアップロード証明書を使用してAPKに署名することはできません。
うまくいけば、この答えが、他の人が存在しない解決策を見つけようとして時間を浪費するのを防ぐでしょう。
Google Playサポート記事 アプリの署名キーの管理 には、これを理解するために必要な情報があります。
「キーの種類の重要な定義」セクションから:
- キーのアップロード(既存のアプリのオプション):プログラムへの登録中に生成する新しいキー。 Play Consoleにアップロードする前に、アップロードキーを使用して将来のすべてのAPKに署名します。
- プライベートキー:APK署名の場合、これはAPKの署名に使用されるキーです。秘密鍵は秘密にしておく必要があります。
- 公開鍵:APK署名の場合、これはAPKの署名を検証するために使用される鍵です。公開鍵は誰でも見ることができます。
- Certificate:証明書には、公開鍵と、鍵の所有者に関する追加の識別情報が含まれています。
次に、Google Play Consoleでは、アップロード証明書(アップロードキーではなく) )。上記の定義に基づいて、次のことを結論付けることができます。
さらに証拠として この他のSO質問(Android署名エラー:信頼できる証明書エントリはパスワードで保護されていません) は同じ問題に対処しますが、アップロードキー/証明書を参照しないため、この質問の意味を見逃すのは簡単です。GooglePlayからダウンロードできないものは何もこの問題を解決しないということです。
Google Playからダウンロードしたアップロード証明書を使用してAPKに署名できると報告する人もいますがIS、何が起こったのか誤解していると思います。通常、これらのレポートは、キーの生成に使用された元のキーストアに証明書をインポートする必要があることを示していることに注意してください。実際、APKに署名するために必要な(プライベート)キーをインポートしていると考えると、実際には単に公開キーをインポートし、キーペアの公開半分を証明書でエクスポートされた公開キーで上書きするだけです。そもそも。
インポート手順を実行せずにそのエイリアスを使用してAPKに署名しようとした場合、同様に機能していました。 (インポートは何も変更しませんでした。)これが、インポートが新しいキーストアではなく元のキーストアで使用された場合にのみ機能するように見える理由です。
それはあなたの状況次第です。目標はAPKに署名し、Googleに正常にアップロードすることです。
keytool
以外のツールでアップロードキーを生成し、それをキーストアにインポートし、元の生成ファイルがまだある場合は、使用したプロセスを使用して、秘密キーを別のキーストアに再度インポートできます。初めて。「Java\bin」フォルダから次のようなキーストアを生成したはずだと思います。
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Youtアプリを更新する場合は、生成したものと同じキーストアを使用する必要があります。
[ビルド]> [署名済みAPKの生成]に移動します。
[既存を選択]を選択し、キーストアパスを参照します
「キーストアのパスワード」を入力してください
キーエイリアスで[...]をタップし、キーエイリアスがキーストアの生成中に指定したものと同じかどうかを確認します。
「はい」の場合、「キーパスワード」を再度入力します
「次へ」をタップします
どのステップで問題が発生しているのか教えてください。それに応じてガイドできます。
場合によっては、1つのキーストアに2つの証明書があり、それらはエイリアス名またはパスワードによって区別されます。キーストアの両方のエントリのプロパティを確認してください。いずれかが正しいエイリアス名を持つ有効なキーであると確信しています。次のコマンドを使用します。
Keytool -list -keystore WeatherForecast.jks(キーストア)
パスワードの入力を求められたらEnterキーを押します。
2つのエントリが表示され、最初のWordがキーストアのエイリアスになります。
それは私のために働いたし、きっとあなたのために働くと思う。
Googleに連絡し、以下の手順に従って新しいキーを生成し、証明書をアップロードする必要がありました。
新しいアップロードキーは、PlayにアップロードするAPKの署名に使用されます。
新しいアップロードキーを生成して登録する方法は次のとおりです。
このキーは2048ビットのRSAキーであり、25年の有効期間が必要です。
2.そのキーの証明書をPEM形式にエクスポートします:keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
3.このメールに返信し、upload_certificate.pemファイルを添付します。