What problem does it solve?
Building a Power Apps Mobile extension's Android Kotlin module into a DEX binary that the wrap runtime can load via DexClassLoader requires a correctly configured standalone Gradle build, pinned toolchain versions, and strict manifest alignment — a process that is error-prone when done manually.
Core Features & Use Cases
- Staged Standalone Build: Copies the canonical
android/ source into a throwaway staging directory, pins the React Native react-android dependency, compileSdk 35, and a checksum-verified Gradle 8.13 wrapper, leaving the original source untouched.
- Runtime Constraint Validation: Verifies DexClassLoader constraints before building — no
@ReactModule annotations, a public no-arg ReactPackage constructor, correct getName() and package FQN matching manifest.json, and no SDK-era symbols.
- AAR-to-DEX Compilation: Runs
gradlew assembleRelease, extracts classes.jar, and invokes d8 --min-api 24 (resolved by absolute path from the Android SDK) to produce ppmplugin/staging/android/<Pascal>Plugin.dex, with optional JNI .so extraction.
- Use Case: After generating a
.ppmplugin manifest for a Power Apps Mobile control, run this skill to produce the Android binary, then hand off to /assemble-ppmplugin to zip the final bundle.
Quick Start
Build the Android DEX binary for my PAM control from the staged manifest and Kotlin source.