build(apk): Publish-Skript reicht den App-Link-Host an Gradle durch

Der Host steht fest im Manifest und muss beim Bauen mitgegeben werden. Das
Publish-Skript rief Gradle bisher ohne ihn auf, ein so veroeffentlichtes APK
haette also den Platzhalter aus build.gradle.kts getragen und geteilte Links
waeren im Browser gelandet statt in der App. NOVASONIC_HOST (und optional
NOVASONIC_HOST2) kommen aus scripts/.env.release; fehlt der Wert, warnt das
Skript deutlich, statt still das Falsche zu bauen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-09-06 12:25:14 +02:00
1 parent 94fdc3274e
commit 5f1650b82a
2 files changed
+29 -1

No files matched your search

+14
View File
@@ -40,6 +40,20 @@ keytool -list -v -keystore <dein-keystore>.jks -alias <alias> | grep SHA256
Die Datei muss unter `https://<deine-web-adresse>/.well-known/assetlinks.json` erreichbar sein — Die Datei muss unter `https://<deine-web-adresse>/.well-known/assetlinks.json` erreichbar sein —
sie liegt im `public/`-Verzeichnis und wird vom Frontend-Image mit ausgeliefert. sie liegt im `public/`-Verzeichnis und wird vom Frontend-Image mit ausgeliefert.
## APK veröffentlichen
`npm run publish-apk` gibt den Host jetzt an Gradle weiter. Dafür in `scripts/.env.release`
ergänzen (die Datei wird nie eingecheckt):
```
NOVASONIC_HOST=music.deine-domain.de
# optional während eines Domainwechsels:
# NOVASONIC_HOST2=alt.deine-domain.de
```
Fehlt der Eintrag, warnt das Skript und baut mit dem Platzhalter weiter — das APK ist dann
installierbar, aber eingehende Links öffnen im Browser statt in der App.
## Domain wechseln ## Domain wechseln
**Ausgehende Links** folgen der Einstellung „NovaSonic Web-Adresse" — Adresse ändern, fertig, kein **Ausgehende Links** folgen der Einstellung „NovaSonic Web-Adresse" — Adresse ändern, fertig, kein
+15 -1
View File
@@ -37,6 +37,12 @@ const GITEA_REPO = process.env.GITEA_REPO || '';
const GITEA_TOKEN = process.env.GITEA_TOKEN || ''; const GITEA_TOKEN = process.env.GITEA_TOKEN || '';
const TAG = process.env.GITEA_APK_TAG || 'apk-latest'; const TAG = process.env.GITEA_APK_TAG || 'apk-latest';
const TASK = process.env.APK_GRADLE_TASK || 'assembleDebug'; const TASK = process.env.APK_GRADLE_TASK || 'assembleDebug';
// Host fuer die App-Links geteilter Songs (https://<host>/?song=…). Steht fest im Manifest, muss
// also beim BAUEN mitgegeben werden — ohne ihn traegt das APK den Platzhalter aus build.gradle.kts
// und eingehende Links landen im Browser statt in der App. NOVASONIC_HOST2 optional fuer einen
// Domainwechsel (beide Adressen oeffnen dann in der App), siehe docs/share-links.md.
const HOST = process.env.NOVASONIC_HOST || '';
const HOST2 = process.env.NOVASONIC_HOST2 || '';
function die(msg) { console.error(`\n✖ ${msg}`); process.exit(1); } function die(msg) { console.error(`\n✖ ${msg}`); process.exit(1); }
if (!GITEA_URL || !GITEA_REPO || !GITEA_TOKEN) if (!GITEA_URL || !GITEA_REPO || !GITEA_TOKEN)
@@ -68,7 +74,15 @@ const relBody = `versionCode=${versionCode}\nversionName=${version}`;
const isWin = process.platform === 'win32'; const isWin = process.platform === 'win32';
const gradlew = join(root, 'android', isWin ? 'gradlew.bat' : 'gradlew'); const gradlew = join(root, 'android', isWin ? 'gradlew.bat' : 'gradlew');
console.log(`▶ Baue APK: ${TASK} …`); console.log(`▶ Baue APK: ${TASK} …`);
const build = spawnSync(gradlew, [`:app:${TASK}`], { if (!HOST) {
console.warn('⚠ NOVASONIC_HOST ist nicht gesetzt — das APK bekommt den Platzhalter-Host aus');
console.warn(' build.gradle.kts, geteilte Links oeffnen dann NICHT in der App.');
console.warn(' In scripts/.env.release eintragen: NOVASONIC_HOST=music.deine-domain.de');
}
const gradleArgs = [`:app:${TASK}`];
if (HOST) gradleArgs.push(`-PnovasonicHost=${HOST}`);
if (HOST2) gradleArgs.push(`-PnovasonicHost2=${HOST2}`);
const build = spawnSync(gradlew, gradleArgs, {
cwd: join(root, 'android'), stdio: 'inherit', shell: isWin, cwd: join(root, 'android'), stdio: 'inherit', shell: isWin,
}); });
if (build.status !== 0) die('Gradle-Build fehlgeschlagen.'); if (build.status !== 0) die('Gradle-Build fehlgeschlagen.');