google-services.jsonなしでFirebase Cloud MessagingとAnalyticsを使う
- GitHub に上げれないので CI/CD しようと思ったときめんどくさい
- apply plugin: ‘com.google.gms.google-services’ を app/build.gradle の 1 番下に書く必要がある
- FCM と com.google.gms.google-services の仲が悪い(らしい)
ということで環境変数に APP_ID などを設定して FCM と Analytics を使う方法について書いていきます.
root の build.gradle(これは公式のやつと変わらない)
buildscript { ext.kotlin_version = '1.2.51' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.3' classpath 'com.google.gms:google-services:3.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { google() jcenter() }}app/build.gradle
apply plugin: 'com.android.application'apply plugin: 'kotlin-android'android { compileSdkVersion 27 defaultConfig { applicationId "net.yuzumone.test" minSdkVersion 21 targetSdkVersion 27 versionCode 1 versionName "1.0" buildConfigField("String", "APP_ID", "\"${System.env.FCM_APP_ID}\"") buildConfigField("String", "API_KEY", "\"${System.env.FCM_API_KEY}\"") } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }} dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.google.firebase:firebase-messaging:17.1.0'}Application
class TestApplication : Application() { override fun onCreate() { super.onCreate() FirebaseApp.initializeApp(this, FirebaseOptions.Builder() .setApplicationId(BuildConfig.APP_ID) .setApiKey(BuildConfig.API_KEY) .build(), getString(R.string.app_name)) }}ポイント
- buildConfigField を使用して環境変数から BuildConfig へ APP_ID を読み込む
- Application クラスで FirebaseApp#initializeApp を呼び,APP_ID と API_KEY を入れる
これだけでとりあえず FCM は使えるようになる. 環境変数に値を設定するのを忘れずに.
Analytics
Section titled “Analytics”FCM にものに追加で設定する必要がある.
app/build.gradle
android { defaultConfig { // 追加 resValue("string", "google_app_id", "\"${System.env.FCM_APP_ID}\"") }} dependencies { // 追加 implementation 'com.google.firebase:firebase-analytics:16.0.1'}上に示している通り,Analytics を使うには string.xml に google_app_id という name で APP_ID を追加で設定する必要がある. string.xml に直で書くと意味がないので,resValue を使用して string.xml に値をセットするようにしてみた. とりあえずこれでエラーが出なくなったので OK っぽい.