質問するログイン新規登録

Q&A

0回答

93閲覧

Google Play App Signingで署名を統一後、AccountManager経由のアプリ間データ連携ができない

hajimeapp

総合スコア0

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Google Play

Google Playは、Google社が提供しているAndroid端末向けのデジタルコンテンツ配信サービスです。Google Play Store アプリから、世界中の個人または企業が開発したアプリをダウンロードできます。有料アプリの売り上げは、70%を開発者、30%は通信キャリア等への支払いにあてられます。開発者が登録する場合は、初回のみ25ドルの登録手数料が必要です。

0グッド

0クリップ

投稿2025/09/19 13:21

0

0

実現したいこと

Kotlin製の既存Androidアプリと、Flutterで新規開発中のAndroidアプリ間で AccountManager を用いたデータ共有を実装しています。

ローカル環境でビルドしたAPKではデータ共有に成功するものの、Google Play Console経由で内部テストとして配信したアプリ(aabから生成)では、署名を統一したにもかかわらず共有に失敗してしまいます。
この問題について、考えられる原因や解決のヒントをご教示いただきたく、質問させていただきます。

環境

  • アプリA
    • 言語: Kotlin
    • 状態: リリース済み
    • Android SDK API: 35
  • アプリB
    • フレームワーク: Flutter 3.32.2 / Dart 3.8.1
    • 状態: 開発中
    • Android SDK API: 36
  • プラットフォーム: Android

実現したいこととしては、アプリAでサーバーから取得した認証情報などのデータを、AccountManager を用いてアプリBと安全に共有したい、になります。

発生している問題・分からないこと

試したことと発生している問題

1. ローカル環境での動作確認【成功】

  • AccountManager を利用したアプリ間連携には署名の統一が必須であるため、アプリAとアプリBで同じアップロードキー署名を使用しました。
  • ローカルでビルドしたAPKファイルを直接端末にインストールして動作確認を行ったところ、意図通りデータ共有に成功しました。

2. Google Play Consoleへのアップロードと署名設定

  • アプリAとアプリBを、同一のデベロッパーアカウントに aab (Android App Bundle) 形式で内部テストとしてアップロードしました。
  • Google Play App Signingによる再署名を考慮し、アプリBのアップロード時に 「アプリ署名鍵の変更」から「このデベロッパー アカウントの別のアプリと同じ鍵を使用する」を選択し、アプリAの署名鍵を指定しました。
  • これにより、Play Storeから配信される両アプリの署名は統一されているという認識です。

3. 内部テスト版での動作確認【問題発生】

  • Play Storeの内部テストトラックから、アプリAとアプリBを同一端末にインストールしました。
  • 再度データ共有を試みたところ、共有に失敗しました。

4. 配信されたアプリの署名確認

  • 問題の切り分けのため、内部テストで配信された両アプリの署名フィンガープリントをツールで抽出し、比較しました。
  • その結果、以下の項目がアプリAとアプリBで完全に一致していることを確認済みです。
    • Signer #1 certificate SHA-256
    • Signer #1 certificate SHA-1
    • Signer #1 certificate MD5
    • Source Stamp Signer certificate SHA-256
    • Source Stamp Signer certificate SHA-1
    • Source Stamp Signer certificate MD5

エラーメッセージ

error

1エラーメッセージはありません。

該当のソースコード

### 参考:アプリB(Flutter側)のMainActivity.kt アプリB(Flutter)で`MethodChannel`を介して`AccountManager`からデータを取得しているネイティブコードは以下の通りです。 package com.test.app import android.util.Log import android.accounts.Account import android.accounts.AccountManager import androidx.annotation.NonNull import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel class MainActivity: FlutterActivity(){ companion object { private const val TAG = "MainActivity" } private val CHANNEL = "com.test.app/account" override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine){ super.configureFlutterEngine(flutterEngine) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler{ call, result -> if (call.method == "getTestData"){ val testData = getTestData() if (testData != null){ result.success(testData) } else { result.success(null) } } else { result.notImplemented() } } } private fun getTestData(): String? { val accountManager = AccountManager.get(context) val accounts = accountManager.getAccountsByType("com.test.app") if (accounts.isNotEmpty()){ val account = accounts[0] val userData = accountManager.peekAuthToken(account, "testData") return userData } return null } }
### 試したこと・調べたこと - [ ] teratailやGoogle等で検索した - [x] ソースコードを自分なりに変更した - [ ] 知人に聞いた - [ ] その他 ##### 上記の詳細・結果 ※「どんな問題が発生していますか?」に記載しております。 ### 補足 特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問