45 lines
1.2 KiB
Bash
45 lines
1.2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Pull aapt2 from a connected Android device for local builds
|
||
|
|
# Usage: ./pull-aapt2.sh
|
||
|
|
set -e
|
||
|
|
|
||
|
|
DEST="tools/aapt2"
|
||
|
|
|
||
|
|
if ! adb get-state >/dev/null 2>&1; then
|
||
|
|
echo "ERROR: No device connected via ADB"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Searching for aapt2 on device..."
|
||
|
|
|
||
|
|
# Find aapt2 binary on the device
|
||
|
|
DEVICE_PATH=$(adb shell "find /system /vendor /apex -name 'aapt2' -type f 2>/dev/null" | tr -d '\r' | head -1)
|
||
|
|
|
||
|
|
if [ -z "$DEVICE_PATH" ]; then
|
||
|
|
echo "aapt2 not found as standalone binary, checking APEX modules..."
|
||
|
|
# On newer Android, build tools live inside APEX
|
||
|
|
DEVICE_PATH=$(adb shell "find /apex/com.android.sdkext /apex/com.android.art -name 'aapt2' 2>/dev/null" | tr -d '\r' | head -1)
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -z "$DEVICE_PATH" ]; then
|
||
|
|
echo "aapt2 not found on device."
|
||
|
|
echo "Trying framework-res.apk instead (for on-device overlay builds)..."
|
||
|
|
DEVICE_PATH="/system/framework/framework-res.apk"
|
||
|
|
DEST="tools/framework-res.apk"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Pulling: $DEVICE_PATH"
|
||
|
|
mkdir -p "$(dirname "$DEST")"
|
||
|
|
adb pull "$DEVICE_PATH" "$DEST"
|
||
|
|
|
||
|
|
if [ -f "$DEST" ]; then
|
||
|
|
chmod +x "$DEST" 2>/dev/null
|
||
|
|
echo "Saved to: $DEST"
|
||
|
|
file "$DEST"
|
||
|
|
|
||
|
|
if [[ "$DEST" == *aapt2 ]]; then
|
||
|
|
VERSION=$("./$DEST" version 2>&1 || true)
|
||
|
|
echo "Version: $VERSION"
|
||
|
|
fi
|
||
|
|
fi
|