This Android Studio project builds DaxUI from reconstructed Java and the supplied resources. It is a reconstruction, not the original source tree, and device-level equivalence has not been established.
Open this android-studio folder in Android Studio. Use JDK 17 or 21, install Android SDK Platform 35 and Build Tools 34.0.0, and let Gradle sync. local.properties currently points to the SDK installed in this workspace; on another machine let Android Studio regenerate it.
./gradlew :app:assembleDebug :app:assembleReleaseOutputs:
app/build/outputs/apk/debug/app-debug.apk— signed with the development debug key.app/build/outputs/apk/release/app-release-unsigned.apk— requires your signing configuration.
The original package, min SDK 28, target SDK 29, version code 29, version name DAX3_3.5.5.12_r1, application, three activities, tile service, intent filters, and usesNonSdkApi declaration are retained. Compile SDK is 35. The original manifest has no launcher category. For Android Studio Run, choose Specified Activity → com.dolby.daxappui.MainActivity. Installing this APK over the original requires the original signing identity, which was not supplied.
The app depends on a device/ROM providing the Dolby audio effect and allowing its hidden framework API calls. Compiling hidden-api does not provide a Dolby engine or grant system privileges. A normal emulator cannot establish functional audio equivalence.
The root Android.bp builds module DaxUI from Java using the platform APIs, platform signing, privileged system_ext installation and the MusicFX override. Replace your old DaxUI prebuilt module and keep daxService. See AOSP integration instructions for the exact steps and validation limits.
app/src/main/java: 26 editable Dolby Java files representing all 49 original Dolby Smali classes. Inner classes and three synthetic lambdas are folded into their enclosing sources; D8 regenerates lambda implementation classes.app/src/main/res: the 853 original resource files, with documented build adaptations and additional defaults. There were noassets, JNI libraries, or original DEX/APK files in the supplied extraction.hidden-api: two compile-only Android API declarations. Their throwing bodies are compiler scaffolding, not application implementations, and are verified absent from the APK.reference/automatically-reconstructed: 588 raw JADX Java files covering the entire extraction, including bundled libraries. This directory is deliberately outside compiled source sets.reference/original-extraction.zip: an unchanged archive of the supplied Smali, resources, manifests and Apktool metadata, including unreachable and incomplete original code.docs/class-inventory.csv: every one of the 1,281 Smali classes, its SHA-256, method count, corresponding Java source, and build disposition.method-inventory.csvindexes 9,731 methods.docs/java-reconstruction.patch: raw decompiler output versus the final compiled Java.- MANUAL_REVIEW.md: repairs, approximation boundaries, library differences, and device validation work.
Published Android Support 28.0.0 AppCompat, Design, and Leanback dependencies supply the library implementations. They preserve the legacy package names and provide classes referenced by XML; they are not proven identical to the stripped versions in this extraction. All extracted library code remains available under reference.
Both debug and unsigned release builds pass, including release vital lint with narrowly documented original-resource exceptions. See docs/build-verification.txt. Debug signing and the packaged manifest were inspected. All 46 non-lambda original Dolby class names are present in the packaged DEX files; the three lambdas are regenerated. No compile-only Android classes are packaged.
python3 verification/check_control_flow.pyWith Java and javac on PATH (or JAVA_HOME set), this runs 21 assertions against the actual repaired method bodies using minimal JVM test doubles. It checks equalizer touch selection, bounds, gain interpolation/clamping/writeback, headset/USB/Bluetooth broadcasts, ignored actions, and HDMI overlay updates. It is not an Android UI or DSP integration test. No physical-device or emulator run was performed.
Reconstruction used Smali 2.5.2 assembly followed by JADX 1.5.1, symbolic resource replacement from public.xml, manual instruction-level repairs, and iterative resource/Java compilation. The build uses AGP 8.7.3 with Gradle 8.9. The wrapper distribution has a pinned SHA-256.