利用している Google Mobile Ads SDK (play-services-ads) のバージョンを確認する

👉 Google Play と Android の変更点に対応するためのアプリの準備 - Google AdMob ヘルプ hatena-bookmark


implementation com.google.android.gms:play-services-ads:x.y.z

20.4.0 (バージョン)
→ 広告IDの使用を継続するために自動的に権限が宣言されます。

20.5.0
→ オプトアウト済みユーザーのデータ収集と不正防止に対応するため、新しいアプリアセットIDに対応します。

20.6.0
→ tagForChildDirected(TFCD)または tagForUnderAgeOfConsent(TFUA)を通して子供向け取り扱いタグが付与された広告リクエストにおいては、広告IDが送信されないようにすることができます。

👉 Googleモバイル広告SDK  |  Android  |  Google Developers hatena-bookmark

現在、アプリで利用中のバージョンを build.gradle で確認してみたら、


com.google.android.gms:play-services-ads

がありません!

 

依存性を確認していく


./gradlew -q :app:androidDependencies  

...
release
releaseCompileClasspath - Dependencies for compilation
...
+--- com.google.android.play:core:1.10.3@aar
+--- com.google.android.gms:play-services-analytics:18.0.1@aar
+--- com.google.android.gms:play-services-oss-licenses:17.0.0@aar
+--- com.google.android.gms:play-services-tagmanager-v4-impl:18.0.1@aar
+--- com.google.android.gms:play-services-analytics-impl:18.0.1@aar
+--- com.google.firebase:firebase-messaging-ktx:23.0.4@aar
+--- com.google.firebase:firebase-messaging:23.0.4@aar
+--- com.firebaseui:firebase-ui-auth:8.0.1@aar
+--- com.google.android.gms:play-services-auth:19.0.0@aar
+--- com.google.firebase:firebase-ads:20.6.0@aar
+--- com.google.android.gms:play-services-ads:20.6.0@aar 👈
+--- com.google.android.gms:play-services-appset:16.0.0@aar
+--- com.google.firebase:firebase-auth-ktx:21.0.3@aar
+--- com.google.firebase:firebase-auth:21.0.3@aar
+--- com.google.android.gms:play-services-auth-api-phone:17.4.0@aar
+--- com.google.android.gms:play-services-safetynet:17.0.0@aar
+--- com.google.android.gms:play-services-auth-base:17.0.0@aar
+--- com.google.android.gms:play-services-base:18.0.1@aar
...

play-services-ads は、20.6.0 が、なぜか、見えますが。

さらに詳細を確認していきます。


./gradlew -q :app:dependencies --configuration releaseCompileClasspath

...
|         |         +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.2 (*)
|         |         \--- com.google.firebase:firebase-annotations:16.0.0
|         \--- com.google.android.gms:play-services-measurement-sdk:21.0.0
|              +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
|              +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.0.2 (*)
|              +--- com.google.android.gms:play-services-measurement-base:21.0.0 (*)
|              \--- com.google.android.gms:play-services-measurement-impl:21.0.0 (*)
+--- com.google.firebase:firebase-ads:20.6.0 👈
|    +--- com.google.android.gms:play-services-ads:20.6.0 👈
|    |    +--- androidx.browser:browser:1.0.0 -> 1.3.0
|    |    |    +--- androidx.core:core:1.1.0 -> 1.7.0 (*)
|    |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
|    |    |    \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
|    |    +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
|    |    +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
|    |    +--- com.google.android.gms:play-services-ads-base:20.6.0
...
(c) - dependency constraint
(*) - dependencies omitted (listed previously)
(n) - Not resolved (configuration is not meant to be resolved)

dependencies の記述の親子依存の調べ方

firebase-ads に依存されていますね。

もう一度、build.gradle を見てみます。


dependencies {
  ...
  implementation 'com.google.firebase:firebase-core:21.0.0'
  implementation 'com.google.firebase:firebase-ads:20.6.0' 👈
  implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0'
  ...

つまりは、

play-services-ads の implementation 記述がなくても

firebase-ads から依存を追って解決されていってたのですね!!


Android Studio : ワイルドカードなインポートをしない設定

ワイルドカードな import をしたくない


[Preferences]

  ↓

[Editor]

  ↓

[Code Style]

  ↓

[Kotlin]

  ↓

[Imports]

  ↓

[Top-Level Symbols]/[Java Statics and Enum members]

  ↓

[Use single name import]

IntelliJ: Never use wildcard imports

Preferences 左上の検索から「single name」と入力すると良いです 🙆

「*」を使ったインポートは今や不要です。

👉 Android Studio : Never use wildcard imports hatena-bookmark


おサイフケータイアプリ 繰り返し停止 不具合 の対応方法

これ、私も該当してました。

こんなダイアログが頻繁に気がついたら表示されています。

対象外とするには、設定 → アプリ から 「おサイフケータイ アプリ」 を選択していただき、バッテリー → 電池の使用状況 で 「制限なし」としてください。

公式開発元が、Playストアで対応方法を公開しています。

※「アプリが繰り返し停止する」などの事象が継続して発生している場合、本アプリを電池の最適化の対象外として頂くことで改善されるケースがございます。

どうやら、

このアプリを、OSの機能「電池の最適化」から対象外にする

ということのようです。

対象外とするには、設定 → アプリ から 「おサイフケータイ アプリ」 を選択していただき、バッテリー → 電池の使用状況 で 「制限なし」としてください。


[設定]

  ↓

[アプリ]

  ↓

[おサイフケータイアプリ]

  ↓

[バッテリー]

  ↓

[電池の使用状況]

  ↓

[制限なし]

対象外とするには、設定 → アプリ から 「おサイフケータイ アプリ」 を選択していただき、バッテリー → 電池の使用状況 で 「制限なし」としてください。

また、同様に「モバイルFeliCaクライアント」についても、「制限なし」を設定ください。

他のアプリでも利用できる対処方法になるかもしれません。

👉 おサイフケータイ アプリ - Google Play のアプリ hatena-bookmark


Jetpack Compose vs SwiftUI

世界のデベロッパーたちが比較しています。

UI部分の統一化、どちらが奪取するのでしょうか。

We looked at how to build a simple app with both Jetpack Compose and SwiftUI. The approaches for using these frameworks is different as outlined above.

👉 Jetpack Compose vs SwiftUI - Coding with Mohit hatena-bookmark

If you think it is a good idea to use Compose for both Android and iOS, I’ll probably disagree with you. It is important to respect UI/UX guidelines of the platform and Compose can’t build an application like SwiftUI does.

👉 SwiftUI vs Jetpack Compose by an Android Engineer | by Gérard Paligot | Mar, 2022 | ProAndroidDev hatena-bookmark

You should definitely keep an eye on both frameworks!

👉 SwiftUI vs. Jetpack Compose | QuickBird Studios Blog hatena-bookmark

Kotlinに慣れ親しんでるのもあるかもしれませんが、個人的にはJetpack Composeが一番ストレスなく書くことができました。 Jetpack Composeは現在DesktopアプリやWebでも使え、今後活躍の幅が広がって欲しいなと思っています。

👉 Jetpack Compose, React, Flutter, SwiftUIを比較する - Blog - Mori Atsushi hatena-bookmark

まだ、どちらとも言えませんね。

注視しておく必要があるでしょう。


Firebase Authentication の キーデータ相互登録設定を忘れてハマるな

いまさら知ったのですが。

On October 31, 2018, we will no longer actively contribute to, or accept issues and pull requests on, the open sourced SDKs (iOS, Android, Unity) on GitHub. After this date we will also stop releasing the SDKs through Cocoapods, Carthage, and Bintray JCenter.

👉 Discontinuing support for Twitter Kit SDK hatena-bookmark

Twitter 公式 SDK の代替として Firebase Authentication を Twitter で使ってみました。

実装とは別に、各管理画面から発行されるキーなどのテキストを別のサービスの管理画面に登録することが必要になります。

忘れやすくて抜けやすくてハマりやすいので整理しておきます。

 

Twitter Consumer API Key / Secret Key

Twitter Developers で作成される 「Consumer API Key / Secret Key」 を Firebase Authentication と Android Studio 上でXMLリソースとして登録します。

Twitter Developers consumer api key secret key

Twitter Developers で作成される「Consumer API Key / Secret Key」は Firebase Authentication に登録します。

<string name="twitter_consumer_key" translatable="false">YOUR_CONSUMER_KEY</string>     <string name="twitter_consumer_secret" translatable="false">YOUR_CONSUMER_SECRET</string>
👉 Twitter Developers hatena-bookmark
👉 Firebase console hatena-bookmark
👉 firebaseui.xml - firebase/snippets-android hatena-bookmark

 

Firebase Authentication Callback URL

Firebase Authentication で作成される「Callback Url」は Twitter Developers に登録します。

Firebase Authentication で作成される「Callback Url」は Twitter Developers に登録します。

Firebase Authentication で作成される「Callback Url」は Twitter Developers に登録します。

Firebase Host Config で独自ドメインにしたほうが感じが良いです。

👉 Firebase Authで独自ドメインが使いたい hatena-bookmark

 

Google Play アプリリリースキー SHA-1 フィンガープリント

アプリをリリースに使われる公開鍵のSHA-1のフィンガープリントです。

リリース鍵は、開発者が作成したり、Google Play 側で変更時に作成されたりするので、実際のリリースに利用されてる鍵を認把握している Google Play Console で確認すると間違いないです。

Google Play Console で確認して Firebase プロジェクトの概要 に登録します。

[設定] - [アプリの完全性]

[プロジェクトの概要] - [設定(歯車マーク)]
Google Play Console で確認して Firebase Authentication に登録します。

👉 Play Console hatena-bookmark

 

Android Studio デバッグキー SHA-1 フィンガープリント

デバック時に使われる鍵のSHA-1フィンガープリントです。

Android Studio の Terminal や Gradle ウインドウで確認して Firebase プロジェクトの概要 に登録すると、デバッグ時にも使えます。

Android Studio の Terminal や Gradle ウインドウで確認して Firebase Authentication に登録します。

Android Studio の Terminal や Gradle ウインドウで確認して Firebase Authentication に登録します。

👉 【コピペ用】Android「Google アプリ署名」コマンドまとめ hatena-bookmark
👉 google maps - How to get the SHA-1 fingerprint certificate in Android Studio for debug mode? - Stack Overflow hatena-bookmark
👉 Gradle タスクリストが見えない件【Android Studio】 hatena-bookmark

 

まとめ


Twitter Developers 
Consumer API Key / Secret Key
→ Firebase Authentication
→ Android Studio XML


Firebase Authentication 
Callback URL
→ Twitter Developers


Google Play Console
Release Key Fingerprint SHA-1
→ Firebase Project


Android Studio
Debug Key Fingerprint SHA-1
→ Firebase Project

箇条書きではきっとどれかが抜けてしまいそうなので手書きでも書いておきます。

Twitter 公式 SDK の代替として Firebase Authentication を Twitter で使ってみました。

👉 Firebase Authentication  |  Firebase Documentation hatena-bookmark