Nur ein Startskript per adb, Rest über git; Berechtigungen beim Installieren
Bisher schob provision.sh das ganze Repo nach /sdcard. Auf dem Telefon lag damit
eine Kopie, und jede Änderung hätte wieder den PC gebraucht. Jetzt kommt per adb
nur init-phone.sh: es installiert git und klont die Quellen nach ~/hpos. Danach
ist das eine echte Arbeitskopie und Aktualisieren heißt
cd ~/hpos && git pull
Die Repo-Adresse liest provision.sh aus dem origin-Remote und schreibt sie fest
ins übertragene Skript, damit auf einer Bildschirmtastatur nichts abgetippt
werden muss. Bei privaten Repos bietet init-phone.sh an, das Passwort zu
speichern — mit dem ausdrücklichen Hinweis, dass das im Klartext geschieht.
Die Berechtigungen wandern von provision.sh nach install-termux.sh, direkt hinter
die Installation. Eine frisch installierte App ohne Berechtigungen ist eine Falle,
die erst Stunden später zuschnappt: im ersten Gerätelauf als stumme Tonaufnahme
in Beweis S2. RECORD_AUDIO für com.termux wird danach ausdrücklich nachgeprüft,
weil genau daran der Beweis hängt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -173,6 +173,54 @@ for eintrag in "${DATEIEN[@]}"; do
|
||||
fi
|
||||
done
|
||||
|
||||
# ── Berechtigungen ───────────────────────────────────────────────────────────
|
||||
# Direkt nach der Installation, nicht erst in provision.sh: eine frisch
|
||||
# installierte App ohne Berechtigungen ist eine Falle, die erst Stunden später
|
||||
# zuschnappt — etwa als stumme Tonaufnahme in Beweis S2.
|
||||
#
|
||||
# Wichtig ist vor allem RECORD_AUDIO für com.termux SELBST. PulseAudio läuft im
|
||||
# Termux-Prozess und öffnet das Mikrofon von dort über OpenSL ES; eine
|
||||
# Berechtigung, die nur Termux:API hat, nützt ihm nichts.
|
||||
if [ "$FEHLER" = 0 ]; then
|
||||
kopf "Berechtigungen"
|
||||
erteile() {
|
||||
local paket="$1" perm="$2"
|
||||
if adb shell pm grant "$paket" "$perm" >/dev/null 2>&1; then
|
||||
ok "${perm##*.} → $paket"
|
||||
else
|
||||
warn "${perm##*.} → $paket (abgelehnt)"
|
||||
hint_gegeben=1
|
||||
fi
|
||||
}
|
||||
hint_gegeben=0
|
||||
|
||||
for p in android.permission.RECORD_AUDIO \
|
||||
android.permission.READ_EXTERNAL_STORAGE \
|
||||
android.permission.WRITE_EXTERNAL_STORAGE; do
|
||||
erteile com.termux "$p"
|
||||
done
|
||||
for p in android.permission.RECORD_AUDIO \
|
||||
android.permission.CAMERA \
|
||||
android.permission.ACCESS_FINE_LOCATION \
|
||||
android.permission.READ_EXTERNAL_STORAGE \
|
||||
android.permission.WRITE_EXTERNAL_STORAGE; do
|
||||
erteile com.termux.api "$p"
|
||||
done
|
||||
|
||||
if [ "$hint_gegeben" = 1 ]; then
|
||||
hinweis "Abgelehnt heißt meist: die App meldet diese Berechtigung gar nicht an."
|
||||
hinweis "Das ist unkritisch, solange RECORD_AUDIO für com.termux durchging."
|
||||
fi
|
||||
|
||||
# Kontrolle statt Vertrauen — genau diese eine Berechtigung entscheidet über S2.
|
||||
if adb shell dumpsys package com.termux 2>/dev/null | grep -q 'RECORD_AUDIO.*granted=true'; then
|
||||
ok "Nachgeprüft: com.termux darf aufnehmen"
|
||||
else
|
||||
warn "com.termux hat RECORD_AUDIO NICHT — Beweis S2 wird sonst stumm bleiben."
|
||||
hinweis "Auf dem Telefon: Einstellungen → Apps → Termux → Berechtigungen → Mikrofon"
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Abschluss ────────────────────────────────────────────────────────────────
|
||||
kopf "Ergebnis"
|
||||
adb shell pm list packages 2>/dev/null | tr -d '\r' | grep -E '^package:com\.termux' | sed 's/^package:/ /'
|
||||
|
||||
Reference in New Issue
Block a user