@@ -34,15 +34,9 @@ DOWNLOAD_DIR=../download
34
34
DOWNLOAD_CONF_NAME=download.list
35
35
OUTPUT_DIR=../output
36
36
MOUNT_DIR=" $WORK_DIR " /system
37
- CLEAN_DOWNLOAD_WSA=0
38
- CLEAN_DOWNLOAD_MAGISK=0
39
- CLEAN_DOWNLOAD_GAPPS=0
40
- REMOVE_AMAZON=" keep"
41
- COMPRESS_OUTPUT=" no"
42
- OFFLINE=0
43
37
umount_clean (){
44
- echo " Cleanup Work Directory"
45
38
if [ -d " $MOUNT_DIR " ]; then
39
+ echo " Cleanup Work Directory"
46
40
if [ -d " $MOUNT_DIR /vendor" ]; then
47
41
sudo umount " $MOUNT_DIR " /vendor
48
42
fi
@@ -53,19 +47,21 @@ umount_clean(){
53
47
sudo umount " $MOUNT_DIR " /system_ext
54
48
fi
55
49
sudo umount " $MOUNT_DIR "
50
+ sudo rm -rf " ${WORK_DIR:? } "
51
+ else
52
+ rm -rf " ${WORK_DIR:? } "
56
53
fi
57
- sudo rm -rf " ${WORK_DIR:? } "
58
54
}
59
55
clean_download (){
60
56
if [ -d " $DOWNLOAD_DIR " ]; then
61
57
echo " Cleanup Download Directory"
62
- if [ " $CLEAN_DOWNLOAD_WSA " = " 1 " ]; then
58
+ if [ " $CLEAN_DOWNLOAD_WSA " ]; then
63
59
rm -f " ${WSA_ZIP_PATH:? } "
64
60
fi
65
- if [ " $CLEAN_DOWNLOAD_MAGISK " = " 1 " ]; then
61
+ if [ " $CLEAN_DOWNLOAD_MAGISK " ]; then
66
62
rm -f " ${MAGISK_PATH:? } "
67
63
fi
68
- if [ " $CLEAN_DOWNLOAD_GAPPS " = " 1 " ]; then
64
+ if [ " $CLEAN_DOWNLOAD_GAPPS " ]; then
69
65
rm -f " ${GAPPS_PATH:? } "
70
66
fi
71
67
fi
@@ -84,24 +80,42 @@ function Gen_Rand_Str {
84
80
echo $( date +%s%N| md5sum| base64| head -c " $1 " )
85
81
}
86
82
83
+
84
+ default (){
85
+ ARCH=x64
86
+ RELEASE_TYPE=retail
87
+ MAGISK_VER=stable
88
+ GAPPS_BRAND=OpenGApps
89
+ GAPPS_VARIANT=pico
90
+ ROOT_SOL=magisk
91
+ }
92
+
93
+ exit_with_message (){
94
+ echo " ERROR: $1 "
95
+ usage
96
+ abort
97
+ }
98
+
87
99
usage (){
88
- if [ -n " $1 " ]; then
89
- echo " Unknown parameter: $1 "
90
- fi
100
+ default
91
101
echo " Usage:
92
- --arch
93
- --release-type
94
- --magisk-ver
95
- --gapps-brand
96
- --gapps-variant
97
- --root-sol
98
- --remove-amazon
99
- --compress
100
- --offline
101
- --magisk-custom
102
- --debug
102
+ --arch Architecture of WSA, x64 or arm64, default: $ARCH
103
+ --release-type Release type of WSA, retail, RP (Release Preview), WIS (Insider Slow) or WIF (Insider Fast), default: $RELEASE_TYPE
104
+ --magisk-ver Magisk version, stable or canary, default: $MAGISK_VER
105
+ --gapps-brand GApps brand, OpenGApps or MindTheGApps, default: $GAPPS_BRAND
106
+ --gapps-variant GApps variant, pico or full, etc...., default: $GAPPS_VARIANT
107
+ --root-sol Root solution, magisk or none, default: $ROOT_SOL
108
+ --remove-amazon Remove Amazon from the system, default: false
109
+ --compress Compress the WSA, default: false
110
+ --offline Build WSA offline, default: false
111
+ --magisk-custom Install custom Magisk, default: false
112
+ --debug Debug build mode, default: false
113
+ --help Show this help message and exit
114
+
115
+ Example:
116
+ ./build.sh --arch x64 --release-type retail --magisk-ver stable --gapps-brand OpenGApps --gapps-variant pico --remove-amazon
117
+ ./build.sh --arch x64 --release-type retail --remove-amazon --magisk-custom --offline
103
118
"
104
- exit 1
105
119
}
106
120
107
121
ARGUMENT_LIST=(
@@ -116,62 +130,134 @@ ARGUMENT_LIST=(
116
130
" offline"
117
131
" magisk-custom"
118
132
" debug"
133
+ " help"
119
134
)
120
135
136
+ default
137
+
121
138
opts=$( getopt \
122
139
--longoptions " $( printf " %s," " ${ARGUMENT_LIST[@]} " ) " \
123
140
--name " $( basename " $0 " ) " \
124
141
--options " " \
125
142
-- " $@ "
126
- )
143
+ ) || abort
127
144
128
145
eval set --" $opts "
129
146
while [[ $# -gt 0 ]]; do
130
147
case " $1 " in
131
- --arch ) ARCH=" $2 " ; shift 2 ;;
132
- --release-type ) RELEASE_TYPE=" $2 " ; shift 2 ;;
133
- --magisk-ver ) MAGISK_VER=" $2 " ; shift 2 ;;
134
- --gapps-brand ) GAPPS_BRAND=" $2 " ; shift 2 ;;
135
- --gapps-variant ) GAPPS_VARIANT=" $2 " ; shift 2 ;;
136
- --remove-amazon ) REMOVE_AMAZON=" remove" ; shift ;;
137
- --root-sol ) ROOT_SOL=" $2 " ; shift 2 ;;
138
- --compress ) COMPRESS_OUTPUT=" yes" ; shift ;;
139
- --offline ) OFFLINE=" 1" ; shift ;;
140
- --debug ) DEBUG=" 1" ; shift ;;
141
- --magisk-custom ) CUSTOM_MAGISK=" 1" ; shift ;;
142
- -- ) shift ; break ;;
143
- ? ) usage " $2 " ; shift ;;
144
- * ) break ;;
148
+ --arch ) ARCH=" $2 " ; shift 2 ;;
149
+ --release-type ) RELEASE_TYPE=" $2 " ; shift 2 ;;
150
+ --magisk-ver ) MAGISK_VER=" $2 " ; shift 2 ;;
151
+ --gapps-brand ) GAPPS_BRAND=" $2 " ; shift 2 ;;
152
+ --gapps-variant ) GAPPS_VARIANT=" $2 " ; shift 2 ;;
153
+ --root-sol ) ROOT_SOL=" $2 " ; shift 2 ;;
154
+ --remove-amazon ) REMOVE_AMAZON=" remove" ; shift ;;
155
+ --compress ) COMPRESS_OUTPUT=" yes" ; shift ;;
156
+ --offline ) OFFLINE=" on" ; shift ;;
157
+ --magisk-custom ) CUSTOM_MAGISK=" debug" ; MAGISK_VER=$CUSTOM_MAGISK ; shift ;;
158
+ --debug ) DEBUG=" on" ; shift ;;
159
+ --help ) usage; exit 0 ;;
160
+ -- ) shift ; break ;;
145
161
esac
146
162
done
147
163
148
- declare -A PARA_CHECK_LIST=([ARCH]=" $ARCH " [RELEASE_TYPE]=" $RELEASE_TYPE " [MAGISK_VER]=" $MAGISK_VER " [GAPPS_VARIANT]=" $GAPPS_VARIANT " [REMOVE_AMAZON]=" $REMOVE_AMAZON " [ROOT_SOL]=" $ROOT_SOL " )
149
- for i in " ${PARA_CHECK_LIST[@]} " ;
150
- do
151
- if [ -z " $i " ]; then
152
- usage
153
- fi
154
- done
164
+ ARCH_MAP=(
165
+ " x64"
166
+ " arm64"
167
+ )
168
+
169
+ RELEASE_TYPE_MAP=(
170
+ " retail"
171
+ " RP"
172
+ " WIS"
173
+ " WIF"
174
+ )
175
+
176
+ MAGISK_VER_MAP=(
177
+ " stable"
178
+ " beta"
179
+ " canary"
180
+ " debug"
181
+ )
182
+
183
+ GAPPS_BRAND_MAP=(
184
+ " OpenGApps"
185
+ " MindTheGApps"
186
+ )
187
+
188
+ GAPPS_VARIANT_MAP=(
189
+ " super"
190
+ " stock"
191
+ " full"
192
+ " mini"
193
+ " micro"
194
+ " nano"
195
+ " pico"
196
+ " tvstock"
197
+ " tvmini"
198
+ )
199
+
200
+ ROOT_SOL_MAP=(
201
+ " magisk"
202
+ " none"
203
+ )
155
204
156
- echo -e " build: ARCH=$ARCH \nRELEASE_TYPE=$RELEASE_TYPE \nMAGISK_VER=$MAGISK_VER \nGAPPS_VARIANT=$GAPPS_VARIANT \nREMOVE_AMAZON=$REMOVE_AMAZON \nROOT_SOL=$ROOT_SOL \nCOMPRESS_OUTPUT=$COMPRESS_OUTPUT "
205
+ check_list (){
206
+ local input=$1
207
+ local name=$2
208
+ shift
209
+ local arr=(" $@ " )
210
+ local list_count=${# arr[@]}
211
+ for i in " ${arr[@]} " ; do
212
+ if [ " $input " == " $i " ]; then
213
+ break
214
+ fi
215
+ (( list_count-- ))
216
+ if (( "$list_count " <= 0 )) ; then
217
+ exit_with_message " Invalid $name : $input "
218
+ fi
219
+ done
220
+ }
157
221
158
- declare -A RELEASE_TYPE_MAP=([" retail" ]=" Retail" [" release preview" ]=" RP" [" insider slow" ]=" WIS" [" insider fast" ]=" WIF" )
222
+ check_list " $ARCH " " Architecture" " ${ARCH_MAP[@]} "
223
+ check_list " $RELEASE_TYPE " " Release Type" " ${RELEASE_TYPE_MAP[@]} "
224
+ check_list " $MAGISK_VER " " Magisk Version" " ${MAGISK_VER_MAP[@]} "
225
+ check_list " $GAPPS_BRAND " " GApps Brand" " ${GAPPS_BRAND_MAP[@]} "
226
+ check_list " $GAPPS_VARIANT " " GApps Variant" " ${GAPPS_VARIANT_MAP[@]} "
227
+ check_list " $ROOT_SOL " " Root Solution" " ${ROOT_SOL_MAP[@]} "
159
228
160
- WSA_ZIP_PATH=$DOWNLOAD_DIR /wsa-$ARCH -${RELEASE_TYPE_MAP[$RELEASE_TYPE]} .zip
161
- vclibs_PATH=vclibs-" $ARCH " .appx
162
- xaml_PATH=xaml-" $ARCH " .appx
229
+ if [ " $DEBUG " ]; then
230
+ set -x
231
+ fi
232
+
233
+ declare -A RELEASE_NAME_MAP=([" retail" ]=" Retail" [" RP" ]=" Release Preview" [" WIS" ]=" Insider Slow" [" WIF" ]=" Insider Fast" )
234
+ RELEASE_NAME=${RELEASE_NAME_MAP[$RELEASE_TYPE]} || abort
235
+
236
+ echo -e " build: ARCH=$ARCH \nRELEASE_TYPE=$RELEASE_NAME \nMAGISK_VER=$MAGISK_VER \nGAPPS_VARIANT=$GAPPS_VARIANT \nROOT_SOL=$ROOT_SOL "
237
+
238
+ WSA_ZIP_PATH=$DOWNLOAD_DIR /wsa-$ARCH -$RELEASE_TYPE .zip
239
+ vclibs_PATH=$DOWNLOAD_DIR /vclibs-" $ARCH " .appx
240
+ xaml_PATH=$DOWNLOAD_DIR /xaml-" $ARCH " .appx
163
241
MAGISK_PATH=$DOWNLOAD_DIR /magisk-$MAGISK_VER .zip
242
+ if [ " $CUSTOM_MAGISK " ]; then
243
+ if [ ! -f " $MAGISK_PATH " ]; then
244
+ echo " Custom Magisk not found, please rename it to magisk-debug.zip and put it in $DOWNLOAD_DIR "
245
+ abort
246
+ fi
247
+ fi
164
248
if [ " $GAPPS_BRAND " = " OpenGApps" ]; then
165
249
GAPPS_PATH=" $DOWNLOAD_DIR " /OpenGApps-$ARCH -$GAPPS_VARIANT .zip
166
250
else
167
251
GAPPS_PATH=" $DOWNLOAD_DIR " /MindTheGapps-" $ARCH " .zip
168
252
fi
169
-
170
- if [ " $OFFLINE " != " 1" ]; then
253
+ if [ " $( sudo whoami) " != " root" ]; then
254
+ sudo echo " sudo is required to run this script"
255
+ fi
256
+ if [ -z " ${OFFLINE+x} " ]; then
171
257
trap ' rm -f -- "${DOWNLOAD_DIR:?}/${DOWNLOAD_CONF_NAME}"' EXIT
172
258
echo " Generate Download Links"
173
259
python3 generateWSALinks.py " $ARCH " " $RELEASE_TYPE " " $DOWNLOAD_DIR " " $DOWNLOAD_CONF_NAME " || abort
174
- if [ " $ CUSTOM_MAGISK" != " 1 " ]; then
260
+ if [ -z " ${ CUSTOM_MAGISK+x} " ]; then
175
261
python3 generateMagiskLink.py " $MAGISK_VER " " $DOWNLOAD_DIR " " $DOWNLOAD_CONF_NAME " || abort
176
262
fi
177
263
if [ " $GAPPS_VARIANT " != ' none' ] && [ " $GAPPS_VARIANT " != ' ' ]; then
@@ -186,21 +272,20 @@ if [ "$OFFLINE" != "1" ]; then
186
272
exit 1
187
273
fi
188
274
else
189
- if [ ! -f " $WSA_ZIP_PATH " ] || [ ! -f " $xaml_PATH " ] || [ ! -f " $vclibs_PATH " ]; then
190
- echo " Offline mode: missing WSA files."
191
- OFFLINE_ERR=" 1"
192
- fi
193
- if [ ! -f " $MAGISK_PATH " ]; then
194
- echo " Offline mode: missing Magisk $MAGISK_VER file."
195
- OFFLINE_ERR=" 1"
196
- fi
275
+ declare -A FILES_CHECK_LIST=([WSA_ZIP_PATH]=" $WSA_ZIP_PATH " [xaml_PATH]=" $xaml_PATH " [vclibs_PATH]=" $vclibs_PATH " [MAGISK_PATH]=" $MAGISK_PATH " )
276
+ for i in " ${FILES_CHECK_LIST[@]} " ; do
277
+ if [ ! -f " $i " ]; then
278
+ echo " Offline mode: missing [$i ]."
279
+ OFFLINE_ERR=" 1"
280
+ fi
281
+ done
197
282
if [ " $GAPPS_VARIANT " != ' none' ] && [ " $GAPPS_VARIANT " != ' ' ]; then
198
283
if [ ! -f " $GAPPS_PATH " ]; then
199
- echo " Offline mode: missing $GAPPS_BRAND file ."
284
+ echo " Offline mode: missing [ $GAPPS_PATH ] ."
200
285
OFFLINE_ERR=" 1"
201
286
fi
202
287
fi
203
- if [ -n " $OFFLINE_ERR " ]; then
288
+ if [ " $OFFLINE_ERR " ]; then
204
289
echo " Offline mode: Some files are missing, please disable offline mode."
205
290
exit 1
206
291
fi
@@ -231,7 +316,7 @@ if [ -f "$MAGISK_PATH" ]; then
231
316
CLEAN_DOWNLOAD_MAGISK=1
232
317
abort
233
318
fi
234
- elif [ " $ CUSTOM_MAGISK" != " 1 " ]; then
319
+ elif [ -z " ${ CUSTOM_MAGISK+x} " ]; then
235
320
echo " The Magisk zip package does not exist, is the download incomplete?"
236
321
exit 1
237
322
else
@@ -318,7 +403,7 @@ sudo mount -o loop "$WORK_DIR"/wsa/"$ARCH"/product.img "$MOUNT_DIR"/product || a
318
403
sudo mount -o loop " $WORK_DIR " /wsa/" $ARCH " /system_ext.img " $MOUNT_DIR " /system_ext || abort
319
404
echo -e " done\n"
320
405
321
- if [ " $REMOVE_AMAZON " = ' remove ' ]; then
406
+ if [ " $REMOVE_AMAZON " ]; then
322
407
echo " Remove Amazon AppStore"
323
408
find " ${MOUNT_DIR:? } " /product/{etc/permissions,etc/sysconfig,framework,priv-app} | grep -e amazon -e venezia | sudo xargs rm -rf
324
409
echo -e " done\n"
@@ -531,7 +616,7 @@ echo -e "Shrink images done\n"
531
616
532
617
echo " Remove signature and add scripts"
533
618
sudo rm -rf " ${WORK_DIR:? } " /wsa/" $ARCH " /\[ Content_Types\] .xml " $WORK_DIR " /wsa/" $ARCH " /AppxBlockMap.xml " $WORK_DIR " /wsa/" $ARCH " /AppxSignature.p7x " $WORK_DIR " /wsa/" $ARCH " /AppxMetadata || abort
534
- cp " $DOWNLOAD_DIR " / " $ vclibs_PATH" " $DOWNLOAD_DIR " / " $xaml_PATH " " $WORK_DIR " /wsa/" $ARCH " || abort
619
+ cp " $vclibs_PATH " " $xaml_PATH " " $WORK_DIR " /wsa/" $ARCH " || abort
535
620
tee " $WORK_DIR " /wsa/" $ARCH " /Install.ps1 << EOF
536
621
# Automated Install script by Midonei
537
622
# http://github.com/doneibcn
643
728
else
644
729
name2=" -$GAPPS_BRAND "
645
730
fi
646
- if [ " $GAPPS_BRAND " = " OpenGApps" ] && [ " $DEBUG " != " 1 " ]; then
731
+ if [ " $GAPPS_BRAND " = " OpenGApps" ] && [ " $DEBUG " ]; then
647
732
echo " :warning: Since OpenGApps doesn't officially support Android 12.1 yet, lock the variant to pico!"
648
733
fi
649
734
fi
656
741
if [ ! -d " $OUTPUT_DIR " ]; then
657
742
mkdir -p " $OUTPUT_DIR "
658
743
fi
659
- if [ " $COMPRESS_OUTPUT " = " yes " ]; then
744
+ if [ " $COMPRESS_OUTPUT " ]; then
660
745
rm -f " ${OUTPUT_DIR:? } " /" $artifact_name .7z" || abort
661
746
7z a " $OUTPUT_DIR " /" $artifact_name .7z" " $WORK_DIR /wsa/$ARCH /" || abort
662
- elif [ " $COMPRESS_OUTPUT " = " no " ] ; then
747
+ else
663
748
rm -rf " ${OUTPUT_DIR:? } /${artifact_name} " || abort
664
749
mv " $WORK_DIR " /wsa/" $ARCH " " $OUTPUT_DIR /$artifact_name " || abort
665
750
fi
0 commit comments