AndroidでFirebaseにいちばんシンプルにテキストをInsertする

# はじめに
WebからAndroidに入るような人って、まず、Androidの端末からHelloWorldを、Firebaseに送りたいのよ。なんでかQiitaにもUdemyにもTechpitにもシンプルにミニマルに書いてあるってないのよー

# 前提条件
全部最新版でいい（とりあえず）
・AndroidStudioは一番新しいのを入れろ
・Targets API level 16+ を入れろ
・Uses Gradle 4.1+ を入れろ
・Uses Jetpack (AndroidX) を入れろ
・compileSdkVersion 28+ を入れろ

# Androidプロジェクト作成
## Create New Project
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/f5125b45-7783-ac4b-5a9f-c66e0ee380fa.png)
## Empty Activity
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/7582f0b0-2efb-a726-95cb-5d58b5a63f19.png)

画面の表示や説明を見てつぎのステップが予想できるようになることが肝要だ
Name: `HelloFirebase`
Package name: `com.yoshi.hellofirebase` [アプリケーションIDとは](https://developer.android.com/studio/build/application-id?hl=ja)
Language: `Kotlin`
SDK: `API30`（IDE上からエミュレータがダウンロードできる）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/ec79e27e-d37a-53da-877e-a5e00ad1984b.png)

## 確認
プロジェクトが作られた瞬間、Androidとしての最低限の動きはしてくれる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/86a38fc0-a840-89b1-5a9a-8905c7e6e8f7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/4f3693b3-d8e8-614a-2581-bfba2fb58b53.png)

# Add Firebase to your Android project
[参考(公式): Add Firebase using the Firebase console](https://firebase.google.com/docs/android/setup?authuser=0#console)

## Step1: Firebaseプロジェクトを作成
[Firebase console](https://console.firebase.google.com/) 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/d8dbe67d-70d6-aadc-5f03-e752e4ad4a1c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/ca874c1b-5bbf-8fc8-7f32-9311b65aa892.png)
googleアナリティクスアカウント持ってる人は指定して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/8eb4ab19-5e92-53e9-ff71-bf61878588d3.png)
Firebaseプロジェクト作成中！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/c8a260af-813a-0ad9-54e4-1abefe03095b.png)

## Step2: Register your app with Firebase
[Firebase console](https://console.firebase.google.com/) 

概要ページが開くので Android のマークをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/942c874c-9e81-2f91-c2cb-af1a8e234dfb.png)

Android パッケージ名: `com.yoshi.hellofirebase`
アプリのニックネーム: `hellofirebase`
デバッグ用の署名証明書 SHA-1: *****（以下参照）

```terminal:ターミナルで以下のコマンドを打ってSHA1をコピペする
AndroidStudioProjects\HelloFirebase> ./gradlew signingReport
  SHA1: 64:D5:B8:9A:D6:72:2B:6E:3B:DF:22:81:AE:6B:AF:BF:B6:B6:EE:55
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/99f31a6e-91eb-99db-087f-619b4318bbf2.png)
「アプリを登録」を押す

設定ファイル（google-services.json）のダウンロードと配置
もう書いてあるとおりなんだけど Project 表示に切り替えて app フォルダ配下に設定ファイルを移動。次へボタン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/b377cd42-ce3c-6b9a-47d2-c6c08bb58097.png)


## Step3: Firebase SDK の追加
Gradle 用の Google サービス プラグインは、ダウンロードした `google-services.json` ファイルを読み込みます。このプラグインを使用するよう、`build.gradle` ファイルを修正。

```diff:プロジェクトレベルのbuild.gradle（<project>/build.gradle）
buildscript {
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }
  dependencies {
    ...
    // Add this line
+   classpath 'com.google.gms:google-services:4.3.5'
  }
}

allprojects {
  ...
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    ...
  }
}
```



```diff:アプリレベルのbuild.gradle（<project>/app/build.gradle）:
plugins {
    id 'com.android.application'
    id 'kotlin-android'
+   id 'com.google.gms.google-services'
}

dependencies {
  // Import the Firebase BoM
+ implementation platform('com.google.firebase:firebase-bom:26.7.0')
  // Add the dependency for the Firebase SDK for Google Analytics
+ implementation 'com.google.firebase:firebase-analytics-ktx'
}
```

## Gradle sync
設定の適用みたいな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/5f0e34bc-af81-3cc8-3fb1-282a1cebc7c8.png)

# Connect your App to Firebase
https://firebase.google.com/docs/database/android/start?authuser=0#connect_your_app_to_firebase

## Create a Database
[Firebase console](https://console.firebase.google.com/) 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/da982600-62b0-bd33-0a78-9bb6c3d928aa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/f1284658-e143-f54a-4831-a59911b85ae8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/96b48b77-920a-af4c-4a26-93491a86c59c.png)
認証モードでやれたほうがいいけどとりあえず文字突っ込みたいだけなのでテストモードで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/c0f62781-ad53-7da7-4c2f-bcdeaee4841a.png)
とりあえず null レコードが表示されているらしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/b81b280e-8a15-6fe4-3cbd-288a0753dcce.png)

## Add the Realtime Database SDK to your app
```diff:databaseのlibraryインポートができるようになるのはコレ
dependencies {
    // Import the Firebase BoM
    implementation platform('com.google.firebase:firebase-bom:26.7.0')
+   implementation 'com.google.firebase:firebase-database-ktx'
}
```

## Write to your database
```diff:src\main\java\com\yoshi\hellofirebase\MainActivity.kt
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
+       val database = Firebase.database
+       val myRef = database.getReference("message")
+       myRef.setValue("Hello, World!")
    }
}
```


## 確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/86a38fc0-a840-89b1-5a9a-8905c7e6e8f7.png)
赤くなってたら単純なimportエラーなのでimportしましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/05131865-9b03-a9d9-0b05-8de8cd78eceb.png)
モニターしてるとリアルタイムで変わることを確認しよう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/06b140b4-71db-2937-5ffa-5cebba334038.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/b5ad22f6-93f3-6556-b4dc-074ba44f28c8.png)

# シミュレータが動かなくなったら
## Wipe Data
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/e295433f-58f2-7557-f267-0b832dca02b3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/580e506a-e57f-5b60-621b-3d61f16eb398.png)