From 53f738bc4167fd7ae164dc69df0916c21bd998f7 Mon Sep 17 00:00:00 2001 From: j-hc Date: Tue, 12 Nov 2024 23:40:48 +0300 Subject: [PATCH 1/8] update --- CONFIG.md | 2 - bin/paccer.jar | Bin 3771 -> 3762 bytes build.sh | 10 +-- config.toml | 59 ++++++++------- options.json | 1 - revanced-magisk/customize.sh | 3 + utils.sh | 135 +++++++++++++++++------------------ 7 files changed, 100 insertions(+), 110 deletions(-) delete mode 100644 options.json diff --git a/CONFIG.md b/CONFIG.md index 0030e31..8ead9bc 100755 --- a/CONFIG.md +++ b/CONFIG.md @@ -18,13 +18,11 @@ compression-level = 9 # module zip compression level remove-rv-integrations-checks = true # remove checks from the revanced integrations patches-source = "revanced/revanced-patches" # where to fetch patches bundle from. default: "revanced/revanced-patches" -integrations-source = "revanced/revanced-integrations" # where to fetch integrations from. default: "revanced/revanced-integrations" cli-source = "j-hc/revanced-cli" # where to fetch cli from. default: "j-hc/revanced-cli" # options like cli-source can also set per app rv-brand = "ReVanced Extended" # rebrand from 'ReVanced' to something different. default: "ReVanced" patches-version = "v2.160.0" # 'latest', 'dev', or a version number. default: "latest" -# integrations-version and cli-version can be also configured [Some-App] app-name = "SomeApp" # if set, release name becomes SomeApp instead of Some-App. default is same as table name, which is 'Some-App' here. diff --git a/bin/paccer.jar b/bin/paccer.jar index 4e18eb30c0ee41745571e62916540ea08f79e56b..adb0ed860803b7757843b36e51a0705c13abb695 100644 GIT binary patch delta 3319 zcmY+H`!^Gg|Hnroml1MXgv}+_<}&79%x##4xvN}rkA!5gh~?H;G;jCI+$Q(ja_OBr zx%DQb&{&L5B1P_ezkPoAob!JD@;K-52RzT~(Q&!)G8e|;9FQLXU}FPxmIjizWX>7i z6(ebw{})dn=l;kFY2N>b)4R7edXhi@ppOFp;Lot)7Q%Pg2RMir3&*fRa{~p-LT&xe}j9t=hpIOxzHKv4m7n?vX1K+xuBN`{Ocp z9GRsw6-MCd!h^*TwTU-dqsOPS8HIpOP7C7;Q38GN&Uk&oz25s_n>lZMvZK}>Miiar zZdF>~zkm;Xsa<}w{3bY|XIAL5;jmh6i`!amldD3W$J&@z))c>PErjWXfnSHR>xfqh zO!QjabM6?*sN-uQ>=xM`B-1cQp(ucj&& z-h4qdg}bIxkK}es*mB==?9@Y+BlBa8S)I7F{L-OMzzrrVUuQTpF2reG<@M;o2o0Fv zZ+X0~HWKFf(+ThQN?i;J+}&^kBn41IoR7^$cgad}=oFO$pXA_uR+>`K z{oQ-h{t79m4?JikyOUk;U2hFObRmX)L->F zk0Va-`1=`4)KBHYh-8dU;3gKWKe?oniph>ycxZhjrGw?QVRtHZ*ZdF##xlh9dXMof z(*NAWu=}<5iF{9XP`EXP=&P2#&DS^&8+lVse7$t3MF?}d73$|`lyKPGjl@%|oP_hn z;ajmO!0hUPoWf7G|7m3F(Sos24J!0tAj3k0GcB%Lzq+#R$qoK$|9$>KmAs<|_{MqM zBH?|CH4Eu{#ZWQhnwOdO=P#!p-%y+Lo!M8}DwX0$C5#}r$iV{c%P-ND0$lyD{kxOs zR~!YXTVKL3ADwZgm1iowM{R_4a+EVLqRqF5w;P+qgV(q$+9M-$;$*0X^rp4YPxayk|q_sN0N;vC-hSb0z3`4^t@ zv3Z!8py}VH`1MIa;<1dKRG!)2jR_9oOS;31DIv)N;BfZNn&4t&yw`?~>j7_Y@Tvxd z#lljna_6>85ocI*$1^7XR}gFnhlS=dZ^Kr@woM-LG}~SXC;RF;lhX}85#t`M_l}V209FwLLBO5K}8D{+w6_dfOAP$(i=YAV{MU~}L^nrDPK@NNjU9_v# zK+v{2{rAi`J&P&r{COS#IN=2V_y8FsZhm}?LlW-dpupKPXSf7eCfGk9F>h!;`RSIVU;ie@23)$#K_ciAU(}>pX;74qnSz$J`IbW07Cp`H z=uWrBBP1;;GB6u-+wDVwVHkj#S0v_cX`=nQnA`k@Hn~?Ppz&j6H9e5^z)$x8R zO-S9XUe(cOW{z!dZzzA<)HN{%~8>+T|a0Eieu6e+N6PREietPXvn7wdVe(G*dPLL^KkSGQw)w7DkFQ+L7`rX>z zyob1Ctd&YC&D-d)S27rgRwrYK%%ZRMkUZ(0yYfm~!*FrH+Wqu4bmLd|#!{ei`3`bZvn z>)tV~)PCv2CpO4UyyDd zJxX$%mOW~2l6MzAAAhAaY0d!rlm~*SnBK@#54x{Cq|)=l?W8z_9C)*(JYJSN4CmMDF=4;9CS%yxMz zPi*D1->SqEU%%F0AMsE2Uza(jkyn<|)2~05lt%VT^{%ciPkW`8V*?7csb8nC+_=sK zv`ITkKc6t5B1wl&f?`b=Yq=6vsB≤Tm2OzR+qjt33FQW&UO10zZwFQMWP4aA4fC z-L_Y{1|*OZSQ{S-s?GC|uJC&bnQ|=e;0aPBX`r^h)h*x0kUq|>jcOrZ86`}eSgTV+ z?jP}6fSbdfl$@p}ChLxe=4Gg)Xb}c;O34%@$e{b7jZ#Cgr*^NU=ec?E)A8AO_C?Aj zv}T-^uUgREVFutWF*1iwZ6>8B?)i9kezxMvEzCXM#fyQr`j6P=Ms5Fr%QeoiTSw?i z(6wBp_MNO9Ju*dJc3vS@S&L4n>0%2PI5Rf*xY@>GL;LkSRSS~=bFvzR0=+6kA#e-A zW(K2h2O6D*T@@9l=sVqxK>S9vK_5ke3;ETTY(eLqUB*yuN{de09weh+^s3Ye+AC0g z#LQ>>K<%=M?xN9e7*srPkg?4|guRPopA|mb%w|3)XQsTgj82ieJt+v!Ppdu z;J}_+-e7XO6rYlu?GrT+B3iP2WGo|5TMZvEa%&~uv1;4axw5%qu%}jjTz-IGuFE5d z0@|BHYgB!e7hIN_bvJH$KVJ5}>}PaY>QY|Q&G!xUI2%Fs{q%xnGbRE#iD#FNa({5+ zEBAtzU#I&dn1z`aL&ZBYi+>((#aa-He_0U zd7ewCmQJX-ckS-7-C@iu`JcHt@bX7Gv}C7J0?U_mQ_@~F=x@iKki6<6uP_UyrIg?{ z6Z6D@R(@ViO}+6&W}@gXye6kG3?jCrdxPcEYB8|wDbAUpA`tS>_16$^ zUOKP%rkcbFY)qY&^zFX14)TW;T4axGTZ|c@t z(|nJtQu$nWpn~r__q{qt;^iH_N6cyI+_|U}ec&1*aY6Vk(}rOxz5qVx7oMD2=?=Sj z30c497h14*NvJ^_MniqZ-pFbm*uwxeoJeg={@0wzTGSa!FS+%(SsQ&|tZ!8G_ delta 3292 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 == *rip-lib* ]]; then cliriplib[${app_args[cli]}]=true diff --git a/config.toml b/config.toml index a931daf..638e266 100755 --- a/config.toml +++ b/config.toml @@ -20,26 +20,35 @@ arch = "both" apkmirror-dlurl = "https://www.apkmirror.com/apk/google-inc/youtube-music" # archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.google.android.apps.youtube.music" -[Music-Extended] -app-name = "Music" -patches-source = "inotia00/revanced-patches" -integrations-source = "inotia00/revanced-integrations" -cli-source = "inotia00/revanced-cli" -rv-brand = "ReVanced Extended" -build-mode = "both" -arch = "both" -apkmirror-dlurl = "https://www.apkmirror.com/apk/google-inc/youtube-music" -# archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.google.android.apps.youtube.music" +[Twitch] +apkmirror-dlurl = "https://www.apkmirror.com/apk/twitch-interactive-inc/twitch/" +# archive-dlurl = "https://archive.org/download/jhc-apks/apks/tv.twitch.android.app" -[YouTube-Extended] -app-name = "YouTube" -patches-source = "inotia00/revanced-patches" -integrations-source = "inotia00/revanced-integrations" -cli-source = "inotia00/revanced-cli" -rv-brand = "ReVanced Extended" -build-mode = "both" -apkmirror-dlurl = "https://www.apkmirror.com/apk/google-inc/youtube" -# archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.google.android.youtube" +# [Music-Extended] +# app-name = "Music" +# patches-source = "inotia00/revanced-patches" +# cli-source = "inotia00/revanced-cli" +# rv-brand = "ReVanced Extended" +# build-mode = "both" +# arch = "both" +# apkmirror-dlurl = "https://www.apkmirror.com/apk/google-inc/youtube-music" +# # archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.google.android.apps.youtube.music" + +# [YouTube-Extended] +# app-name = "YouTube" +# patches-source = "inotia00/revanced-patches" +# cli-source = "inotia00/revanced-cli" +# rv-brand = "ReVanced Extended" +# build-mode = "both" +# apkmirror-dlurl = "https://www.apkmirror.com/apk/google-inc/youtube" +# # archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.google.android.youtube" + +# [Reddit-Extended] +# patches-source = "inotia00/revanced-patches" +# cli-source = "inotia00/revanced-cli" +# rv-brand = "ReVanced Extended" +# apkmirror-dlurl = "https://www.apkmirror.com/apk/redditinc/reddit/" +# # archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.reddit.frontpage" [Twitter] enabled = false @@ -48,18 +57,6 @@ build-mode = "apk" dpi = "120-640dpi" # archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.twitter.android" -[Reddit-Extended] -patches-source = "inotia00/revanced-patches" -integrations-source = "inotia00/revanced-integrations" -cli-source = "inotia00/revanced-cli" -rv-brand = "ReVanced Extended" -apkmirror-dlurl = "https://www.apkmirror.com/apk/redditinc/reddit/" -# archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.reddit.frontpage" - -[Twitch] -enabled = false -# archive-dlurl = "https://archive.org/download/jhc-apks/apks/tv.twitch.android.app" - [TikTok] enabled = false # archive-dlurl = "https://archive.org/download/jhc-apks/apks/com.zhiliaoapp.musically" diff --git a/options.json b/options.json deleted file mode 100644 index 0637a08..0000000 --- a/options.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/revanced-magisk/customize.sh b/revanced-magisk/customize.sh index 28970d0..6181810 100755 --- a/revanced-magisk/customize.sh +++ b/revanced-magisk/customize.sh @@ -44,7 +44,10 @@ if ! pmex path "$PKG_NAME" >&2; then BASEPATH=${BASEPATH##*:} BASEPATH=${BASEPATH%/*} if [ "${BASEPATH:1:4}" = data ]; then if pmex uninstall -k --user 0 "$PKG_NAME" >&2; then + rm -rf "$BASEPATH" 2>&1 ui_print "* Cleared existing $PKG_NAME package" + ui_print "* Reboot and reflash" + abort else abort "ERROR: pm uninstall failed"; fi else ui_print "* Installed stock $PKG_NAME package"; fi fi diff --git a/utils.sh b/utils.sh index de70c83..7b45d79 100755 --- a/utils.sh +++ b/utils.sh @@ -2,9 +2,9 @@ MODULE_TEMPLATE_DIR="revanced-magisk" CWD=$(pwd) -TEMP_DIR=${CWD}/"temp" -BIN_DIR=${CWD}/"bin" -BUILD_DIR=${CWD}/"build" +TEMP_DIR="temp" +BIN_DIR="bin" +BUILD_DIR="build" if [ "${GITHUB_TOKEN-}" ]; then GH_HEADER="Authorization: token ${GITHUB_TOKEN}"; else GH_HEADER=; fi NEXT_VER_CODE=${NEXT_VER_CODE:-$(date +'%Y%m%d')} @@ -36,19 +36,19 @@ abort() { } get_rv_prebuilts() { - local cli_src=$1 cli_ver=$2 integrations_src=$3 integrations_ver=$4 patches_src=$5 patches_ver=$6 - local integs_file="" + local cli_src=$1 cli_ver=$2 patches_src=$3 patches_ver=$4 pr "Getting prebuilts (${patches_src%/*})" >&2 local cl_dir=${patches_src%/*} cl_dir=${TEMP_DIR}/${cl_dir,,}-rv [ -d "$cl_dir" ] || mkdir "$cl_dir" - for src_ver in "$cli_src CLI $cli_ver" "$integrations_src Integrations $integrations_ver" "$patches_src Patches $patches_ver"; do + for src_ver in "$cli_src CLI $cli_ver revanced-cli" "$patches_src Patches $patches_ver patches"; do set -- $src_ver - local src=$1 tag=$2 ver=${3-} ext - if [ "$tag" = "CLI" ] || [ "$tag" = "Patches" ]; then + local src=$1 tag=$2 ver=${3-} fprefix=$4 + local ext + if [ "$tag" = "CLI" ]; then ext="jar" - elif [ "$tag" = "Integrations" ]; then - ext="apk" + elif [ "$tag" = "Patches" ]; then + ext="rvp" else abort unreachable; fi local dir=${src%/*} dir=${TEMP_DIR}/${dir,,}-rv @@ -66,7 +66,7 @@ get_rv_prebuilts() { fi local url file tag_name name - file=$(find "$dir" -name "revanced-${tag,,}-${name_ver#v}.${ext}" -type f 2>/dev/null) + file=$(find "$dir" -name "${fprefix}-${name_ver#v}.${ext}" -type f 2>/dev/null) if [ -z "$file" ]; then local resp asset name resp=$(gh_req "$rv_rel" -) || return 1 @@ -77,7 +77,6 @@ get_rv_prebuilts() { name=$(jq -r .name <<<"$asset") file="${dir}/${name}" gh_dl "$file" "$url" >&2 || return 1 - if [ "$tag" = "Integrations" ]; then integs_file=$file; fi echo "$tag: $(cut -d/ -f1 <<<"$src")/${name} " >>"${cl_dir}/changelog.md" else local for_err=$file @@ -89,37 +88,26 @@ get_rv_prebuilts() { tag_name=$(cut -d'-' -f3- <<<"$name") tag_name=v${tag_name%.*} fi - - echo -n "$file " if [ "$tag" = "Patches" ]; then - name="patches-${tag_name}.json" - file="${dir}/${name}" - if [ ! -f "$file" ]; then - resp=$(gh_req "$rv_rel" -) || return 1 - if [ "$ver" = "dev" ]; then resp=$(jq -r '.[0]' <<<"$resp"); fi - url=$(jq -e -r '.assets[] | select(.name | endswith("json")) | .url' <<<"$resp") || return 1 - gh_dl "$file" "$url" >&2 || return 1 - echo -e "[Changelog](https://github.com/${src}/releases/tag/${tag_name})\n" >>"${cl_dir}/changelog.md" + echo -e "[Changelog](https://github.com/${src}/releases/tag/${tag_name})\n" >>"${cl_dir}/changelog.md" + if [ "$REMOVE_RV_INTEGRATIONS_CHECKS" = true ]; then + if ! ( + mkdir -p "${file}-zip" || return 1 + unzip -qo "${file}" -d "${file}-zip" || return 1 + java -cp "${BIN_DIR}/paccer.jar:${BIN_DIR}/dexlib2.jar" com.jhc.Main "${file}-zip/extensions/shared.rve" "${file}-zip/extensions/shared-patched.rve" || return 1 + mv -f "${file}-zip/extensions/shared-patched.rve" "${file}-zip/extensions/shared.rve" || return 1 + rm "${file}" || return 1 + cd "${file}-zip" || abort + zip -0rq "${CWD}/${file}" . || return 1 + ) >&2; then + echo >&2 "Patching revanced-integrations failed" + fi + rm -r "${file}-zip" || : fi - echo -n "$file " fi + echo -n "$file " done echo - - if [ "$integs_file" ] && [ "$REMOVE_RV_INTEGRATIONS_CHECKS" = true ]; then - if ! ( - mkdir -p "${integs_file}-zip" || return 1 - unzip -qo "${integs_file}" -d "${integs_file}-zip" || return 1 - cd "${integs_file}-zip" || return 1 - java -cp "${BIN_DIR}/paccer.jar:${BIN_DIR}/dexlib2.jar" com.jhc.Main "${integs_file}-zip/classes.dex" "${integs_file}-zip/classes-patched.dex" || return 1 - mv -f "${integs_file}-zip/classes-patched.dex" "${integs_file}-zip/classes.dex" || return 1 - rm "${integs_file}" || return 1 - zip -0rq "${integs_file}" . || return 1 - ) >&2; then - echo >&2 "Patching revanced-integrations failed" - fi - rm -r "${integs_file}-zip" || : - fi } get_prebuilts() { @@ -170,8 +158,7 @@ config_update() { else last_patches=$(gh_req "$rv_rel/tags/${ver}" -) fi - - if ! last_patches=$(jq -e -r '.assets[] | select(.name | endswith("jar")) | .name' <<<"$last_patches"); then + if ! last_patches=$(jq -e -r '.assets[] | select(.name | endswith("rvp")) | .name' <<<"$last_patches"); then abort oops fi if [ "$last_patches" ]; then @@ -216,7 +203,7 @@ gh_dl() { } log() { echo -e "$1 " >>"build.md"; } -get_largest_ver() { +get_highest_ver() { local vers m vers=$(tee) m=$(head -1 <<<"$vers") @@ -228,19 +215,30 @@ semver_validate() { [ ${#ac} = 0 ] } get_patch_last_supported_ver() { - local inc_sel exc_sel vs - inc_sel=$(list_args "$2" | sed 's/.*/\.name == &/' | paste -sd '~' | sed 's/~/ or /g' || :) - exc_sel=$(list_args "$3" | sed 's/.*/\.name != &/' | paste -sd '~' | sed 's/~/ and /g' || :) - inc_sel=${inc_sel:-false} - if [ "$4" = false ]; then inc_sel="${inc_sel} or .use==true"; fi - if ! vs=$(jq -e -r ".[] - | select(.compatiblePackages // [] | .[] | .name==\"${1}\") - | select(${inc_sel}) - | select(${exc_sel:-true}) - | .compatiblePackages[].versions // []" "$5"); then - abort "error in jq query" + local pkg_name=$1 inc_sel=$2 _exc_sel=$3 _exclusive=$4 # TODO: resolve using all of these + local op + if [ "$inc_sel" ]; then + if ! op=$(java -jar "$rv_cli_jar" list-patches "$rv_patches_jar" -f "$pkg_name" -v -p 2>&1 | awk '{$1=$1}1'); then + epr "list-patches: '$op'" + return 1 + fi + local ver vers="" NL=$'\n' + while IFS= read -r line; do + line="${line:1:${#line}-2}" + ver=$(sed -n "/^Name: $line\$/,/^\$/p" <<<"$op" | sed -n "/^Compatible versions:\$/,/^\$/p" | tail -n +2) + vers=${ver}${NL} + done <<<"$(list_args "$inc_sel")" + get_highest_ver <<<"$vers" + return fi - tr -d ' ,\t[]"' <<<"$vs" | sort -u | grep -v '^$' | get_largest_ver || : + if ! op=$(java -jar "$rv_cli_jar" list-versions "$rv_patches_jar" -f "$pkg_name" 2>&1 | tail -n +3 | awk '{$1=$1}1'); then + epr "list-versions: '$op'" + return 1 + fi + if [ "$op" = "Any" ]; then return; fi + pcount=$(head -1 <<<"$op") pcount=${pcount#*(} pcount=${pcount% *} + if [ -z "$pcount" ]; then abort "unreachable: '$pcount'"; fi + grep -F "($pcount patch" <<<"$op" | sed 's/ (.* patch.*//' | get_highest_ver || return 1 } isoneof() { @@ -261,10 +259,10 @@ merge_splits() { # this is required because of apksig mkdir "${bundle}-zip" unzip -qo "${bundle}.mzip" -d "${bundle}-zip" - cd "${bundle}-zip" || abort - zip -0rq "${bundle}.zip" . - cd "$CWD" || abort - # if building apk, sign the merged apk properly + pushd "${bundle}-zip" || abort + zip -0rq "${CWD}/${bundle}.zip" . + popd || abort + # if building module, sign the merged apk properly if isoneof "module" "${build_mode_arr[@]}"; then patch_apk "${bundle}.zip" "${output}" "--exclusive" "${args[cli]}" "${args[ptjar]}" local ret=$? @@ -329,7 +327,7 @@ dl_apkmirror() { get_apkmirror_vers() { local vers apkm_resp apkm_resp=$(req "https://www.apkmirror.com/uploads/?appcategory=${__APKMIRROR_CAT__}" -) - vers=$(sed -n 's;.*Version:\(.*\) .*;\1;p' <<<"$apkm_resp") + vers=$(sed -n 's;.*Version:\(.*\) .*;\1;p' <<<"$apkm_resp" | awk '{$1=$1}1') if [ "$__AAV__" = false ]; then local IFS=$'\n' vers=$(grep -iv "\(beta\|alpha\)" <<<"$vers") @@ -403,8 +401,9 @@ get_archive_pkg_name() { echo "$__ARCHIVE_PKG_NAME__"; } patch_apk() { local stock_input=$1 patched_apk=$2 patcher_args=$3 rv_cli_jar=$4 rv_patches_jar=$5 - local cmd="java -jar $rv_cli_jar patch $stock_input -p -o $patched_apk -b $rv_patches_jar $patcher_args --keystore=ks.keystore \ ---keystore-entry-password=123456789 --keystore-password=123456789 --signer=jhc --keystore-entry-alias=jhc --options=options.json" + # TODO: --options + local cmd="java -jar $rv_cli_jar patch $stock_input --purge -o $patched_apk -p $rv_patches_jar --keystore=ks.keystore \ +--keystore-entry-password=123456789 --keystore-password=123456789 --signer=jhc --keystore-entry-alias=jhc $patcher_args" if [ "$OS" = Android ]; then cmd+=" --custom-aapt2-binary=${AAPT2}"; fi pr "$cmd" if eval "$cmd"; then [ -f "$patched_apk" ]; else @@ -435,7 +434,7 @@ build_rv() { local arch_f="${arch// /}" local p_patcher_args=() - p_patcher_args+=("$(join_args "${args[excluded_patches]}" -e) $(join_args "${args[included_patches]}" -i)") + p_patcher_args+=("$(join_args "${args[excluded_patches]}" -d) $(join_args "${args[included_patches]}" -e)") [ "${args[exclusive_patches]}" = true ] && p_patcher_args+=("--exclusive") local tried_dl=() @@ -457,7 +456,7 @@ build_rv() { local get_latest_ver=false if [ "$version_mode" = auto ]; then if ! version=$(get_patch_last_supported_ver "$pkg_name" \ - "${args[included_patches]}" "${args[excluded_patches]}" "${args[exclusive_patches]}" "${args[ptjs]}"); then + "${args[included_patches]}" "${args[excluded_patches]}" "${args[exclusive_patches]}"); then exit 1 elif [ -z "$version" ]; then get_latest_ver=true; fi elif isoneof "$version_mode" latest beta; then @@ -470,7 +469,7 @@ build_rv() { if [ $get_latest_ver = true ]; then if [ "$version_mode" = beta ]; then __AAV__="true"; else __AAV__="false"; fi pkgvers=$(get_"${dl_from}"_vers) - version=$(get_largest_ver <<<"$pkgvers") || version=$(head -1 <<<"$pkgvers") + version=$(get_highest_ver <<<"$pkgvers") || version=$(head -1 <<<"$pkgvers") fi if [ -z "$version" ]; then epr "empty version, not building ${table}." @@ -507,9 +506,9 @@ build_rv() { fi log "${table}: ${version}" - p_patcher_args+=("-m ${args[integ]}") local microg_patch - microg_patch=$(jq -r ".[] | select(.compatiblePackages // [] | .[] | .name==\"${pkg_name}\") | .name" "${args[ptjs]}" | grep -i "gmscore\|microg" || :) + microg_patch=$(java -jar "$rv_cli_jar" list-patches "$rv_patches_jar" -f "$pkg_name" -v -p 2>&1 | + grep "^Name: " | grep -i "gmscore\|microg" || :) microg_patch=${microg_patch#*: } if [ -n "$microg_patch" ] && [[ ${p_patcher_args[*]} =~ $microg_patch ]]; then epr "You cant include/exclude microg patches as that's done by rvmm builder automatically." p_patcher_args=("${p_patcher_args[@]//-[ei] ${microg_patch}/}") @@ -524,9 +523,9 @@ build_rv() { if [ -n "$microg_patch" ]; then patched_apk="${TEMP_DIR}/${app_name_l}-${rv_brand_f}-${version_f}-${arch_f}-${build_mode}.apk" if [ "$build_mode" = apk ]; then - patcher_args+=("-i \"${microg_patch}\"") - elif [ "$build_mode" = module ]; then patcher_args+=("-e \"${microg_patch}\"") + elif [ "$build_mode" = module ]; then + patcher_args+=("-d \"${microg_patch}\"") fi else patched_apk="${TEMP_DIR}/${app_name_l}-${rv_brand_f}-${version_f}-${arch_f}.apk" @@ -574,7 +573,7 @@ build_rv() { cp -f "$patched_apk" "${base_template}/base.apk" if [ "${args[include_stock]}" = true ]; then cp -f "$stock_apk" "${base_template}/${pkg_name}.apk"; fi pushd >/dev/null "$base_template" || abort "Module template dir not found" - zip -"$COMPRESSION_LEVEL" -FSqr "${BUILD_DIR}/${module_output}" . + zip -"$COMPRESSION_LEVEL" -FSqr "${CWD}/${BUILD_DIR}/${module_output}" . popd >/dev/null || : pr "Built ${table} (root): '${BUILD_DIR}/${module_output}'" done From 16ea26dd395aab0ea08c7256d66b0159cdb73f64 Mon Sep 17 00:00:00 2001 From: j-hc Date: Wed, 13 Nov 2024 01:19:58 +0300 Subject: [PATCH 2/8] update module --- revanced-magisk/customize.sh | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/revanced-magisk/customize.sh b/revanced-magisk/customize.sh index 6181810..9cb65a5 100755 --- a/revanced-magisk/customize.sh +++ b/revanced-magisk/customize.sh @@ -137,16 +137,15 @@ install() { } if [ $INS = true ] && ! install; then abort; fi +ui_print "* Extracting native libs" BASEPATHLIB=${BASEPATH}/lib/${ARCH} -if [ -z "$(ls -A1 "$BASEPATHLIB")" ]; then - ui_print "* Extracting native libs" - mkdir -p "$BASEPATHLIB" - if ! op=$(unzip -j "$MODPATH"/"$PKG_NAME".apk lib/"${ARCH_LIB}"/* -d "$BASEPATHLIB" 2>&1); then - ui_print "ERROR: extracting native libs failed" - abort "$op" - fi - set_perm_recursive "${BASEPATH}/lib" 1000 1000 755 755 u:object_r:apk_data_file:s0 +if [ ! -d "$BASEPATHLIB" ]; then mkdir -p "$BASEPATHLIB"; else rm "$BASEPATHLIB/*" || :; fi +if ! op=$(unzip -v -j "$MODPATH/$PKG_NAME.apk" lib/"${ARCH_LIB}"/* -d "$BASEPATHLIB" 2>&1); then + ui_print "ERROR: extracting native libs failed" + abort "$op" fi +set_perm_recursive "${BASEPATH}/lib" 1000 1000 755 755 u:object_r:apk_data_file:s0 + ui_print "* Setting Permissions" set_perm "$MODPATH/base.apk" 1000 1000 644 u:object_r:apk_data_file:s0 From 3a6a30f02ab6443c97e8b50787a0f8ac979e4a26 Mon Sep 17 00:00:00 2001 From: j-hc Date: Wed, 13 Nov 2024 01:47:30 +0300 Subject: [PATCH 3/8] fix get_patch_last_supported_ver --- revanced-magisk/customize.sh | 19 ++++++++++--------- utils.sh | 7 +++++-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/revanced-magisk/customize.sh b/revanced-magisk/customize.sh index 9cb65a5..85286c8 100755 --- a/revanced-magisk/customize.sh +++ b/revanced-magisk/customize.sh @@ -135,16 +135,17 @@ install() { done settings put global verifier_verify_adb_installs "$VERIF_ADB" } -if [ $INS = true ] && ! install; then abort; fi - -ui_print "* Extracting native libs" -BASEPATHLIB=${BASEPATH}/lib/${ARCH} -if [ ! -d "$BASEPATHLIB" ]; then mkdir -p "$BASEPATHLIB"; else rm "$BASEPATHLIB/*" || :; fi -if ! op=$(unzip -v -j "$MODPATH/$PKG_NAME.apk" lib/"${ARCH_LIB}"/* -d "$BASEPATHLIB" 2>&1); then - ui_print "ERROR: extracting native libs failed" - abort "$op" +if [ $INS = true ]; then + if ! install; then abort; fi + ui_print "* Extracting native libs" + BASEPATHLIB=${BASEPATH}/lib/${ARCH} + if [ ! -d "$BASEPATHLIB" ]; then mkdir -p "$BASEPATHLIB"; else rm -f "$BASEPATHLIB/*" >/dev/null 2>&1 || :; fi + if ! op=$(unzip -j "$MODPATH/$PKG_NAME.apk" "lib/${ARCH_LIB}/*" -d "$BASEPATHLIB" 2>&1); then + ui_print "ERROR: extracting native libs failed" + abort "$op" + fi + set_perm_recursive "${BASEPATH}/lib" 1000 1000 755 755 u:object_r:apk_data_file:s0 fi -set_perm_recursive "${BASEPATH}/lib" 1000 1000 755 755 u:object_r:apk_data_file:s0 ui_print "* Setting Permissions" set_perm "$MODPATH/base.apk" 1000 1000 644 u:object_r:apk_data_file:s0 diff --git a/utils.sh b/utils.sh index 7b45d79..6890aee 100755 --- a/utils.sh +++ b/utils.sh @@ -228,8 +228,11 @@ get_patch_last_supported_ver() { ver=$(sed -n "/^Name: $line\$/,/^\$/p" <<<"$op" | sed -n "/^Compatible versions:\$/,/^\$/p" | tail -n +2) vers=${ver}${NL} done <<<"$(list_args "$inc_sel")" - get_highest_ver <<<"$vers" - return + vers=$(xargs <<<"$vers") + if [ "$vers" ]; then + get_highest_ver <<<"$vers" + return + fi fi if ! op=$(java -jar "$rv_cli_jar" list-versions "$rv_patches_jar" -f "$pkg_name" 2>&1 | tail -n +3 | awk '{$1=$1}1'); then epr "list-versions: '$op'" From b22973b3c57485a65459456ff2730bc5181cb26c Mon Sep 17 00:00:00 2001 From: j-hc Date: Wed, 13 Nov 2024 02:27:05 +0300 Subject: [PATCH 4/8] fix get_patch_last_supported_ver --- utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.sh b/utils.sh index 6890aee..4f940f1 100755 --- a/utils.sh +++ b/utils.sh @@ -228,7 +228,7 @@ get_patch_last_supported_ver() { ver=$(sed -n "/^Name: $line\$/,/^\$/p" <<<"$op" | sed -n "/^Compatible versions:\$/,/^\$/p" | tail -n +2) vers=${ver}${NL} done <<<"$(list_args "$inc_sel")" - vers=$(xargs <<<"$vers") + vers=$(awk '{$1=$1}1' <<<"$vers") if [ "$vers" ]; then get_highest_ver <<<"$vers" return From a22b5b06429540c7920509c11fd5161ba56a986a Mon Sep 17 00:00:00 2001 From: j-hc <25510067+j-hc@users.noreply.github.com> Date: Wed, 13 Nov 2024 02:39:24 +0300 Subject: [PATCH 5/8] Update customize.sh --- revanced-magisk/customize.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/revanced-magisk/customize.sh b/revanced-magisk/customize.sh index 85286c8..9117aa6 100755 --- a/revanced-magisk/customize.sh +++ b/revanced-magisk/customize.sh @@ -139,7 +139,7 @@ if [ $INS = true ]; then if ! install; then abort; fi ui_print "* Extracting native libs" BASEPATHLIB=${BASEPATH}/lib/${ARCH} - if [ ! -d "$BASEPATHLIB" ]; then mkdir -p "$BASEPATHLIB"; else rm -f "$BASEPATHLIB/*" >/dev/null 2>&1 || :; fi + if [ ! -d "$BASEPATHLIB" ]; then mkdir -p "$BASEPATHLIB"; else rm -f "$BASEPATHLIB"/* >/dev/null 2>&1 || :; fi if ! op=$(unzip -j "$MODPATH/$PKG_NAME.apk" "lib/${ARCH_LIB}/*" -d "$BASEPATHLIB" 2>&1); then ui_print "ERROR: extracting native libs failed" abort "$op" From ada9264cfbee2b921e88ed1942b56b99b6e93fcf Mon Sep 17 00:00:00 2001 From: j-hc <25510067+j-hc@users.noreply.github.com> Date: Wed, 13 Nov 2024 03:09:35 +0300 Subject: [PATCH 6/8] Update customize.sh --- revanced-magisk/customize.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/revanced-magisk/customize.sh b/revanced-magisk/customize.sh index 9117aa6..46ae7a1 100755 --- a/revanced-magisk/customize.sh +++ b/revanced-magisk/customize.sh @@ -135,8 +135,8 @@ install() { done settings put global verifier_verify_adb_installs "$VERIF_ADB" } -if [ $INS = true ]; then - if ! install; then abort; fi +if [ $INS = true ] && ! install; then abort; fi +if [ $INS = true ] || [ -z "$(ls -A1 "$BASEPATHLIB")" ]; then ui_print "* Extracting native libs" BASEPATHLIB=${BASEPATH}/lib/${ARCH} if [ ! -d "$BASEPATHLIB" ]; then mkdir -p "$BASEPATHLIB"; else rm -f "$BASEPATHLIB"/* >/dev/null 2>&1 || :; fi From b35338e41c7767f5455009ce8a934a1c7a7b295a Mon Sep 17 00:00:00 2001 From: j-hc <25510067+j-hc@users.noreply.github.com> Date: Wed, 13 Nov 2024 03:34:40 +0300 Subject: [PATCH 7/8] Update utils.sh --- utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.sh b/utils.sh index 4f940f1..1005f8a 100755 --- a/utils.sh +++ b/utils.sh @@ -89,7 +89,7 @@ get_rv_prebuilts() { tag_name=v${tag_name%.*} fi if [ "$tag" = "Patches" ]; then - echo -e "[Changelog](https://github.com/${src}/releases/tag/${tag_name})\n" >>"${cl_dir}/changelog.md" + if [ ! -f "$file" ]; then echo -e "[Changelog](https://github.com/${src}/releases/tag/${tag_name})\n" >>"${cl_dir}/changelog.md"; fi if [ "$REMOVE_RV_INTEGRATIONS_CHECKS" = true ]; then if ! ( mkdir -p "${file}-zip" || return 1 From 0934135a2d4b2a1b6e65b04a63b10b08f9f8fb63 Mon Sep 17 00:00:00 2001 From: j-hc <25510067+j-hc@users.noreply.github.com> Date: Wed, 13 Nov 2024 08:02:59 +0300 Subject: [PATCH 8/8] Update customize.sh --- revanced-magisk/customize.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/revanced-magisk/customize.sh b/revanced-magisk/customize.sh index 46ae7a1..4cd0c5f 100755 --- a/revanced-magisk/customize.sh +++ b/revanced-magisk/customize.sh @@ -140,7 +140,7 @@ if [ $INS = true ] || [ -z "$(ls -A1 "$BASEPATHLIB")" ]; then ui_print "* Extracting native libs" BASEPATHLIB=${BASEPATH}/lib/${ARCH} if [ ! -d "$BASEPATHLIB" ]; then mkdir -p "$BASEPATHLIB"; else rm -f "$BASEPATHLIB"/* >/dev/null 2>&1 || :; fi - if ! op=$(unzip -j "$MODPATH/$PKG_NAME.apk" "lib/${ARCH_LIB}/*" -d "$BASEPATHLIB" 2>&1); then + if ! op=$(unzip -o -j "$MODPATH/$PKG_NAME.apk" "lib/${ARCH_LIB}/*" -d "$BASEPATHLIB" 2>&1); then ui_print "ERROR: extracting native libs failed" abort "$op" fi