1.7 KiB
Building DiPlay
Requirements: JDK 25, Android SDK 37, NDK 28.2.13676358 and the included Gradle wrapper.
Source and CI builds
./gradlew :shared:testDebugUnitTest :common:testDebugUnitTest :mobile:lintDebug :mobile:assembleDebug
The resulting source-only APK contains no accessory identity. Standalone CarPlay requires runtime authentication provisioning. Tests generate synthetic identities at runtime; no test private-key files are tracked.
Local release packaging
Provide an external asset directory using DIPLAY_AUTH_ASSETS_DIR. The directory must contain exactly the intended runtime files under offline-mfi/identity.pk8 and offline-mfi/certificate.p7b. Neither file belongs in Git. The build permits those two files only when this explicit input is set and rejects unexpected credential containers elsewhere in APK assets.
Set ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, and ANDROID_KEY_PASSWORD locally for your Android signing key. Never commit these values or the keystore. Different signing keys cannot update an existing project-signed installation.
./gradlew :shared:testDebugUnitTest :common:testDebugUnitTest :mobile:lintRelease :mobile:assembleRelease
Output: mobile/build/outputs/apk/release/mobile-release.apk. The release APK deliberately contains the experimental identity described in the notices; it is extractable by recipients. The separate Android signing key is not included. The retired build-beta.py helper is not used; this Gradle workflow uses explicit environment inputs.
The public release source archive corresponds to the tagged source and excludes runtime identities, signing keys, local configuration and build output.