Private
Public Access
- Fix NoSuchMethodError on Android 2.x: Dalvik before 4.0 can't link Object methods (toString/equals/...) called through an interface. Patch the bundled Bouncy Castle (tools/patch_bc_dalvik.py) and our own CertVerifier, and make build.sh fail if tools/scan_dalvik.py finds any such call - Treat a manually entered private address (10.x, 172.16-31.x, 192.168.x, .local) as home, so LAN servers that allow access without sign-in work - Send Plex client headers on media requests (files and transcodes) - Explain a 503 on a file as the server being unable to open it (drive or folder not available) - Connection log: home/away, token presence, Plex's file check and a direct file request in the streaming test Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.7 KiB
Bash
Executable File
40 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Builds Minamp.apk for Android 2.2+ without the Android SDK/Gradle:
|
|
# aapt2 (resources) -> javac (Java 8 bytecode vs android-8 API) -> dx (dex 035) -> signapk.py (v1/SHA-1 + zipalign).
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
T=${TOOLS:-$PWD/toolchain}
|
|
ANDROID_JAR=$T/platforms/android-8/android.jar
|
|
BC_SRC=$T/bcsrc
|
|
OUT=build
|
|
rm -rf $OUT && mkdir -p $OUT/res $OUT/gen $OUT/classes
|
|
|
|
echo "== resources"
|
|
$T/aapt2 compile --dir res -o $OUT/res/compiled.zip
|
|
$T/aapt2 link -o $OUT/base.apk -I $ANDROID_JAR --manifest AndroidManifest.xml \
|
|
--java $OUT/gen -A assets --min-sdk-version 8 --target-sdk-version 10 \
|
|
--no-version-vectors $OUT/res/compiled.zip
|
|
|
|
echo "== java"
|
|
find src $OUT/gen -name '*.java' > $OUT/sources.txt
|
|
javac -nowarn -Xlint:-options -source 8 -target 8 -encoding UTF-8 -g:source,lines \
|
|
-bootclasspath $ANDROID_JAR -sourcepath "src:$BC_SRC:$OUT/gen" \
|
|
-d $OUT/classes @$OUT/sources.txt 2>&1 | grep -v -E '^Picked up|^Note:' || true
|
|
test -f $OUT/classes/com/minamp/HomeActivity.class
|
|
|
|
echo "== Dalvik 2.x link check"
|
|
python3 tools/scan_dalvik.py $OUT/classes $ANDROID_JAR > $OUT/dalvik-scan.txt
|
|
if ! grep -q "^total patterns: 0$" $OUT/dalvik-scan.txt; then
|
|
cat $OUT/dalvik-scan.txt; echo "Calls Android 2.x can't link (see above): fix before shipping"; exit 1
|
|
fi
|
|
|
|
echo "== dex"
|
|
java -Xmx2g -jar $T/dx.jar --dex --output=$OUT/classes.dex $OUT/classes 2>&1 | grep -v '^Picked up' || true
|
|
|
|
echo "== package"
|
|
cp $OUT/base.apk $OUT/unsigned.apk
|
|
(cd $OUT && zip -q unsigned.apk classes.dex)
|
|
# v1 signature in the classic Android SignApk format (jarsigner's modern output won't install on Android <= 4.2)
|
|
python3 tools/signapk.py ${KEYSTORE:-$T/minamp.keystore} ${KEYPASS:-minamp123} $OUT/unsigned.apk $OUT/Minamp.apk
|
|
ls -la $OUT/Minamp.apk
|