generated from LeoAndo/AndroidAppTemplate
-
-
Notifications
You must be signed in to change notification settings - Fork 0
[WIP] architecture
Leo edited this page Aug 2, 2023
·
3 revisions
アプリのアーキテクチャは以下のガイドラインを意識しています。
https://developer.android.com/topic/architecture
-
各環境への切り替えはproduct flavorを使って制御します PR
-
stub環境でのテスト PR
-
API KEYなどの秘匿情報は、
local.properties
で管理する運用にしています。 -
ui layer
- ComposeのPreviewを行いやすくするために、StatelessなComposableを作成しています。
- Composableの引数にListなどの不安定な型の値を渡さない設計にする 理由はここ
- XXXEffect関数内で直接ラムダ式を呼び出すのは安全でないため、必ずrememberUpdatedStateを使う
- シンプルなロジックであればViewModelで直接Repositoryを呼び出します。
- エラーハンドリング(try catch)はViewModelで行います。
- Threading
- ViewModel はStateHolderに該当します。シンプルな画面であれば、ViewModelなしで、
androidx.compose.runtime.saveable.rememberSaveable
を使う手もありかもしれない。
-
domain layer
- Android Platform API(packageがandroid.xxで始まるもの)に依存しない運用にしています。
- Threading
- Usecaseは、Dispatchersに(Default Thread)を使う運用にします。
- Model(必要に応じてSerialize)はこのレイヤで持つ. Parcelable使う場合、Android APIに依存するので..。
- ViewModelで同じロジックを作成したり、複数のRepositoryを呼び出してViewModelの処理が肥大化する場合はXXXUseCaseクラスを作成し処理を切り分ける運用にする。
-
data layer
-
Proguard / R8
- Stableのライブラリを使わないと、本番リリース時に思わぬトラブルを招くので、alpha版のライブラリは極力使わない。
- 以前、Navigationライブラリのalpha版利用時に痛い思いをした。https://github.com/LeoAndo/AndroidAppTemplate/issues/40#issue-925121453