Skill: Bare Android AAR Generation
Package a bare React Native app into an Android AAR and publish it for native host consumption.
Quick Command
npx brownfield package:android --variant release --module-name <android_module_name>
npx brownfield publish:android --module-name <android_module_name>When to Use
- Building Android artifact from bare RN app
- Publishing AAR for host app dependency resolution
Prerequisites
- bare-quick-start.md completed
- Dedicated Android library module exists (
com.android.library) - Brownfield Gradle plugin configured
- RN and Hermes dependency versions aligned with
package.json
Step-by-Step Instructions
Progress checklist:
- [ ] Library module verified
- [ ] Plugin + autolinking configured
- [ ] Publishing configured
- [ ] package:android succeeds
- [ ] publish:android succeeds
- [ ] Host app resolves Maven coordinate- Verify target module is a library module and will be passed as
--module-name. - Ensure module plugins include:
com.android.libraryorg.jetbrains.kotlin.androidcom.facebook.reactcom.callstack.react.brownfieldmaven-publish
- Ensure autolinking is enabled in module:
react {
autolinkLibrariesWithApp()
}- Add/verify facade bootstrap class in artifact module (host app should call only this facade):
object ReactNativeHostManager {
fun initialize(application: Application, onJSBundleLoaded: OnJSBundleLoaded? = null) {
loadReactNative(application)
val packageList = PackageList(application).packages
ReactNativeBrownfield.initialize(application, packageList, onJSBundleLoaded)
}
}- Package AAR:
npx brownfield package:android --variant release --module-name <android_module_name>
- Publish to Maven local:
npx brownfield publish:android --module-name <android_module_name>
- Validate host app resolves
groupId:artifactId:versionwithmavenLocal()enabled.
Stop Conditions
Proceed only if:
- package and publish commands exit with code
0 - host app resolves published coordinate
If Failed
- Re-check module type (
com.android.library) and module-name flag - Re-check plugin configuration and
maven-publish - Clean/rebuild Android project and retry package/publish
- Do not proceed to runtime integration until coordinate resolution passes
Canonical Docs
Common Pitfalls
- Using app module instead of library module for packaging
- RN/Hermes dependency mismatch vs
package.json - Missing
mavenLocal()in host dependency resolution
Related Skills
- bare-quick-start.md - Bare setup prerequisites
- bare-android-native-integration.md - Bare Android host integration