RebreakVpnService.onStartCommand crashed with SecurityException because Android 16's validateForegroundServiceType rejects the implicit 2-arg startForeground(). Now passes FOREGROUND_SERVICE_TYPE_SPECIAL_USE explicitly (Google's documented best practice) and guards the call so a failed foreground promotion stops the service cleanly instead of crashing the app. Verified vs reported Galaxy A54 / Android 16 signature (97% of crash events, 1-user crash loop). Bundles pending working-tree work across native/marketing/locales/mac + graphify-out rebuild. gitignore: google-services.json + /screenshots/. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
105 lines
4.3 KiB
Vue
105 lines
4.3 KiB
Vue
<template>
|
||
<div class="min-h-screen bg-gray-950 text-white flex flex-col items-center justify-center px-4 py-16">
|
||
<div class="w-full max-w-md">
|
||
<!-- Logo / Brand -->
|
||
<div class="flex items-center gap-3 mb-10">
|
||
<div class="w-12 h-12 rounded-2xl bg-indigo-500 flex items-center justify-center">
|
||
<span class="text-2xl font-bold">R</span>
|
||
</div>
|
||
<div>
|
||
<h1 class="text-2xl font-bold tracking-tight">Rebreak</h1>
|
||
<p class="text-sm text-gray-400">Gambling Recovery</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Header -->
|
||
<h2 class="text-3xl font-extrabold mb-2">Rebreak für Android</h2>
|
||
<p class="text-gray-400 mb-1 text-sm">
|
||
Version {{ version }} · Build {{ buildDate }}
|
||
</p>
|
||
<span
|
||
class="inline-block bg-amber-500/15 text-amber-400 text-xs font-semibold px-2.5 py-1 rounded-full mb-8"
|
||
>
|
||
Beta, iOS ist die Hauptplattform
|
||
</span>
|
||
|
||
<!-- Download Button -->
|
||
<a
|
||
:href="apkUrl"
|
||
class="block w-full bg-indigo-600 hover:bg-indigo-500 active:bg-indigo-700 transition-colors text-white text-center font-bold text-lg py-4 rounded-2xl mb-4 shadow-lg shadow-indigo-900/40"
|
||
download
|
||
>
|
||
APK herunterladen ({{ apkSizeMb }} MB)
|
||
</a>
|
||
|
||
<!-- SHA256 -->
|
||
<p class="text-xs text-gray-500 text-center break-all mb-10">
|
||
SHA256: <span class="font-mono">{{ sha256 }}</span>
|
||
</p>
|
||
|
||
<!-- Install Instructions -->
|
||
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
|
||
<h3 class="font-bold text-base mb-4 text-white">Installation in 3 Schritten</h3>
|
||
<ol class="space-y-4">
|
||
<li class="flex gap-3">
|
||
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">1</span>
|
||
<div>
|
||
<p class="font-medium text-sm text-white">APK laden</p>
|
||
<p class="text-xs text-gray-400 mt-0.5">Oben auf "APK herunterladen" tippen und die Datei speichern.</p>
|
||
</div>
|
||
</li>
|
||
<li class="flex gap-3">
|
||
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">2</span>
|
||
<div>
|
||
<p class="font-medium text-sm text-white">Unbekannte Quellen erlauben</p>
|
||
<p class="text-xs text-gray-400 mt-0.5">
|
||
Einstellungen → Apps → Spezieller App-Zugriff → Unbekannte Apps installieren → deinen Browser auswählen → erlauben.
|
||
</p>
|
||
</div>
|
||
</li>
|
||
<li class="flex gap-3">
|
||
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">3</span>
|
||
<div>
|
||
<p class="font-medium text-sm text-white">APK öffnen & installieren</p>
|
||
<p class="text-xs text-gray-400 mt-0.5">Heruntergeladene Datei im Dateimanager öffnen und "Installieren" bestätigen.</p>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- Beta Notice -->
|
||
<div class="bg-amber-950/40 border border-amber-800/30 rounded-xl p-4 mb-8">
|
||
<p class="text-amber-300 text-xs leading-relaxed">
|
||
<strong>Beta-Hinweis:</strong> Diese APK ist eine Vorschau-Version. Nicht alle Features
|
||
sind fertig. Fehler bitte per E-Mail melden:
|
||
<a href="mailto:support@rebreak.org" class="underline">support@rebreak.org</a>
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Footer -->
|
||
<p class="text-center text-xs text-gray-600">
|
||
© {{ new Date().getFullYear() }} Rebreak ·
|
||
<NuxtLink to="/datenschutz" class="hover:text-gray-400">Datenschutz</NuxtLink>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
// Diese Werte werden bei jedem Release-Build manuell oder per Script aktualisiert.
|
||
const version = "0.2.0 (build 8)";
|
||
const buildDate = "2026-05-16";
|
||
const apkSizeMb = "—"; // Wird nach EAS-Build eingetragen
|
||
const sha256 = "— wird nach Build eingetragen —";
|
||
const apkUrl = "/downloads/rebreak-android-latest.apk";
|
||
|
||
useSeoMeta({
|
||
title: "Rebreak für Android – APK Download",
|
||
description: "Lade die Rebreak Gambling-Recovery App als APK für Android herunter. Beta-Version, iOS ist die Hauptplattform.",
|
||
});
|
||
|
||
definePageMeta({
|
||
layout: false,
|
||
});
|
||
</script>
|