Android
Rayact apps run on Android as a native activity rendering through Vulkan (rlvk backend). The engine ships prebuilt — rayact prebuild generates a Gradle project that links librayact.so; your machine never compiles C++.
Prerequisites
- Android SDK with platform tools (
adbon PATH). - JDK 17+ for Gradle.
- A device or emulator running Android 8.0+ (API 26). 0.0.5 ships
arm64-v8aengine binaries — use a physical device or an arm64 emulator image.
rayact doctor checks all of this and names anything missing.
Fastest loop: the prebuilt dev app
No local Android build at all — install the release's dev app (Expo Go-style host) and point it at your dev server:
npm run dev # start the dev server (QR code in the TUI)
npm run android # rayact dev --android: installs the dev app + connects over USBThe dev app scans the QR (or uses adb reverse, set up for you) and hot-reloads your project. Shake the device for the dev menu.
Your own dev client
When you add native modules or need your own application id, generate the native shell once and build a debug dev client (expo-dev-client style):
npm run prebuild # rayact prebuild: generates android/ from @rayact/template-android
npm run android:dev-client # rayact build --debug --android --installandroid/ is plain Gradle — commit it. Prebuild substitutes your app name/id, drops the prebuilt librayact.so + libc++_shared.so into app/src/{debug,release}/jniLibs/arm64-v8a/, and writes rayact-assets/runtime/native-modules.json for module autolinking.
Release build
npm run build:android # rayact build --release --android
npm run build:android:install # …and install to the connected deviceProduces a release APK with the bundle compiled to QuickJS bytecode and staged into APK assets (app.qjsbc + your CSS under assets/runtime/).
Debug-signed releases
0.0.5 release APKs are signed with the debug keystore — fine for sideloading and testing, not for Play submission. Configure your own signingConfig in android/app/build.gradle before shipping to a store.
Debugging
adb logcat -s rayact— engine + JS console output.- Chrome DevTools:
rayact devexposes CDP on port 9229;adb forward tcp:9229 tcp:9229, then addlocalhost:9229inchrome://inspect. Element tree, styles and console work against the native node tree. See the dev platform guide.