AnnictのAndroidアプリを久しぶりに機能追加などした(技術編)
だいぶ間が空いてしまったが、前回の続きで技術的な話を書いていきます。
Android開発久しぶりなのでリハビリって感じです。
ライブラリ更新
久しぶりだったのでライブラリ等を全部最新にupdateしました
com.android.support
->androidx
android.arch
->androidx
Gradleのバージョンとかも上げたりしてたので、なんか丸1日くらいかかった記憶です。
Android開発やるぞー!って一日頑張ってたけど。ライブラリのバージョン上げたりして終わった
— きょこみ@k02 (@k_yokomi) November 2, 2019
Activity を Fragment化しBottomNavigationを導入
Activityで全部処理してたんですが、JetpackのNavigationを見て今期アニメ一覧をBottomNavigationで実装するためFragment化しました。 もともと単純なRecyclerViewだったのと、ViewModelなどしっかりArchitecture componentsに従って作ってたのでそんなに大変ではなかったです。
ハマった点としては、 KotterKnifeを使っていたのですが以下の問題がありViewBindingを使うように改修しました。
ただし、一度、findViewById()で見つけたViewはキャッシュ(メモ化)して、それ以後はキャッシュしたViewを返すようになっています。 Fragmentでは、Viewを生成するのは一回だけとは限りません。
Debug/Canaryアプリのリボン
開発用、リリース前確認用アプリに gradle-android-ribbonizer-plugin でリボンをつけていたが、CIだとうまく動いてなかったりでした。(これは自分の設定が悪い説ですが) またライブラリを最新にしようとしたら、かなり古くにつくってからメンテされていない様子でした。
なので代わりのものを探し、easylauncherを導入しました。
とりあえず動かすまでが、とにかく楽でした。色々位置とかも調整できて便利そう。
Android Architecture components
Jetpackという呼び名が存在する前?のAndroid Architecture components は、ほぼそのまま移行できて助かりました。 RoomやPagingやViewModelなど。
flipperを導入
roomの保存先であるSQLiteのdatabaseを見たかったので。
基本的にGetting Started見てやればいいんですが、noopでいい感じにreleaseビルドにいれなくて済むのか〜と思ったら、すべてのプラグインには対応してないということだったので、以下を参考に対応しました。
Databaseはこんな感じでみれる便利。
Networkはこんな感じでみれる便利。
Aboutページ、ライセンス表記
Aboutページとライセンス表記を com.mikepenz:aboutlibraries で作っていたのですが、minifyされた際にうまく生成できておらず、設定が面倒すぎて挫折しました。
簡素ですが、導入も楽なので ライセンスは play-services-oss-licenses
を導入しました。
Aboutページは、自分で書いてもまあ良かったんですが com.github.medyo:android-about-page
で十分ほしいものが楽に作れそうだったのでで導入しました。
CI周り
BitriseのCIとか設定が生きていたので、ストアへの公開が自動化されてて過去の自分に感動しました。
もし今からやるならGithubActionsとかなんですかね〜?(知らないけどw
おわり
大体こんな感じでした。