tsukko / contract-management-sample-android

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PoC of Android

memo

Kotlinにて、MVVM実装やいくつかのライブラリの実装勘を磨くための練習用 アイコンなど一部の画像ファイルは未コミットです。なのでgit cloneしただけではビルド不可 名称なども適当なものに変えています。

試していること

  • スプラッシュ画面
  • ログイン画面
    • メールアドレス&パスワード、バリデーションあり
    • SNSログイン連携(Facebook、Twitter、Line)
  • ユーザ画面
    • データをアプリ内部に保存
  • 契約一覧画面
    • 内部DBから一覧を表示
    • バックグラウンドでサーバからAPIでデータを取得
    • 取得後、画面更新
  • 登録画面
    • 登録時の選択可能項目もサーバから取得
    • 書類をカメラで撮影しサーバに格納 →登録種類によって、複数画面を用意する
  • 詳細画面
    • 上記の内容をよしなに表示する

Overview

  • Resource files added by Android Studio plugin.
    Android Drawable Importer
    1種類の解像度の画像をAndroidに対応した各解像度に変換して、自動に配置してくれるプラグイン

  • Architecture
    The app uses a Model-View-ViewModel (MVVM) architecture.
    This sample showcases the following Architecture Components:
    Room
    ViewModels
    LiveData

Activityは回転させない想定で作っている。

Library

Usage policy

  • 基本的に、google純正ライブラリを使用
  • rxjava2(ReactiveX)とretrofit2(square)、SNS連携用のライブラリ
  • ライブラリは全て最新バージョンを使用

Usage library list

バージョン等の詳細は、app/build.gradle、versions.gradle を参照

// Kotlin Standard Library
// https://kotlinlang.org/api/latest/jvm/stdlib/index.html
org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin

// Android Jetpack関連
// AndroidX (Android Support Libraryの代替の拡張ライブラリ)
// https://developer.android.com/jetpack/androidx/
androidx.recyclerview:recyclerview:$versions.support
androidx.cardview:cardview:$versions.support
com.google.android.material:material:$versions.support
androidx.constraintlayout:constraintlayout:$versions.constraint_layout

// Android KTX (Kotlin 拡張機能セット、主にコーディング補助)
androidx.core:core-ktx:1.0.1
androidx.fragment:fragment-ktx:1.0.0

// LifeCycle (ライフサイクルのステータスに応じてアクションを実行してくれる)
// https://developer.android.com/jetpack/androidx/releases/lifecycle
androidx.lifecycle:lifecycle-runtime:$versions.lifecycle
androidx.lifecycle:lifecycle-extensions:$versions.lifecycle
androidx.lifecycle:lifecycle-compiler:$versions.lifecycle
androidx.lifecycle:lifecycle-viewmodel-ktx:$versions.lifecycle

// Room (SQLiteライク)
// https://developer.android.com/jetpack/androidx/releases/room
androidx.room:room-runtime:$versions.room
androidx.room:room-compiler:$versions.room
androidx.room:room-rxjava2:$versions.room
io.reactivex.rxjava2:rxandroid:$versions.rx_android
io.reactivex.rxjava2:rxkotlin:$versions.rxkotlin

// Navigation Architecture Component (fragmentの画面遷移を制御するライブラリ)
// https://developer.android.com/guide/navigation/
// 使ってみたが、optionMenuやBottomNavigationViewでFragment遷移する仕様とは、合わないと思われる。
android.arch.navigation:navigation-runtime:$versions.navigation
android.arch.navigation:navigation-fragment:$versions.navigation

// retrofit2 (API関連)
com.squareup.retrofit2:retrofit:$versions.retrofit
com.squareup.retrofit2:converter-gson:$versions.retrofit
com.squareup.retrofit2:adapter-rxjava:$versions.retrofit
com.squareup.okhttp3:logging-interceptor:$versions.okhttp

// snsログイン連携 (今はアイコンを出すためだけに取り込んでいる)
com.facebook.android:facebook-login:4.40.0
com.twitter.sdk.android:twitter-core:3.1.1
com.twitter.sdk.android:twitter:3.1.1
com.twitter.sdk.android:twitter-mopub:3.1.1
com.linecorp:linesdk:5.0.1

// GoogleMapを使うために追加する(実際は未使用)
com.google.android.gms:play-services-maps:16.1.0

Development tools

開発で利用したツール一覧

  • Android Studio
  • Atom(Editor)
  • Xcode(kotlin native確認用)
  • Chrome(API確認用)
  • Postman(API確認用)
  • FileAlpaca(画像編集用)
  • Digital Color Meter(Mac純正のカラーピッカー)
  • Sourcetree(ソース管理、簡易diff) ※ソース管理はgit-flowで行っていますが、ところどころ雑になっています。

Note

About “extract_data_binding_error.rb”

dataBinding関連のビルドエラーは、build logからは追いづらい。 以下のコマンドを実行して、エラー個所を抽出することで、解析している。

./gradlew assembleDebug 2>&1 | ./extract_data_binding_error.rb

API

  • モックサーバとして、JSON serverで確認していいます。 (master branch) MyInsurancePortal/11_api_sample
  • 作成しているモック
    • 1_契約(Self) - 02.契約一覧取得(Self) (/api/v1/policies/self)
    • 1_契約(Self) - 03.生保契約詳細取得(Self) (/api/v1/policies/life/self/1)
    • 2_契約(Wise) - 01.契約一覧取得(Wise) (/api/v1/policies/wise)
    • 2_契約(Wise) - 02.生保契約詳細取得(Wise) (/api/v1/policies/life/wise/1) ※POST以外全て
  • 「あなたの保有契約」画面で、「1_契約(Self) - 02.契約一覧取得(Self) 」が、 保有契約詳細画面で、「1_契約(Self) - 03.生保契約詳細取得(Self) 」がよばれます。
  • WiseのAPIは、用意しただけな状況です。
  • 取得できない場合は、内部DBのデータを表示します。
  • 内部DBとの連携が中途半端な状態です。(先に内部DBを用意したため、APIと項目があっていない箇所があり、統一しきれていないです)

About

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Kotlin 99.7%Language:Ruby 0.3%