Initial release: Miracast Enabler KernelSU module v1.0.0
Enables Wi-Fi Display (Miracast) on Pixel phones where Google disabled it in software. Uses fabricated overlays, system properties, and sysconfig XML. Includes WebUI for KernelSU manager. Tested hardware: Pixel 10 Pro Fold (rango), Tensor G5, BCM4390.
This commit is contained in:
111
build.sh
Executable file
111
build.sh
Executable file
@@ -0,0 +1,111 @@
|
||||
#!/bin/bash
|
||||
# Build Miracast Enabler KernelSU/Magisk module zip
|
||||
#
|
||||
# The module uses fabricated overlays at runtime (no APK needed).
|
||||
# If you have a local aapt2 binary (e.g. pulled from the phone),
|
||||
# set AAPT2=/path/to/aapt2 and FRAMEWORK_RES=/path/to/framework-res.apk
|
||||
# to also build an RRO APK as a fallback for pre-Android 12 devices.
|
||||
set -e
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
MODULE_ZIP="miracast-enabler-v1.0.0.zip"
|
||||
|
||||
echo "=== Miracast Enabler Build ==="
|
||||
echo ""
|
||||
|
||||
# Optional: build RRO APK if tools are available
|
||||
AAPT2="${AAPT2:-tools/aapt2}"
|
||||
FRAMEWORK_RES="${FRAMEWORK_RES:-tools/framework-res.apk}"
|
||||
|
||||
if [ -x "$AAPT2" ] && [ -f "$FRAMEWORK_RES" ]; then
|
||||
echo "[1/3] Building RRO overlay APK..."
|
||||
|
||||
OVERLAY_DIR="overlay"
|
||||
rm -rf "$OVERLAY_DIR/build"
|
||||
mkdir -p "$OVERLAY_DIR/build"
|
||||
|
||||
"$AAPT2" compile \
|
||||
--dir "$OVERLAY_DIR/res" \
|
||||
-o "$OVERLAY_DIR/build/compiled.zip"
|
||||
|
||||
"$AAPT2" link \
|
||||
--manifest "$OVERLAY_DIR/AndroidManifest.xml" \
|
||||
-I "$FRAMEWORK_RES" \
|
||||
-o "$OVERLAY_DIR/build/MiracastEnablerOverlay.apk" \
|
||||
"$OVERLAY_DIR/build/compiled.zip"
|
||||
|
||||
# Sign if possible
|
||||
KEYSTORE="build-key.jks"
|
||||
KEY_ALIAS="miracast"
|
||||
KEY_PASS="miracast-build"
|
||||
|
||||
if ! [ -f "$KEYSTORE" ] && command -v keytool >/dev/null 2>&1; then
|
||||
keytool -genkeypair \
|
||||
-keystore "$KEYSTORE" \
|
||||
-alias "$KEY_ALIAS" \
|
||||
-keyalg RSA -keysize 2048 -validity 10000 \
|
||||
-storepass "$KEY_PASS" -keypass "$KEY_PASS" \
|
||||
-dname "CN=Miracast Enabler,O=Module,C=US"
|
||||
fi
|
||||
|
||||
if [ -f "$KEYSTORE" ]; then
|
||||
if command -v apksigner >/dev/null 2>&1; then
|
||||
apksigner sign \
|
||||
--ks "$KEYSTORE" --ks-key-alias "$KEY_ALIAS" \
|
||||
--ks-pass "pass:$KEY_PASS" --key-pass "pass:$KEY_PASS" \
|
||||
--out "$OVERLAY_DIR/MiracastEnablerOverlay.apk" \
|
||||
"$OVERLAY_DIR/build/MiracastEnablerOverlay.apk"
|
||||
elif command -v jarsigner >/dev/null 2>&1; then
|
||||
cp "$OVERLAY_DIR/build/MiracastEnablerOverlay.apk" "$OVERLAY_DIR/MiracastEnablerOverlay.apk"
|
||||
jarsigner -keystore "$KEYSTORE" \
|
||||
-storepass "$KEY_PASS" -keypass "$KEY_PASS" \
|
||||
"$OVERLAY_DIR/MiracastEnablerOverlay.apk" "$KEY_ALIAS"
|
||||
else
|
||||
cp "$OVERLAY_DIR/build/MiracastEnablerOverlay.apk" "$OVERLAY_DIR/MiracastEnablerOverlay.apk"
|
||||
fi
|
||||
else
|
||||
cp "$OVERLAY_DIR/build/MiracastEnablerOverlay.apk" "$OVERLAY_DIR/MiracastEnablerOverlay.apk"
|
||||
fi
|
||||
|
||||
mkdir -p system/vendor/overlay
|
||||
cp "$OVERLAY_DIR/MiracastEnablerOverlay.apk" system/vendor/overlay/
|
||||
echo " RRO APK built: $(du -h system/vendor/overlay/MiracastEnablerOverlay.apk | cut -f1)"
|
||||
rm -rf "$OVERLAY_DIR/build"
|
||||
else
|
||||
echo "[1/3] Skipping RRO APK (no local aapt2 or framework-res.apk)"
|
||||
echo " Module will use fabricated overlays on Android 12+"
|
||||
echo " To build APK: pull aapt2 from phone with ./pull-aapt2.sh"
|
||||
rm -rf system/vendor/overlay
|
||||
fi
|
||||
|
||||
echo "[2/3] Packaging module..."
|
||||
rm -f "$MODULE_ZIP"
|
||||
|
||||
# Build file list
|
||||
FILES=(
|
||||
module.prop
|
||||
customize.sh
|
||||
post-fs-data.sh
|
||||
service.sh
|
||||
system.prop
|
||||
system/
|
||||
webroot/
|
||||
)
|
||||
|
||||
# Include overlay source for on-device build fallback
|
||||
FILES+=(overlay/AndroidManifest.xml overlay/res/)
|
||||
|
||||
# Include pre-built APK if it exists
|
||||
if [ -f "system/vendor/overlay/MiracastEnablerOverlay.apk" ]; then
|
||||
FILES+=(system/vendor/overlay/MiracastEnablerOverlay.apk)
|
||||
fi
|
||||
|
||||
zip -r9 "$MODULE_ZIP" "${FILES[@]}" \
|
||||
-x "overlay/build/*" "*.git*" "build.sh" "build-key.jks" \
|
||||
"pull-aapt2.sh" "tools/*" "README*"
|
||||
|
||||
echo "[3/3] Done"
|
||||
echo ""
|
||||
echo "=== $MODULE_ZIP ($(du -h "$MODULE_ZIP" | cut -f1)) ==="
|
||||
echo "Flash via KernelSU or Magisk manager"
|
||||
Reference in New Issue
Block a user