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:
1 parent
94fdc3274e
commit
5f1650b82a
2 files changed
+29
-1
No files matched your search
@@ -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
@@ -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.');
|
||||||
|
|||||||
Reference in new issue
Block a user