/

Die Android-App konfigurieren & neu bauen

Die App durch Bearbeiten einer einzigen Datei auf das eigene Backend ausrichten und dann entscheiden, ob ein Rebuild überhaupt nötig ist.

1. www/settings.ini bearbeiten

xCRUD_Nova_Android_App/www/settings.ini besteht aus einfachen key = value-Paaren, gruppiert in [Abschnitte]. Wie es der Header-Kommentar der Datei selbst formuliert: "Diese Datei bearbeiten und neu laden (oder die App neu synchronisieren) - nichts hier erfordert einen Rebuild oder eine Codeänderung an der App selbst."

[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
SchlüsselBedeutung
[backend] urlErforderlich. Der xCRUD Nova/Pro-Server, mit dem diese App spricht - eine absolute URL, ohne abschließenden Schrägstrich, z. B. https://yourdomain.com/xcrud_8. Alles, was die App zeigt (Login, dann das Live-Dashboard), wird von genau dieser URL geladen. Leer lassen, und die App zeigt einen Einrichtungshinweis statt eines leeren Bildschirms.
[backend] demo_username / demo_passwordDemo-Login-Zugangsdaten, die als Hinweis unter dem Login-Formular angezeigt werden. Beide leer lassen, sobald Sie dies auf Ihr eigenes echtes, nicht-demo Backend ausrichten.
[branding] app_nameDer in der UI angezeigte App-Name.
[branding] taglineEin kurzer Slogan, der unter dem App-Namen angezeigt wird.
[purchase] urlWird als schwebende Call-to-Action-Schaltfläche auf jedem Bildschirm angezeigt. Auf einen leeren Wert setzen, um die Schaltfläche vollständig auszublenden - die meisten Selbst-Hoster werden sie leer lassen wollen, da sie eine Marketing-/Evaluierungs-Demo-Funktion war, kein Feature, das die eigene installierte Kopie eines Käufers typischerweise braucht. Ein Leeren schaltet außerdem das "LIVE DEMO"-Banner ab.
[purchase] labelButton-Text. Standardmäßig "Buy the xCRUD Nova server files", falls leer gelassen, während url gesetzt ist.
[documentation] urlWird als zweiter schwebender Link direkt über dem Kauf-Button angezeigt. Nützlich, egal ob diese Kopie eine Marketing-Demo oder die echte Installation eines Käufers ist - auf einen leeren Wert setzen, um ihn auszublenden.
[documentation] labelLink-Text, z. B. "Documentation".

2. Schnelltest vs. vollständiger Rebuild

Zwei sehr unterschiedliche Aufwandsstufen, je nachdem, was sich geändert hat:

  • Schnelltest - einfach neu laden. Wird nur settings.ini geändert, ist weder ein Rebuild noch eine Codeänderung an der App nötig - die WebView neu laden (oder die App neu synchronisieren), und die neue Backend-URL/das neue Branding greift sofort.
  • Vollständiger APK-Rebuild. Nur nötig, wenn Sie native Hüllen-Eigenschaften ändern, die Capacitor selbst steuert - das App-Icon, den Splash-Screen, Berechtigungen, appId/appName in capacitor.config.json, oder die Android-Projektdateien selbst. Die Web-Assets in das native Projekt synchronisieren und dann bauen:
npx cap sync android

Anschließend die APK entweder über Android Studio bauen (den Ordner android/ öffnen und Build > Build APK), oder von der Kommandozeile aus mit Gradle:

cd android
./gradlew assembleDebug

3. CORS - meist ist nichts zu ändern

Das XcrudConfig::$allowedOrigins des Backends enthält standardmäßig bereits https://localhost (der Standard-WebView-Origin von Capacitor unter Android) und http://localhost:8081 (der eigene Origin des Desktop-remote_frontend_demo-Dev-Servers):

public static array $allowedOrigins = ['http://localhost:8081', 'https://localhost', 'http://localhost', 'http://127.0.0.1'];

Das bedeutet, dass die meisten Selbst-Hoster, die die Standard-App auf ihr eigenes Backend ausrichten, KEINE CORS-Änderungen benötigen. Sie müssen $allowedOrigins nur anfassen, wenn Sie:

  • Capacitors androidScheme/hostname vom Standard abweichend anpassen, wodurch sich der Origin der WebView selbst ändert, oder
  • Das statische www/-Frontend separat auf eine echte Domain bereitstellen (statt es aus der App-Hülle heraus zu laden), wodurch es das Backend von dieser Domain aus cross-origin aufruft.

Siehe Entkoppelte Frontends & CORS für die vollständige Referenz zu $allowedOrigins/$forceApiUrl.