Android のコンセプト(ウェブ デベロッパー向け)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Android や Google Play を初めて利用するウェブ デベロッパーの方は、 注意が必要です。これに関しては、すでに多くのリソースやドキュメントが存在しています(Android の ここでは、重要なコンセプトと Bubblewrap との関係について説明します。

アップロード鍵と署名鍵

バブルラップを使用して Android App Bundle(AAB)を生成する予定がある場合(注: 8 月から) 2021 年、Google Play ではすべての新規アプリで Android App Bundle 形式を使用することが義務付けられます)。 アップロードして Google Play に公開するための APK を使用するには、署名鍵でアプリに署名する必要があります。Google Google Play では、これを 2 つの方法で処理できます。

  • Play アプリ署名(強く推奨): Google がアプリの署名鍵を管理、保護します。 できます。APK の配信時に署名する際にこの鍵を使用します。Play アプリ署名では 2 つの鍵を使用します。アプリ 署名鍵」Google が管理する鍵と「アップロード鍵」保持し、維持する必要がある 非公開にできます。アップロード鍵を使用してアプリに署名し、Google Play Console にアップロードします。この アップロード鍵を紛失した場合や不正使用された場合に、次の方法でリセットできます。 Play サポートチームにお問い合わせください。現在 Google Play は を使用すると、アプリを AAB または APK としてアップロードできます。 <ph type="x-smartling-placeholder">
      </ph>
    • Android App Bundle(AAB): AAB を Google Play Console にアップロードした場合、APK のビルドと生成は Google Play ストア。ユーザーがアプリをダウンロード、インストールすると、Google Play からアプリが配布されます 署名済みの APK としてダウンロードされます。そのため、APK の署名も Google Play。そのため、デフォルトでは、アプリを AAB として Google Play Console にアップロードすると、 Play アプリ署名を使用する必要があります。
    • APK: APK では、Play アプリ署名にオプトインするかどうかを選択できます。Play アプリへのオプトイン 署名鍵のセキュリティを強化するため、署名することを強くおすすめします。前述のとおり リリースされます。まもなく Google Play では、新しいアプリはすべて AAB 形式でアップロードすることが義務付けられます。そのため、 おすすめします。
  • 独自の署名鍵を管理する: 独自の鍵を管理することを選択し、Play アプリを有効にしていない場合 署名。アプリの署名鍵については、すべてあなたが責任を負います。Play アプリ署名とは異なり、 鍵を紛失してもリセットできません。そのため、アプリの署名鍵を紛失すると、 アプリをアップデートできなくなります。

bubblewrap init の設定中に、[署名鍵の情報(5/5)] が表示されたら、 [Key store location] と [Key name] を入力するか、デフォルト値をそのまま使用するよう求められます。「 デフォルトのキーストアの場所は、プロジェクト ディレクトリ内の android.keystore ファイルです。 キー名は android です。Bubblewrap がその鍵名を持つ既存のキーストアを 自動的にアカウントが作成され、パスワードの入力を求められます。パスワードをメモする ビルドプロセス(bubblewrap build)で必要になるため、ここでは 鍵を作成します。Play アプリ署名にオプトインしている場合は、Bubblewrap が設定する署名鍵が 生成され、アプリへの署名に使用された鍵が「アップロード鍵」になります。 生成された鍵を署名鍵またはアップロード鍵としてバブルラップします。鍵を保護し、非公開にしておく必要があります。 バージョン管理に commit することはおすすめしません。代わりに、権限を与えられた人の数を制限してください。 必要ありません。

ウェブサイトと Android の関係を宣言するには、デジタル アセット リンクが必要です 。Bubblewrap によって生成された Android アプリが適切に検証され、 (Chrome カスタムタブの代わりに)信頼できるウェブ アクティビティを表示するには、適切なキーを assetlinks.json ファイル。ウェブサイト(.well-known/assetlinks.json)にアップロードします。 (ルートからの相対パス)。assetlinks.json ファイルは次の形式にする必要があります。

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

SHA256 証明書フィンガープリントを取得する

assetlinks.json ファイルを作成するには、SHA 256 証明書に関連付けられた をアプリの署名鍵に置き換えます。重要なのは、サービス アカウントに関連付けられる 署名鍵とアップロード鍵が異なります。重要な点は、 特に、アプリが Chrome カスタムタブ( ブラウザのアドレスバーに表示されます)。その場合、assetlinks.json ファイルに フィンガープリントを作成します。

署名証明書とアップロード証明書の両方のフィンガープリントを assetlinks.json に含めると便利です。 ローカルでアプリをデバッグしやすくなります詳細については、後述のキーを追加するをご覧ください。 assetlinks.json ファイルに両方の鍵を含める方法をご確認ください。

フィンガープリントを取得する方法はいくつかあります。これについては、次のセクションで詳しく説明します。 いずれも同じフィンガープリントを提供するため、最もよく使用されている方法を自由に選択してください。 便利です。

Google Play Console から

Play アプリ署名にオプトインするかどうかによって、1 つまたは 2 つの鍵を使用できます。取得するには、 適切な SHA256 フィンガープリントを作成します。

  1. Google Play Console に移動
  2. 目的のアプリを選択します。
  3. 左側のナビゲーション メニューの [リリース] で、[設定] ->アプリの完全性
  4. 適切な鍵の SHA256 をコピーします。

署名鍵またはアップロード鍵に適した SHA256 証明書フィンガープリントを取得する

  • 署名鍵: [アプリ署名鍵の証明書] の SHA256 フィンガープリントをコピーします。この Google Play ストアからアプリをダウンロードした場合、指紋はアプリに対応します。 Google Play は署名鍵で署名されたアプリを配信します。

  • 鍵をアップロード: [鍵の証明書をアップロード] の SHA256 フィンガープリントをコピーします。この ローカルに(USB 経由で ADB 経由で)インストールした場合、フィンガープリントはアプリに対応します。 例です)。(ローカルマシン上の)その APK は Bubblewrap によってビルドされたため、署名された (init の設定時に)作成された鍵。なお、このスライドは ローカルにインストールされたアプリの署名鍵ではなく、実際には「アップロード鍵」になります。1 回 Play を通じてアプリを公開できます

keytool 経由

keytool はキーで、 使用することもできます。keytool を使用して、キーに関連付けられた SHA 256 フィンガープリントを 生成された APK または AAB バブルラップ。このフィンガープリントはローカルの署名鍵用であり、 Google Play にアプリをアップロードして Play アプリ署名にオプトインすると、この鍵が「アップロード鍵」になります。

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

アプリの正しいデジタル アセット リンク ファイルを取得するもう 1 つの方法は、アセットリンク ツールを使用することです。

  1. Google Play ストアからアセットリンク ツールをインストールします。
  2. 同じデバイスで、Google Play ストアからアプリをダウンロードするか、ローカルにインストールします。
  3. アセットリンク ツール アプリを開くと、アセットにインストールされているすべてのアプリが パッケージ名で識別されます。先ほど選択したアプリケーション ID でリストをフィルタします。 bubblewrap init を選択し、そのエントリをクリックします。
  4. アプリの署名と生成されたデジタル アセット リンクが記載されたページが表示されます。[ 下部のコピーボタンや共有ボタンを使って、自由にエクスポートできます(Google Keep への保存、 自分宛てにメールで送信してください)。

署名鍵やアップロード鍵の場合と同じ考え方が当てはまります。 Google Play ストアのアセットリンク ツールを使用すると、アプリの署名鍵のフィンガープリントを取得できます。条件 アプリをローカルマシンから直接インストールした場合、フィンガープリントは鍵用 バブルラップが生成されました。

アップロードが完了したら、ブラウザでアセットリンク ファイルにアクセスできることを確認します。 アップロードしたファイルに https://example.com/.well-known/assetlinks.json が解決されることを確認します。

Jekyll ベースのウェブサイト

ウェブサイトが Jekyll(GitHub Pages など)によって生成された場合は、次の行を追加する必要があります。 .well-known ディレクトリが出力に含まれるようにします。 GitHub のヘルプで、このトピックの詳細を確認できます。 サイトのルートに _config.yml というファイルを作成します(すでに存在する場合は追加します)。 次のように入力します。

# Folders with dotfiles are ignored by default.
include: [.well-known]

鍵の追加

デジタル アセット リンク ファイルには複数のアプリを含めることができ、アプリごとに あります。 たとえば、2 つ目のキーを追加するには、 アセットリンク ツールを 2 番目のエントリとして追加します。 この JSON を解析する Chrome のコードは非常に厳格であるため、誤って カンマで区切られます

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

トラブルシューティング

デジタル アセット リンクの検証に失敗した理由が Chrome に記録されます。ログは adb logcat がインストールされている Android デバイス。 Linux または Mac で開発している場合は、接続されたデバイスから関連するログを表示できます。 これを次のように置き換えます。

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

たとえば、「Statement failure matching fingerprint.」というメッセージが表示された場合は、 アセットリンク ツールを使用してアプリの署名を確認し、assetlinks.json の署名と一致することを確認する 表示されます。