Windows から AWS Amplify で Android アプリの作成体験 2

# はじめに

以下の続きとして、

https://qiita.com/baku2san/items/4c097f06865bab9b3d21#%E3%83%93%E3%83%AB%E3%83%89%E3%81%A8%E3%83%86%E3%82%B9%E3%83%88

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/99677eeb-6f2c-8abb-8dcc-700cb1f03130.png)

これを実施中。ただし以下理由で苦戦中
- 知識不足
- チュートリアルが古過ぎて、そのまま実行しても warning/error 有で、調査＆対処が必要

今回は以下

https://aws.amazon.com/jp/getting-started/hands-on/build-android-app-amplify/module-two/

# 学習内容 モジュール２
## 新しい Amplify プロジェクトを初期化する
### Amplify CLI のインストール
前回、別ルートから必要だと思って実施済みなので飛ばす

https://qiita.com/baku2san/items/4c097f06865bab9b3d21#amplify-cli-%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

Versionはチュートリアルの 4.29.4 よりずいぶん進んでおり、チュートリアルが古くなってることを思い知らされる    

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/9ea4ee6b-5557-4bbe-c651-49d0a26eabb5.png)
自環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/b737ba0e-31f2-3d10-0678-f69dfa60300f.png)

## プロジェクトに Amplify ライブラリを追加する
amplify バックエンドを初期化する
### 指示に従ってカレントディレクトリを移動すると、エラー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/4962738d-7f16-60fd-7bc9-dac14901f29e.png)

検出してくれた root folder に移動してから以下で開始

> amplify init

### amplify init
Note がなんか不安を掻き立てるが、質問に従って進めていく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/b1cc33e6-af7f-8a65-cb83-2784ae6ffd11.png)
- 環境名入力：適当に testenv
- エディター選択：Android Studio インストールしたばかりだが、Visual Studio Code にしておく
- 認証選択：AWS profile 
    - 初なので、新規ユーザー作成へ：ここでブラウザに飛ばされて、ルートユーザーでのログインを促される<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/690601bf-f765-1dd4-cb98-7af422b2a2ca.png)
    - ログインしたらコンソールが表示されるので、ターミナルへ戻って Enter を押して続ける<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/f3746533-5822-ac72-fd06-39288a110524.png)<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/fe886c62-cd14-5735-d8cb-8f7ba9851aae.png)
- リージョン選択：東京を選択<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/22bcb2e4-3b64-7e60-6e3f-e4cc7ff1d816.png)<br>[リージョン詳細はこちら](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)
- IAM user 作成：default 名称の提示のまま Enter でブラウザーへ飛ばされて作成処理<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/cbf54dd9-3d5e-c412-7806-0bae1348c095.png)<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/c7e1e072-765d-61ac-4975-667ba6d83c1e.png)<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/eed9cd8f-db3f-623e-13bd-1d5ef7618405.png)<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/33be637f-a194-39e8-c8c1-366eecb37c80.png)<br>)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/b696f8f9-9a93-77c2-5ce1-88f3cb64de7c.png)<br>アクセスキーID/シークレットアクセスキー をコピーしたら、ターミナルに戻って Enter で継続
- アクセスID と シークレットアクセスキーを入力<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/afa49c95-4daa-8df2-c154-04631ad42d02.png)
- プロファイル名を入力：適当につける
- 利用するプロファイルを選択：↑で作成したものを選択
- しばらく待って完了<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/e286cc66-f774-4b45-45bd-414a84dfbefc.png)


## 実行時に Amplify ライブラリを初期化する
### プロジェクトに Amplify ライブラリを追加する
buildscript のところは追加しても問題ないが、allprojects の部分を追加するとエラーになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/2445d711-b5af-a5bb-4d3d-b38c2a903341.png)

#### エラー対処法
build.gradle の allprojects{} で定義するのではなく、setting.gradle になってる
で、確認すると、Template としては修正済みなので、特に修正不要な感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/7a8555ca-701a-dd5a-2590-ea8759cd4943.png)

allprojects{} を削除して、Gradle の同期 (Sync Now or Try Again）して成功確認<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/165a17fe-c4df-8e85-f591-8da1e9346261.png)

公式ドキュメント的には以下

https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:centralized-repository-declaration


#### Amplify framework core dependency の追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/b423178d-0c97-d79d-5f17-67571d72fdc4.png)
チュートリアル上は、1.4.0 だが、だいぶ古そうなので、以下を確認して、最新版にしておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/05d9dd83-e113-6c3a-2f53-ecba1cf30159.png)

https://mvnrepository.com/artifact/com.amplifyframework/core

### 実行時に Amplify を初期化する
チュートリアルの指示通りに進める

#### Warning の修正
- 以下が label 定義が冗長と出たので、片方削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/5d78c5df-6723-21c8-2046-328d8a4aba3c.png)

- uses-permission は、application tag より前に、らしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/683eab63-5117-31d5-050d-98b2a3bda4b3.png)

#### resources で知ったこと
> android:label="@string/app_name"

res/values/settings.xml から取得

> android:theme="@style/Theme.AndroidGettingStarted"

res/values/themes/thems.xml から取得。
res/values-night になると、dark theme みたいな感じ？ 詳細は [ここ](https://developer.android.com/guide/topics/ui/look-and-feel/darktheme?hl=ja)とか[この辺で](https://stackoverflow.com/questions/60147668/android-darkmode-value-night-not-working)

### 設定を検証する
Run (Shift + F10) で前回と同じく問題なく起動することを確認

# あとがき
少しずつ見えてきてる・・と信じたいところ

今日学習したこと
- Kotlin は Java からの発展
- Resouces 利用方法
- Android.Studio で 同一名ファイルが何故複数あるのか？
    - フォルダ単位のものを集めて見せてくれている
- gradle での、biuldscripts vs allprojects
> The **"buildscript"** configuration section is **for gradle itself** (i.e. changes to how gradle is able to perform the build). So this section will usually include the Android Gradle plugin.
The **"allprojects"** section is **for the modules being built by Gradle**.
- jcenter は廃止されて、mavenCentral へ
- Androidmanifest.xml で Application/Activity を起動してる。どんな関係があるのかはよくわからない
    - printIn() で Run タブで動いてるのは確認できた
- [ルートユーザー](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_root-user.html) と [IAM ユーザー](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users.html)。後者を使っておけば OK