- Code Reader は CameraX と ML Kit を使うバーコード読み取り用 Android アプリ。モジュールは
:appのみ。 - Kotlin、Android Views、View Binding を使用する。パッケージ名と名前空間は
net.mm2d.codereader。 - アプリの概要は
README.mdを参照する。SDK の設定と依存関係のバージョンは、変更時にapp/build.gradle.ktsとgradle/libs.versions.tomlで確認する。
app/src/main/kotlin/net/mm2d/codereader/: Activity、UI ロジック、ViewModel。code/CodeScanner.ktとcode/CodeAnalyzer.kt: CameraX のライフサイクル管理と ML Kit による画像解析。result/: 読み取り結果とその UI。permission/: カメラ権限の処理。setting/: 設定。util/とextension/: 共通処理。app/src/main/res/: XML レイアウト、テーマ、文字列。画面に表示する文言はリソースに置き、翻訳対象の文言を追加・変更する場合はvalues/strings.xmlとvalues-ja/strings.xmlの両方を更新する。app/src/main/AndroidManifest.xml: アプリのコンポーネントと権限。app/src/debug/にはデバッグ専用の実装がある。
- 周辺の Kotlin と XML の書き方に合わせる。
.editorconfigは UTF-8、LF、スペース 4 個のインデント、1 行 120 文字を指定している。Kotlin にはリポジトリの ktlint 設定を適用する。 - 読み取り処理を変更する際は、カメラのバインドと解除、Executor の終了処理、
ImageProxy.close()のタイミングを保つ。CodeAnalyzerは ML Kit の処理完了後に各フレームを閉じる。 - 新しいフレームワークや抽象化を加える前に、既存の View Binding、設定、権限処理の実装を確認する。
- デバイスなしで検証できるロジックには、対象を絞ったテストを追加する。現時点では
src/testとsrc/androidTestにテストソースはない。
- アプリを変更したら
./gradlew :app:assembleDebug、Android Lint の確認には./gradlew :app:lintDebugを実行する。 - Kotlin または Gradle スクリプトを変更したら
./gradlew ktlintを実行する。このタスクはisIgnoreExitValue = trueなので、Gradle が成功しても出力に違反がないか確認する。 - テストを追加したら
./gradlew :app:testDebugUnitTestを実行する。カメラ、権限、UI の変更は、利用可能ならエミュレータまたは実機でも該当する操作を確認し、実施できなかった確認は報告する。 - 依存関係は
gradle/libs.versions.tomlで管理する。変更した場合は./gradlew dependencyGuardを確認し、リリース用の依存関係が意図したものだと確認できた場合に限り./dependency-guard-baseline.shでベースラインを更新する。