/

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
KeyMeaning
[backend] urlRequired. 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_passwordDemo 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_nameThe app name shown in the UI.
[branding] taglineA short tagline shown under the app name.
[purchase] urlShown 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] labelButton text. Defaults to "Buy the xCRUD Nova server files" if left blank while url is set.
[documentation] urlShown 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] labelLink 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.ini alone 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/appName in capacitor.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/hostname away 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.