Skip to content

Commit f82ad3a

Browse files
committed
odex strategy, create_backup function
1 parent 8fa40ec commit f82ad3a

2 files changed

Lines changed: 39 additions & 16 deletions

File tree

customize.sh

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,21 @@ my_grep_prop() {
88
sed -n "$REGEX" $FILES 2>/dev/null | head -n 1
99
}
1010

11+
create_backup() {
12+
local path="$1"
13+
local filename="${path##*/}"
14+
local extension="${filename##*.}"
15+
filename="${filename%.*}"
16+
ui_print "-- Searching for $filename.$extension backup..."
17+
if [ -f "/data/adb/modules/NFCScreenOff/${filename}_bak.$extension" ]; then
18+
ui_print "-- ${filename}_bak.$extension found! Copying backup to the module update folder."
19+
cp "/data/adb/modules/NFCScreenOff/${filename}_bak.$extension" "$MODPATH/${filename}_bak.$extension"
20+
else
21+
ui_print "-- ${filename}_bak.$extension not found. Creating backup of original $filename.$extension."
22+
cp "$path" "$MODPATH/${filename}_bak.$extension"
23+
fi
24+
}
25+
1126
ui_print "-- Searching for NFC app in /system/app/ folder..."
1227
set 'NfcNci' 'NQNfcNci' 'NxpNfcNci'
1328
for name do
@@ -26,28 +41,23 @@ ROM="$(my_grep_prop 'build\.version')"
2641
[ -z "$MANUFACTURER" ] && MANUFACTURER="$(my_grep_prop 'ro\.product\.vendor\.manufacturer')"
2742
[ -z "$MODEL" ] && MODEL="$(my_grep_prop 'ro\.product\.vendor\.model')"
2843
[ -z "$DEVICE" ] && DEVICE="$(my_grep_prop 'ro\.product\.vendor\.device')"
29-
printf "%s\n%s\n%s\n%s\n%s\n" "MANUFACTURER=$MANUFACTURER" "MODEL=$MODEL" "DEVICE=$DEVICE" "ROM=$ROM" "APK_NAME=$APK_NAME" > "$MODPATH/.env"
44+
printf "%s\n%s\n%s\n%s\n%s\n" "APK_NAME=$APK_NAME" "MANUFACTURER=$MANUFACTURER" "MODEL=$MODEL" "DEVICE=$DEVICE" "ROM=$ROM" > "$MODPATH/.env"
3045

3146
# print device infos
3247
ui_print '-- Device info --'
3348
ui_print "$(cat $MODPATH/.env)"
3449
ui_print '-----------------'
3550

3651
APK_PATH="/system/app/$APK_NAME/$APK_NAME.apk"
52+
APK_DIR="$(dirname $APK_PATH)"
3753
REPLACE="
3854
/system/app/$APK_NAME
3955
"
4056
mkdir "$MODPATH/$APK_NAME"
4157

42-
# create backup
43-
ui_print "-- Searching for $APK_NAME.apk backup..."
44-
if [ -f "/data/adb/modules/NFCScreenOff/${APK_NAME}_bak.apk" ]; then
45-
ui_print "-- ${APK_NAME}_bak.apk found! Copying backup to the module update folder."
46-
cp "/data/adb/modules/NFCScreenOff/${APK_NAME}_bak.apk" "$MODPATH/${APK_NAME}_bak.apk"
47-
else
48-
ui_print "-- ${APK_NAME}_bak.apk not found. Creating backup of original $APK_NAME.apk."
49-
cp "$APK_PATH" "$MODPATH/${APK_NAME}_bak.apk"
50-
fi
58+
create_backup "$APK_PATH"
59+
create_backup "$APK_DIR/oat/arm64/$APK_NAME.odex"
60+
create_backup "$APK_DIR/oat/arm64/$APK_NAME.vdex"
5161

5262
# retrieve modded apk
5363
ui_print "-- Searching for custom $APK_NAME.apk in extracted files..."
@@ -61,11 +71,24 @@ else
6171
# prepare files
6272
ui_print "-- ${APK_NAME}_align.apk not found."
6373
ui_print "-- Zipping $APK_NAME.apk and device's framework ($(which zip))"
64-
cp "$MODPATH/${APK_NAME}_bak.apk" "$TMPDIR/$APK_NAME.apk"
65-
zip -j "$TMPDIR/$APK_NAME.zip" "$MODPATH/.env" "$TMPDIR/$APK_NAME.apk" /system/framework/framework-res.apk
74+
ln -s "$MODPATH/${APK_NAME}_bak.apk" "$TMPDIR/$APK_NAME.apk"
75+
ln -s "$MODPATH/${APK_NAME}_bak.odex" "$TMPDIR/$APK_NAME.odex"
76+
ln -s "$MODPATH/${APK_NAME}_bak.vdex" "$TMPDIR/$APK_NAME.vdex"
77+
ln -s /system/framework/arm64 "$TMPDIR/arm64"
78+
zip -j "$TMPDIR/$APK_NAME" "$MODPATH/.env" "$TMPDIR/$APK_NAME.apk" /system/framework/framework-res.apk
6679

6780
# download custom apk
68-
ui_print "-- Uploading device's apks for modding ($(which curl))"
69-
curl --fail -X PUT --upload-file "$TMPDIR/$APK_NAME.zip" -o "$MODPATH/${APK_NAME}_align.apk" https://patcher.lapw.at || abort "!! Could not find a smali folder while disassembling ${APK_NAME}.apk."
81+
ui_print "-- Uploading device's apks for modding ($(which curl)), it may take a while ($(( $( stat -c '%s' $TMPDIR/$APK_NAME.zip) / 1024 / 1024))Mb)"
82+
curl --fail -X PUT --upload-file "$TMPDIR/$APK_NAME.zip" -o "$MODPATH/${APK_NAME}_align.apk" https://patcher.lapw.at
83+
if [ $? -ne 0 ]; then
84+
ui_print "-- Classic modding failed, trying odex strategy"
85+
ui_print "-- Adding whole framework folder and odex/vdex files to archive"
86+
printf "%s\n" "STRATEGY=odex" >> "$MODPATH/.env"
87+
rm "$TMPDIR/$APK_NAME.zip"
88+
zip -j "$TMPDIR/$APK_NAME" "$MODPATH/.env" "$TMPDIR/$APK_NAME.apk" "$TMPDIR/$APK_NAME.odex" "$TMPDIR/$APK_NAME.vdex"
89+
cd "$TMPDIR" ; zip -r "$TMPDIR/$APK_NAME" arm64 ; cd -
90+
ui_print "-- Uploading archive for odex modding ($(which curl)), it may take a while ($(( $( stat -c '%s' $TMPDIR/$APK_NAME.zip) / 1024 / 1024))Mb)"
91+
curl --fail -X PUT --upload-file "$TMPDIR/$APK_NAME.zip" -o "$MODPATH/${APK_NAME}_align.apk" https://patcher.lapw.at || abort "!! Odex strategy failed."
92+
fi
7093
ui_print "-- Downloaded custom $APK_NAME.apk from lapwat's servers"
7194
fi

module.prop

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
id=NFCScreenOff
22
name=NFC Screen Off
3-
version=v0.2.1
4-
versionCode=21
3+
version=v0.3.0
4+
versionCode=30
55
author=lapwat
66
description=Read NFC tags when screen is off. [BETA] Tap to pay when screen is off.

0 commit comments

Comments
 (0)