Compare commits
5 Commits
b49dd02360
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| affa71f3b8 | |||
| 4d69a65f9a | |||
| 8e98e366f7 | |||
| 60ba2cb001 | |||
|
082bc175c0
|
49
src/android/extract-bootimg.sh
Normal file
49
src/android/extract-bootimg.sh
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# I keep forgetting how to extract the boot.img from an Android OTA update
|
||||||
|
# for patching by Magisk.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
--payload-dumper)
|
||||||
|
# Specify the path to the payload_dumper binary
|
||||||
|
PAYLOAD_DUMPER=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--diff)
|
||||||
|
PAYLOAD_DUMPER_EXTRA_ARGS="${PAYLOAD_DUMPER_EXTRA_ARGS} --diff"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# The last argument is the file
|
||||||
|
UPDATE_FILE=$1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ! -f "$UPDATE_FILE" ]]; then
|
||||||
|
echo "Android update file $UPDATE_FILE does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
out_dir=./payload-dumper-output
|
||||||
|
if [[ -d "$out_dir" ]]; then
|
||||||
|
echo "Output path $out_dir already exists. Refusing to work!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
mkdir "$out_dir"
|
||||||
|
|
||||||
|
# Print some basic info
|
||||||
|
PAYLOAD_DUMPER=${PAYLOAD_DUMPER:-payload_dumper}
|
||||||
|
echo "INFO: payload_dumper: $PAYLOAD_DUMPER"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Extract only the payload.bin file
|
||||||
|
echo "Extracting payload..."
|
||||||
|
unzip -q -C "$UPDATE_FILE" -d "$out_dir" payload.bin
|
||||||
|
|
||||||
|
# Use payload_dumper to get to the boot.img
|
||||||
|
echo "Dumping data from payload..."
|
||||||
|
${PAYLOAD_DUMPER} ${PAYLOAD_DUMPER_EXTRA_ARGS} --out "$out_dir" "${out_dir}/payload.bin"
|
||||||
@@ -80,6 +80,18 @@ while [[ $# -gt 0 ]]; do
|
|||||||
SEND_NOTIFICATION=n
|
SEND_NOTIFICATION=n
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--pigeon)
|
||||||
|
# Specifies to run `dart run pigeon --input $2`
|
||||||
|
PIGEON_FILES="$PIGEON_FILES $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--flutter)
|
||||||
|
# Specifies the path to the flutter binary
|
||||||
|
FLUTTER=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown argument: $1"
|
echo "Unknown argument: $1"
|
||||||
shift
|
shift
|
||||||
@@ -101,6 +113,7 @@ CLEAN_BUILD=${CLEAN_BUILD:-y}
|
|||||||
SKIP_BUILD=${SKIP_BUILD:-n}
|
SKIP_BUILD=${SKIP_BUILD:-n}
|
||||||
NOTIFY_SEND=${NOTIFY_SEND:-notify-send}
|
NOTIFY_SEND=${NOTIFY_SEND:-notify-send}
|
||||||
SEND_NOTIFICATION=${SEND_NOTIFICATION:-y}
|
SEND_NOTIFICATION=${SEND_NOTIFICATION:-y}
|
||||||
|
FLUTTER=${FLUTTER:-flutter}
|
||||||
|
|
||||||
# Parse version info
|
# Parse version info
|
||||||
version=$(grep -E "^version: " pubspec.yaml | cut -b 10-)
|
version=$(grep -E "^version: " pubspec.yaml | cut -b 10-)
|
||||||
@@ -112,7 +125,9 @@ release_dir="./release-${version}"
|
|||||||
echo "===== ${NAME} ====="
|
echo "===== ${NAME} ====="
|
||||||
echo "Building version ${version}"
|
echo "Building version ${version}"
|
||||||
echo "Moving APKs into ${release_dir} after build"
|
echo "Moving APKs into ${release_dir} after build"
|
||||||
|
echo "Flutter: ${FLUTTER}"
|
||||||
echo "Clean build: ${CLEAN_BUILD}"
|
echo "Clean build: ${CLEAN_BUILD}"
|
||||||
|
echo "Pigeons to build: ${PIGEON_FILES}"
|
||||||
echo "Skipping build: ${SKIP_BUILD}"
|
echo "Skipping build: ${SKIP_BUILD}"
|
||||||
echo "Sending notification: ${SEND_NOTIFICATION}"
|
echo "Sending notification: ${SEND_NOTIFICATION}"
|
||||||
echo "APKs already signed: ${ALREADY_SIGNED}"
|
echo "APKs already signed: ${ALREADY_SIGNED}"
|
||||||
@@ -146,17 +161,22 @@ else
|
|||||||
|
|
||||||
if [[ "${CLEAN_BUILD}" = "y" ]]; then
|
if [[ "${CLEAN_BUILD}" = "y" ]]; then
|
||||||
# Clean flutter build
|
# Clean flutter build
|
||||||
flutter clean
|
$FLUTTER clean
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get dependencies
|
# Get dependencies
|
||||||
flutter pub get
|
$FLUTTER pub get
|
||||||
|
|
||||||
# Build everything again
|
# Build everything again
|
||||||
flutter pub run build_runner build --delete-conflicting-outputs
|
$FLUTTER pub run build_runner build --delete-conflicting-outputs
|
||||||
|
|
||||||
|
# Build pigeons
|
||||||
|
for pigeon in $PIGEON_FILES; do
|
||||||
|
$FLUTTER pub run pigeon --input $pigeon
|
||||||
|
done
|
||||||
|
|
||||||
# Build the release apk
|
# Build the release apk
|
||||||
flutter build apk \
|
$FLUTTER build apk \
|
||||||
--release \
|
--release \
|
||||||
--split-per-abi \
|
--split-per-abi \
|
||||||
--split-debug-info="${release_dir}/debug-info"
|
--split-debug-info="${release_dir}/debug-info"
|
||||||
|
|||||||
Reference in New Issue
Block a user