| ツール | バージョン |
|---|---|
| Android Studio | 最新安定版 |
| JDK | 17 |
| NDK | 27.0.12077973 |
| CMake | 3.18.1 以上 |
NDK と CMake は Android Studio の SDK Manager からインストールできる。
core:pcapplusplus モジュールは JNI 経由で PcapPlusPlus を使用する。ビルド前に以下のコマンドでプリビルドライブラリをダウンロードする。
./gradlew setupこのタスクは GitHub Releases から PcapPlusPlus v22.11 の Android 向けプリビルドをダウンロードし、core/pcapplusplus/libs/ に展開する。対応 ABI は以下の通り。
armeabi-v7aarm64-v8ax86x86_64
# デバッグビルド
./gradlew assembleDebug
# リリースバンドル
./gradlew bundleReleaseリリースビルドにはリポジトリルートに keystore.properties が必要となる。
keyAlias=...
keyPassword=...
storeFile=...
storePassword=...# 全モジュール
./gradlew test
# 特定のテストクラスのみ
./gradlew :core:data:test --tests "*.DefaultAllowlistRepositoryTest"テストフレームワーク: JUnit 4、Mockito、Kotlin Coroutines Test
# 実機またはエミュレーター接続時
./gradlew connectedAndroidTestテストフレームワーク: AndroidX Test、Room Testing
core:data と core:database モジュールでは、Gradle Managed Devices を構成している。
| デバイス名 | デバイス | API Level | イメージ |
|---|---|---|---|
pixel6api29 |
Pixel 6 | 29 | |
pixel6api33 |
Pixel 6 | 33 |
Kover でカバレッジを計測する。対象モジュールは core:data、feature:rule_change、feature:blocklog。
./gradlew koverXmlReportDebugSpotless でフォーマットを統一する。
| 言語 | フォーマッター | スタイル |
|---|---|---|
| Kotlin | ktfmt 0.56 | Google スタイル、最大行幅 80 文字 |
| C++ | clang-format 18.1.3 | Chromium スタイル |
| Gradle | groovy-eclipse | デフォルト |
| Markdown | prettier | デフォルト |
# フォーマットチェック
./gradlew spotlessCheck
# フォーマット適用
./gradlew spotlessApplyコミット前に spotlessApply を実行すること。CI (check.yml) で毎 push 時に spotlessCheck が実行される。
./gradlew lintGitHub Actions で以下のワークフローを実行する。
- トリガー: 毎 push
- 内容: clang-format 18 のインストール後、
spotlessCheckを実行
- トリガー: 毎 push、毎週月曜日 (UTC 0:00)
- 内容: Java 17 / 21 / 25 のマトリックスで
assembleDebugを並列実行
- トリガー:
mainへの push(**.ktファイルの変更時) - 内容:
koverXmlReportDebugを実行し、カバレッジレポートを Codecov にアップロード
Renovate で依存関係を自動更新する。
- minor/patch アップデートは自動マージ
- major アップデートは手動レビュー
設定は renovate.json を参照。
Fastlane を使用してアップロードする。
- Play Console へアップロード用の Service Account を作成し、JSON をリポジトリルートに配置する
fastlane/metadata/androidにリリースノートを作成する
bundle config --local path vendor/bundle
bundle install
bundle exec fastlane android deploydeploy レーンはリリース AAB をビルドし、Google Play の beta トラックにアップロードする。
全依存関係は gradle/libs.versions.toml で管理している。