Private
Public Access
Renames the app (label, texts, log files, Plex product name, User-Agent, APK). The package
name, preferences and signing key stay, so it installs over Minamp and keeps its settings.
tools/strings.py catches up with the strings added straight to the XML in 9440536.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
3.6 KiB
Bash
Executable File
72 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Fetches/builds everything build.sh needs into $TOOLS (default ./toolchain), with only
|
|
# Java 17+, git, curl, python3 (+ cryptography for make_roots.py) and npm's registry.
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
PROJ=$PWD
|
|
T=${TOOLS:-$PWD/toolchain}
|
|
mkdir -p "$T" && cd "$T"
|
|
|
|
echo "== aapt2 (prebuilt, from the aaptjs3 npm package)"
|
|
if [ ! -x aapt2 ]; then
|
|
mkdir -p dl && curl -sSL -o dl/aapt.tgz "$(curl -sS https://registry.npmjs.org/aaptjs3/latest | python3 -c 'import json,sys;print(json.load(sys.stdin)["dist"]["tarball"])')"
|
|
tar xzf dl/aapt.tgz -C dl && cp dl/package/bin/x64/linux/aapt2 . && chmod +x aapt2
|
|
fi
|
|
|
|
echo "== android-8 platform jar"
|
|
if [ ! -f platforms/android-8/android.jar ]; then
|
|
git clone --depth 1 --filter=blob:none --sparse https://github.com/Sable/android-platforms platforms
|
|
(cd platforms && git sparse-checkout set android-8)
|
|
fi
|
|
|
|
echo "== dx (built from AOSP source)"
|
|
if [ ! -f dx.jar ]; then
|
|
git clone --depth 1 --branch android10-release --filter=blob:none --sparse https://github.com/aosp-mirror/platform_dalvik dalvik
|
|
(cd dalvik && git sparse-checkout set dx/src)
|
|
mkdir -p dxbuild && find dalvik/dx/src -name '*.java' > dxsrc.txt
|
|
javac -nowarn -encoding UTF-8 -d dxbuild @dxsrc.txt
|
|
jar cfe dx.jar com.android.dx.command.Main -C dxbuild .
|
|
fi
|
|
|
|
echo "== Bouncy Castle sources, renamed to com.minamp.bc"
|
|
if [ ! -d bcsrc ]; then
|
|
git clone --depth 1 --filter=blob:none --sparse https://github.com/bcgit/bc-java bc
|
|
(cd bc && git sparse-checkout set core/src/main/java tls/src/main/java util/src/main/java)
|
|
mkdir -p bcsrc/com/minamp
|
|
cp -r bc/core/src/main/java/org/bouncycastle bcsrc/com/minamp/bc
|
|
cp -r --update=none bc/tls/src/main/java/org/bouncycastle/* bcsrc/com/minamp/bc/
|
|
cp -r --update=none bc/util/src/main/java/org/bouncycastle/* bcsrc/com/minamp/bc/
|
|
grep -rl 'org\.bouncycastle' bcsrc | xargs sed -i 's/org\.bouncycastle/com.minamp.bc/g'
|
|
# Android 2.2 has no Long.compare / compareUnsigned / divideUnsigned / parseUnsignedLong
|
|
python3 - bcsrc/com/minamp/bc/util/Longs.java <<'PY'
|
|
import sys
|
|
p = sys.argv[1]; s = open(p).read()
|
|
s = s.replace("return Long.compare(x, y);", "return x < y ? -1 : (x == y ? 0 : 1);")
|
|
s = s.replace("return Long.compareUnsigned(x, y);", "return compare(x + Long.MIN_VALUE, y + Long.MIN_VALUE);")
|
|
s = s.replace("return Long.divideUnsigned(x, y);", """if (y < 0) { return compareUnsigned(x, y) < 0 ? 0L : 1L; }
|
|
if (x >= 0) { return x / y; }
|
|
long q = ((x >>> 1) / y) << 1;
|
|
long r = x - q * y;
|
|
return q + (compareUnsigned(r, y) >= 0 ? 1 : 0);""")
|
|
s = s.replace("return Long.parseUnsignedLong(s);", "return new java.math.BigInteger(s).longValue();")
|
|
open(p, "w").write(s)
|
|
PY
|
|
python3 "$PROJ/tools/patch_bc_dalvik.py" bcsrc
|
|
fi
|
|
|
|
echo "== Droid Sans (Android 2.x's font), for tools/check_fit.py"
|
|
if [ ! -f fonts/droidsans-regular.ttf ]; then
|
|
mkdir -p fonts dl/fonts
|
|
curl -sSL -o dl/droid.tgz "$(curl -sS https://registry.npmjs.org/connect-fonts-droidsans/latest | python3 -c 'import json,sys;print(json.load(sys.stdin)["dist"]["tarball"])')"
|
|
tar xzf dl/droid.tgz -C dl/fonts
|
|
cp dl/fonts/package/fonts/latin/droidsans-regular.ttf dl/fonts/package/fonts/latin/droidsans-bold.ttf fonts/
|
|
fi
|
|
|
|
echo "== signing key"
|
|
if [ ! -f minamp.keystore ]; then
|
|
if [ -f "$PROJ/signing/minamp.keystore" ]; then cp "$PROJ/signing/minamp.keystore" .; else
|
|
keytool -genkeypair -keystore minamp.keystore -storepass minamp123 -keypass minamp123 -alias minamp \
|
|
-keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 20000 -dname "CN=Plexamp Lite, O=Plexamp Lite"; fi
|
|
fi
|
|
echo "Toolchain ready in $T — build with: TOOLS=$T ./build.sh"
|