Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AABに移行したいだけなのに

Avatar for rui rui
October 14, 2026

 AABに移行したいだけなのに

Avatar for rui

rui

October 14, 2026

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 河原 颯太| Sota Kawahara 開発本部 アプリケーション開発部 モバイルグループ • •

    • Androidエンジニア Safie Viewer(セーフィー ビューアー)開発担当 去年はDroidKaigi, 今年はiOSDCに参加 #⽝ #卓球 #FPS #シャドバ © Safie Inc.|2
  2. Androidアプリの配布形式 Androidアプリの配布形式(Google Playへのアップロード形式)は2種類存在 従来形式 現在の標準 APK (Android Package) AAB (Android

    App Bundle) Androidアプリの配布‧インストール形式。 Google Playに上げる素材バンドル。Google Play 側で端末毎に最適化したAPKを⽣成して配信 1ファイルで端末に直接⼊る - ダウンロードサイズの削減 (平均15%) インストール‧更新の⾼速化 新規アプリはAABでのアップロード必須 © Safie Inc.|3
  3. Google Playからユーザーに配布する流れ (AAB) 開発者 (PC)  Google Play AAB 

    🔑 アップロード鍵 🔑 アプリ署名鍵 ‧開発者が秘密鍵を保持 ‧Googleが秘密鍵を安全に管理 ‧AABファイルへ署名してアップ ロードに使⽤ ‧AABから⽣成したAPKへ再署名 して配布 ユーザーの端末  APK 最適化されたAPK 端末仕様に合った最⼩構成 のAPKを⾃動受信 開発者がGoogle Playに上げるのが AAB ∕ ユーザーに届くのが APK © Safie Inc. | 4
  4. Safie Viewerでは • Android版Safie Viewerは2015年に1stリリース ◦ 当時からAPK形式での配布を継続中 2015年 2021年8⽉ 現状

    Android版Safie Viewerリリース 新規アプリはAAB必須に APK形式での配布を継続中 配布形式はAPK © Safie Inc.|5
  5. 下準備:AAB配信までの下準備 Step 1 AABをビルド Step 2 アプリ署名鍵の登録 Step 3 Google

    Playへ配信⽤準備 ‧アップロード鍵(.jks)作成 ‧署名付き.aabを⽣成 ‧Consoleの署名設定を開く ‧既存署名鍵をGoogleへ預託 ‧CI/CD(GitHub Actions)対応 ‧.aabの⾃動ビルド&デプロイ ⚠ ここで問題発⽣ © Safie Inc.|7
  6. アプリ署名鍵の登録⼿順 Google Play Console -> Google Play による保護 -> アプリ署名鍵の保護

    を選択 ← 既存ユーザーは 「既存鍵で署名されたアプリ」 を使⽤中のためこちらを選択 © Safie Inc.|8
  7. アプリ署名鍵が受理されない 秘密鍵が正しく暗号化されていない、またはサポートされていない種類です と表⽰ 既存鍵をそのまま使うことができなかった。なぜ? → keytoolコマンドを叩いてみたところ、原因発覚 # keytool -list -v

    Signature algorithm: SHA1withRSA Public key: RSA 1024-bit Play要件は RSA 2048bit以上 → リリース以来使⽤していた既存鍵はアプリ署名鍵として受理不可 → 鍵を新しく作る必要がある © Safie Inc.|9
  8. 対処⽅針 RSA 2048bitの新鍵を⽣成した後、 apksignerでproof-of-rotationを⽣成することで新鍵と旧鍵を紐付ける 新しい鍵が古い鍵と同様に信頼 されるべきであるという証拠 proof-of-rotation 旧鍵 新鍵 RSA

    1024bit / SHA1 RSA 2048bit / SHA256 × 単純に新しい鍵を作るだけだと署名が変わり、 既存ユーザーが更新できなくなる ◦ 旧→新を引き継ぐ proof-of-rotation があれば、 既存ユーザーも更新できる © Safie Inc.|10
  9. 「期限切れ」なのに同じ鍵しか出ない 1回⽬DL : 4983cbb5… ✕ なのにDLできる鍵は毎回同じ ↓ 再試⾏DL : 念のため

    サポートへ問い合わせ ⽅針は合ってる? 原因は? 4983cbb5… △ ↑ キャッシュクリア、再ログイン、別ブ ラウザなどを試しても変わらず... 「暗号鍵の有効期限が切れています」 ⽅針は正しいとサポートから回答 でも期限切れ側は有効な回答は得られず ↓ 1週間ほど期間を空けて再実⾏ Play側の暗号鍵が⾃然ローテーション ✓ 成功 © Safie Inc.|15
  10. まとめ‧学び • AAB移⾏を試みたところ、思わぬ躓きが発⽣ ◦ 原因はリリース当初(10年以上前)に⽣成した署名鍵だった -> 新規鍵へ置き換え ◦ 署名鍵を変更したためMaps APIキーのSHA制限などの再登録も必要(本LTではスコープ外)

    • 古いリソースが技術的負債になっていないかは適宜確認したい ◦ 署名鍵の場合: keytoolコマンドを利⽤して規格を確認 • サポートも万能ではない ◦ コミュニケーションの制限上、問題の直接的な解消を⽬指すのは難しい ◦ 状況を詳細に共有し、対応⽅針として問題ないか。という観点で確認することが重要 • 最終的に理不尽はある😭 ◦ 問い合わせ含め、期間を空けて再試⾏したことにより問題が解消 ◦ 前例の無い作業は時間に余裕を持って対応したい © Safie Inc.|17