2.7 KiB
Repository Guidelines
Project Structure & Module Organization
This repository is a multi-module Android project defined in settings.gradle. App modules such as YX_Voice, YX_Radio, YX_Factory, and YX_SystemUI follow the standard src/main, src/test, and src/androidTest layout. Shared code lives in SDK and base modules like YX_BluetoothSDK, YX_AutoMotiveSDK, YX_Lib_CommonBase, and YX_Lib_UIStyleBase. Prebuilt platform jars are stored in sdklibs/, generated APKs are copied into third_apps/<Module>/, and root scripts such as build_apk.sh handle CI-oriented packaging.
Build, Test, and Development Commands
Use the Gradle wrapper from the repository root.
.\gradlew cleanclears root and module build outputs..\gradlew :YX_Voice:assembleDebugbuilds one app module for local iteration..\gradlew :YX_BluetoothSDK:testDebugUnitTestruns one module's JVM tests..\gradlew :YX_Factory:connectedDebugAndroidTestruns instrumentation tests on a connected device.bash build_apk.sh debugorbash build_apk.sh releaseperforms the multi-APK packaging flow used forthird_apps/.
Prefer module-scoped commands over full-repo builds because the workspace is large.
Coding Style & Naming Conventions
Follow existing Android Java and Gradle conventions: 4-space indentation, braces on the same line, UpperCamelCase for classes, lowerCamelCase for methods and fields, and SCREAMING_SNAKE_CASE for constants. Keep package names under com.yaxon... or the existing module namespace. Name resources by type and feature, such as activity_back_car.xml, ic_launcher.png, or radio_widget_info.xml.
Testing Guidelines
Unit tests live under src/test/java; device tests live under src/androidTest/java. Existing test classes use the ExampleUnitTest and ExampleInstrumentedTest pattern, but new tests should use feature-specific names such as BluetoothPbapClientTest. Add or update tests for module behavior changes when practical, especially in shared SDK modules.
Commit & Pull Request Guidelines
Recent history uses scoped subjects like feat(YX_SystemUI): ..., fix(YX_Radio): ..., and modify(YX_Voice): .... Keep that format: <type>(<module>): <summary>. Pull requests should state the affected modules, user-visible behavior changes, test coverage or device validation performed, and screenshots when UI layouts or drawables change.
Security & Configuration Tips
Do not commit real secrets, device-specific local.properties, or modified signing material. config.gradle currently references shared signing and SDK paths, so treat local environment changes as workstation-only unless the team explicitly standardizes them.