Configuring & Rebuilding the Android App
Point the app at your own backend by editing one file, then decide whether you actually need a rebuild.
1. Editing www/settings.ini
xCRUD_Nova_Android_App/www/settings.ini is plain key = value pairs grouped into [sections]. As the file's own header comment puts it: "Edit this file and reload (or re-sync the app) - nothing here needs a rebuild or a code change to the app itself."
[backend]
url = https://yourdomain.com/xcrud_8
demo_username = admin
demo_password = admin123
[branding]
app_name = xCRUD Nova
tagline = Your xCRUD Nova/Pro dashboard, on your phone.
[purchase]
url =
label =
[documentation]
url = https://yourdomain.com/xcrud_8/docs
label = Documentation
| Key | Meaning |
|---|---|
[backend] url | Required. The xCRUD Nova/Pro server this app talks to - an absolute URL, no trailing slash, e.g. https://yourdomain.com/xcrud_8. Everything the app shows (login, then the live dashboard) is fetched from this one URL. Leave blank and the app shows a setup notice instead of a blank screen. |
[backend] demo_username / demo_password | Demo login credentials shown as a hint under the login form. Leave both blank once you point this at your own real, non-demo backend. |
[branding] app_name | The app name shown in the UI. |
[branding] tagline | A short tagline shown under the app name. |
[purchase] url | Shown as a floating call-to-action button on every screen. Set to an empty value to hide the button entirely - most self-hosters will want it blank, since it was a marketing/evaluation-demo feature, not something a buyer's own installed copy typically needs. Blanking it also flips off the "LIVE DEMO" banner. |
[purchase] label | Button text. Defaults to "Buy the xCRUD Nova server files" if left blank while url is set. |
[documentation] url | Shown as a second floating link, just above the purchase button. Useful whether this copy is a marketing demo or a buyer's own real install - set to an empty value to hide it. |
[documentation] label | Link text, e.g. "Documentation". |
2. Quick test vs. full rebuild
Two very different levels of effort, depending on what changed:
- Quick test - just reload. Changing
settings.inialone needs no rebuild and no code change to the app - reload the WebView (or re-sync the app) and the new backend URL/branding takes effect immediately. - Full APK rebuild. Needed only when you change native-shell things Capacitor itself controls - the app icon, splash screen, permissions,
appId/appNameincapacitor.config.json, or the Android project files themselves. Sync the web assets into the native project, then build:
npx cap sync android
Followed by building the APK either through Android Studio (open the android/ folder and Build > Build APK), or from the command line with Gradle:
cd android
./gradlew assembleDebug
3. CORS - usually nothing to change
The backend's XcrudConfig::$allowedOrigins already includes https://localhost (Capacitor's default WebView origin on Android) and http://localhost:8081 (the desktop remote_frontend_demo dev server's own origin) by default:
public static array $allowedOrigins = ['http://localhost:8081', 'https://localhost', 'http://localhost', 'http://127.0.0.1'];
That means most self-hosters pointing the stock app at their own backend need ZERO CORS changes. You only need to touch $allowedOrigins if you:
- Customize Capacitor's
androidScheme/hostnameaway from the default, changing the WebView's own origin, or - Deploy the static
www/frontend separately to a real domain (rather than loading it from inside the app shell), which then calls the backend cross-origin from that domain.
See Decoupled Frontends & CORS for the full $allowedOrigins/$forceApiUrl reference.