2020年3月31日を過ぎるとファブリックが利用できなくなるため、ファブリックからFirebaseに移行しようとしています。
私はすでに最初のステップを実行しました:Gradleへのプラグインと依存関係の追加、分析jsonファイルの追加、さらにクラッシュレポート、そしてFirebaseコンソールでデータを表示できるため(分析とクラッシュ)、すべて正しいようです。
しかし、アプリ配布システムをBeta + FastlaneからFirebaseに移行するのはそれほど幸運ではありません。 「Distribute Android Apps to testers using Gradle "」というオプションを試しています。すでにプラグインと依存関係を追加してあります。 Gradleタスク./gradlew appDistributionUploadMyVariant
を実行します。
正しいプロジェクトのfirebase-adminsdk
というユーザーのGoogle Cloud Platform ConsoleからserviceCredentialsFile
を取得しています(この名前はFirebaseシステムによって付けられていると思います)。ユーザーのメールはfirebase-adminsdk-xxx@my_project.iam.gserviceaccount.com
のようなもので、Firebaseコンソール->設定->サービスアカウント-> Firebase Admin SDKに表示されるものと同じです。
資格情報を使用してjsonファイルをダウンロードしました。gradleはそれを見つけることができます。なぜなら、ファイルに意図的に間違ったパスURLを入力すると、Service credentials file does not exist
が記録されるためです。このファイルの内容には、上記のいくつかの行で述べたとおり、client_email
およびproject_id
の正しい値が含まれています。
しかし、403エラーが発生します。タスク./gradlew appDistributionUploadMyVariant --info
を実行したときに取得した情報の一部を貼り付けます(私はいくつかの個人情報を非表示にしています):
Task ':app:appDistributionUploadMyVariant' is not up-to-date because:
Task has not declared any outputs despite executing actions.
Found APK at /MyFolder/app/build/outputs/apk/qa/qaType/app-qa-qaType.apk.
Uploading APK to Firebase App Distribution...
Getting appId from output of google services plugin
-------------- REQUEST --------------
POST https://oauth2.googleapis.com/token
Accept-Encoding: gzip
User-Agent: Google-HTTP-Java-Client/1.28.0 (gzip)
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 808
curl -v --compressed -X POST -H 'Accept-Encoding: gzip' -H 'User-Agent: Google-HTTP-Java-Client/1.28.0 (gzip)' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -d '@-' -- 'https://oauth2.googleapis.com/token' << $$$
Total: 808 bytes
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJSUzI1N(...)
-------------- RESPONSE --------------
HTTP/1.1 200 OK
Transfer-Encoding: chunked
X-Frame-Options: SAMEORIGIN
Alt-Svc: quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000
Cache-Control: private
Server: scaffolding on HTTPServer2
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Vary: Referer
Vary: X-Origin
Vary: Origin
X-XSS-Protection: 0
Date: Fri, 22 Nov 2019 14:47:29 GMT
Content-Type: application/json; charset=utf-8
Total: 207 bytes
{
"access_token": "access_token_value",
"expires_in": 3600,
"token_type": "Bearer"
}
-------------- REQUEST --------------
GET https://firebaseappdistribution.googleapis.com/v1alpha/apps/appId
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: Firebase App Distro Client/1.2.0
x-app-distro-api-client-id: com.google.firebase
x-app-distro-api-client-type: gradle
x-app-distro-api-client-version: 1.2.0
curl -v --compressed -H 'Accept-Encoding: gzip' -H 'Authorization: <Not Logged>' -H 'User-Agent: Firebase App Distro Client/1.2.0' -H 'x-app-distro-api-client-id: com.google.firebase' -H 'x-app-distro-api-client-type: gradle' -H 'x-app-distro-api-client-version: 1.2.0' -- 'https://firebaseappdistribution.googleapis.com/v1alpha/apps/appId'
-------------- RESPONSE --------------
HTTP/1.1 403 Forbidden
Transfer-Encoding: chunked
X-Frame-Options: SAMEORIGIN
Alt-Svc: quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000
Cache-Control: private
Server: ESF
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Vary: Referer
Vary: X-Origin
Vary: Origin
X-XSS-Protection: 0
Date: Fri, 22 Nov 2019 14:47:30 GMT
Content-Type: application/json; charset=UTF-8
Total: 126 bytes
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
:app:appDistributionUploadMyVariant (Thread[Daemon worker Thread 8,5,main]) completed. Took 1.552 secs.
AAPT2 aapt2-3.4.1-5326820-osx Daemon #0: shutdown
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:appDistributionUploadMyVariant'.
> App Distribution failed to fetch app information: [403] The caller does not have permission
同じ結果で、gradleファイルからappId
値を渡そうとしてもしました。
何か案が?
エラー「[403]呼び出し元には権限がありません。」許可の問題が原因です。
サービスアカウントの作成方法とjsonのダウンロード場所について this を試して、機能するかどうかを確認できますか?
また、詳細について firebase support にお問い合わせください。 :)