diff --git a/scripts/customize.sh b/scripts/customize.sh index 2c8333c..8cd4fda 100755 --- a/scripts/customize.sh +++ b/scripts/customize.sh @@ -1,10 +1,10 @@ # shellcheck disable=SC2148,SC2086,SC2115 ui_print "" -grep __PKGNAME /proc/mounts | while read -r line; do - ui_print "* Un-mount" - line=${line#*' '} - line=${line%%' '*} - umount -l ${line%%\\*} # trims \040(deleted) + +grep __PKGNAME /proc/self/mountinfo | while read -r line; do + mount_path=$(echo "$line" | cut -d' ' -f5) + ui_print "* Un-mount $mount_path" + umount -l "$mount_path" done if [ $ARCH = "arm" ]; then @@ -26,21 +26,24 @@ basepath() { } BASEPATH=$(basepath) -if [ -n "$BASEPATH" ] && cmpr $BASEPATH $MODPATH/stock.apk; then - ui_print "* Installed __PKGNAME and module stock.apk are identical" +if [ -n "$BASEPATH" ] && cmpr $BASEPATH $MODPATH/__PKGNAME.apk; then + ui_print "* Installed __PKGNAME and module APKs are identical" ui_print "* Skipping stock APK installation" else - ui_print "* Installing/Updating stock __PKGNAME" - set_perm $MODPATH/stock.apk 1000 1000 644 u:object_r:apk_data_file:s0 - if ! op=$(pm install -r -d $MODPATH/stock.apk 2>&1); then + ui_print "* Updating stock __PKGNAME" + set_perm $MODPATH/__PKGNAME.apk 1000 1000 644 u:object_r:apk_data_file:s0 + if ! op=$(pm install -i com.android.vending -r -d $MODPATH/__PKGNAME.apk 2>&1); then ui_print "ERROR: APK installation failed!" abort "${op}" fi BASEPATH=$(basepath) + if [ -z "$BASEPATH" ]; then + abort "ERROR: install __PKGNAME manually and reflash the module" + fi fi -ui_print "* Patching __PKGNAME (v__MDVRSN) on the fly" -if ! op=$(LD_LIBRARY_PATH=$XDELTA_PRELOAD xdelta -d -f -s $BASEPATH $MODPATH/rvc.xdelta $MODPATH/base.apk 2>&1); then +ui_print "* Patching __PKGNAME (v__MDVRSN)" +if ! op=$(LD_LIBRARY_PATH=$XDELTA_PRELOAD xdelta -d -f -s $BASEPATH $MODPATH/rv.patch $MODPATH/base.apk 2>&1); then ui_print "ERROR: Patching failed!" abort "$op" fi @@ -53,8 +56,9 @@ if ! op=$(mount -o bind $MODPATH/base.apk $BASEPATH 2>&1); then ui_print "ERROR: Mount failed!" abort "$op" fi +rm -r $MODPATH/bin $MODPATH/lib $MODPATH/rv.patch $MODPATH/__PKGNAME.apk +am force-stop __PKGNAME +ui_print "* Done" ui_print " by j-hc (github.com/j-hc)" ui_print " " -rm -r $MODPATH/bin $MODPATH/lib $MODPATH/rvc.xdelta $MODPATH/stock.apk -am force-stop __PKGNAME diff --git a/scripts/post-fs-data.sh b/scripts/post-fs-data.sh index 38f01e7..52a67bb 100644 --- a/scripts/post-fs-data.sh +++ b/scripts/post-fs-data.sh @@ -1,6 +1,5 @@ #!/system/bin/sh -grep __PKGNAME /proc/mounts | while read -r line; do - line=${line#*' '} - line=${line%%' '*} - umount -l ${line%%\\*} +grep __PKGNAME /proc/self/mountinfo | while read -r line; do + mount_path=$(echo "$line" | cut -d' ' -f5) + umount -l "$mount_path" done diff --git a/utils.sh b/utils.sh index 02102b6..193cde4 100755 --- a/utils.sh +++ b/utils.sh @@ -85,7 +85,7 @@ reset_template() { echo "# utils" >"${MODULE_TEMPLATE_DIR}/post-fs-data.sh" echo "# utils" >"${MODULE_TEMPLATE_DIR}/customize.sh" echo "# utils" >"${MODULE_TEMPLATE_DIR}/module.prop" - rm -rf ${MODULE_TEMPLATE_DIR}/rvc.xdelta ${MODULE_TEMPLATE_DIR}/*.apk + rm -rf ${MODULE_TEMPLATE_DIR}/rv.patch ${MODULE_TEMPLATE_DIR}/*.apk mkdir -p ${MODULE_TEMPLATE_DIR}/lib/arm ${MODULE_TEMPLATE_DIR}/lib/arm64 ${MODULE_TEMPLATE_DIR}/bin/arm ${MODULE_TEMPLATE_DIR}/bin/arm64 } @@ -133,9 +133,9 @@ patch_apk() { } zip_module() { - local xdelta_patch=$1 module_name=$2 stock_apk=$3 - cp -f "$xdelta_patch" "${MODULE_TEMPLATE_DIR}/rvc.xdelta" - cp -f "$stock_apk" "${MODULE_TEMPLATE_DIR}/stock.apk" + local xdelta_patch=$1 module_name=$2 stock_apk=$3 pkg_name=$4 + cp -f "$xdelta_patch" "${MODULE_TEMPLATE_DIR}/rv.patch" + cp -f "$stock_apk" "${MODULE_TEMPLATE_DIR}/${pkg_name}.apk" cd "$MODULE_TEMPLATE_DIR" || exit 1 zip -FSr "../${BUILD_DIR}/${module_name}" . cd .. @@ -221,7 +221,7 @@ build_rv() { local module_output="${args[app_name],,}-revanced-magisk-v${version}-${args[arch]}.zip" local xdelta="${TEMP_DIR}/${args[app_name],,}-revanced-v${version}-${args[arch]}.xdelta" xdelta_patch "$stock_apk" "$patched_apk" "$xdelta" - zip_module "$xdelta" "$module_output" "$stock_apk" + zip_module "$xdelta" "$module_output" "$stock_apk" "${args[pkg_name]}" echo "Built ${args[app_name]}: '${BUILD_DIR}/${module_output}'" }