blob: c62bbfb0794dacf716a81bc850c19a5af96a5802 [file] [log] [blame]
Max Weninger8b6ff482020-03-29 17:01:11 +02001#!/system/bin/sh
2#
3# ADDOND_VERSION=2
4#
5# /system/addon.d/69-gapps.sh
6#
7. /postinstall/tmp/backuptool.functions
8
9list_files() {
10cat <<EOF
11app/FaceLock/FaceLock.apk
12app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk
13app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk
14app/GoogleExtShared/GoogleExtShared.apk
15app/GoogleTTS/GoogleTTS.apk
16app/MarkupGoogle/MarkupGoogle.apk
17app/SoundPickerPrebuilt/SoundPickerPrebuilt.apk
18etc/default-permissions/default-permissions.xml
19etc/default-permissions/opengapps-permissions.xml
20etc/g.prop
21etc/permissions/com.google.android.dialer.support.xml
22etc/permissions/com.google.android.maps.xml
23etc/permissions/com.google.android.media.effects.xml
24etc/permissions/privapp-permissions-google.xml
25etc/permissions/split-permissions-google.xml
26etc/preferred-apps/google.xml
27etc/sysconfig/dialer_experience.xml
28etc/sysconfig/google-hiddenapi-package-whitelist.xml
29etc/sysconfig/google.xml
30etc/sysconfig/google_build.xml
31etc/sysconfig/google_exclusives_enable.xml
32framework/com.google.android.dialer.support.jar
33framework/com.google.android.maps.jar
34framework/com.google.android.media.effects.jar
35lib/libfilterpack_facedetect.so
36lib/libfrsdk.so
37lib/libsketchology_native.so
38lib64/libfacenet.so
39lib64/libfilterpack_facedetect.so
40lib64/libfrsdk.so
41lib64/libjni_latinimegoogle.so
42lib64/libsketchology_native.so
43priv-app/CarrierSetup/CarrierSetup.apk
44priv-app/ConfigUpdater/ConfigUpdater.apk
45priv-app/GmsCoreSetupPrebuilt/GmsCoreSetupPrebuilt.apk
46priv-app/GoogleBackupTransport/GoogleBackupTransport.apk
47priv-app/GoogleExtServices/GoogleExtServices.apk
48priv-app/GoogleFeedback/GoogleFeedback.apk
49priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk
50priv-app/GooglePartnerSetup/GooglePartnerSetup.apk
51priv-app/GoogleRestore/GoogleRestore.apk
52priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
53priv-app/Phonesky/Phonesky.apk
54priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
55priv-app/SetupWizard/SetupWizard.apk
56priv-app/Turbo/Turbo.apk
57priv-app/Velvet/Velvet.apk
58priv-app/WellbeingPrebuilt/WellbeingPrebuilt.apk
59usr/srec/en-US/APP_NAME.fst
60usr/srec/en-US/APP_NAME.syms
61usr/srec/en-US/CLG.prewalk.fst
62usr/srec/en-US/CONTACT_NAME.fst
63usr/srec/en-US/CONTACT_NAME.syms
64usr/srec/en-US/SONG_NAME.fst
65usr/srec/en-US/SONG_NAME.syms
66usr/srec/en-US/am_phonemes.syms
67usr/srec/en-US/app_bias.fst
68usr/srec/en-US/c_fst
69usr/srec/en-US/commands.abnf
70usr/srec/en-US/compile_grammar.config
71usr/srec/en-US/config.pumpkin
72usr/srec/en-US/confirmation_bias.fst
73usr/srec/en-US/contacts.abnf
74usr/srec/en-US/contacts_bias.fst
75usr/srec/en-US/contacts_disambig.fst
76usr/srec/en-US/dict
77usr/srec/en-US/dictation.config
78usr/srec/en-US/dnn
79usr/srec/en-US/embedded_class_denorm.mfar
80usr/srec/en-US/embedded_normalizer.mfar
81usr/srec/en-US/endpointer_dictation.config
82usr/srec/en-US/endpointer_model
83usr/srec/en-US/endpointer_model.mmap
84usr/srec/en-US/endpointer_voicesearch.config
85usr/srec/en-US/ep_portable_mean_stddev
86usr/srec/en-US/ep_portable_model.uint8.mmap
87usr/srec/en-US/g2p.data
88usr/srec/en-US/g2p_fst
89usr/srec/en-US/g2p_graphemes.syms
90usr/srec/en-US/g2p_phonemes.syms
91usr/srec/en-US/grammar.config
92usr/srec/en-US/hmm_symbols
93usr/srec/en-US/hmmlist
94usr/srec/en-US/input_mean_std_dev
95usr/srec/en-US/lexicon.U.fst
96usr/srec/en-US/lstm_model.uint8.data
97usr/srec/en-US/magic_mic.config
98usr/srec/en-US/media_bias.fst
99usr/srec/en-US/metadata
100usr/srec/en-US/monastery_config.pumpkin
101usr/srec/en-US/norm_fst
102usr/srec/en-US/offensive_word_normalizer.mfar
103usr/srec/en-US/offline_action_data.pb
104usr/srec/en-US/phonelist
105usr/srec/en-US/portable_lstm
106usr/srec/en-US/portable_meanstddev
107usr/srec/en-US/pumpkin.mmap
108usr/srec/en-US/read_items_bias.fst
109usr/srec/en-US/rescoring.fst.compact
110usr/srec/en-US/semantics.pumpkin
111usr/srec/en-US/skip_items_bias.fst
112usr/srec/en-US/time_bias.fst
113usr/srec/en-US/transform.mfar
114usr/srec/en-US/voice_actions.config
115usr/srec/en-US/voice_actions_compiler.config
116usr/srec/en-US/word_confidence_classifier
117usr/srec/en-US/wordlist.syms
118EOF
119}
120
121list_google() {
122cat <<EOF
123app/GoogleExtShared/GoogleExtShared.apk
124priv-app/GoogleExtServices/GoogleExtServices.apk
125priv-app/GooglePackageInstaller/GooglePackageInstaller.apk
126EOF
127}
128list_aosp() {
129cat <<EOF
130/postinstall/system/priv-app/ExtServices
131/postinstall/system/app/ExtShared
132/postinstall/system/priv-app/PackageInstaller
133EOF
134}
135
136case "$1" in
137 backup)
138 if test -f priv-app/GooglePackageInstaller/GooglePackageInstaller.apk ;then
139 GOOGLE=1
140 list_google | while read FILE DUMMY; do
141 backup_file $S/$FILE
142 done
143 fi
144 list_files | while read FILE DUMMY; do
145 backup_file $S/$FILE
146 done
147 ;;
148 restore)
149 list_files | while read FILE REPLACEMENT; do
150 R=""
151 [ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
152 [ -f "$C/$S/$FILE" ] && restore_file $S/$FILE $R
153 done
154 if [ "$GOOGLE" -eq "1" ]; then
155 list_google | while read FILE REPLACEMENT; do
156 R=""
157 [ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
158 [ -f "$C/$S/$FILE" ] && restore_file $S/$FILE $R
159 done
160 fi
161 ;;
162 pre-backup)
163 ;;
164 post-backup)
165 # Stub
166 ;;
167 pre-restore)
168 if [ "$GOOGLE" -eq "1" ]; then
169 list_aosp | while read FILE DUMMY; do
170 rm -rf $FILE
171 done
172 fi
173 # Remove/postinstall Stock/AOSP apps (from GApps Installer)
174 rm -rf /postinstall/system/app/Provision
175 rm -rf /postinstall/system/priv-app/Provision
176
177 # Remove/postinstall 'other' apps (per installer.data)
178 rm -rf /postinstall/system/app/BookmarkProvider
179 rm -rf /postinstall/system/app/BooksStub
180 rm -rf /postinstall/system/app/CalendarGoogle
181 rm -rf /postinstall/system/app/CloudPrint
182 rm -rf /postinstall/system/app/DeskClockGoogle
183 rm -rf /postinstall/system/app/EditorsDocsStub
184 rm -rf /postinstall/system/app/EditorsSheetsStub
185 rm -rf /postinstall/system/app/EditorsSlidesStub
186 rm -rf /postinstall/system/app/Gmail
187 rm -rf /postinstall/system/app/Gmail2
188 rm -rf /postinstall/system/app/GoogleCalendar
189 rm -rf /postinstall/system/app/GoogleCloudPrint
190 rm -rf /postinstall/system/app/GoogleHangouts
191 rm -rf /postinstall/system/app/GoogleKeep
192 rm -rf /postinstall/system/app/GoogleLatinIme
193 rm -rf /postinstall/system/app/Keep
194 rm -rf /postinstall/system/app/NewsstandStub
195 rm -rf /postinstall/system/app/PartnerBookmarksProvider
196 rm -rf /postinstall/system/app/PrebuiltBugleStub
197 rm -rf /postinstall/system/app/PrebuiltKeepStub
198 rm -rf /postinstall/system/app/QuickSearchBox
199 rm -rf /postinstall/system/app/Vending
200 rm -rf /postinstall/system/priv-app/GmsCore
201 rm -rf /postinstall/system/priv-app/GmsCore_update
202 rm -rf /postinstall/system/priv-app/GoogleHangouts
203 rm -rf /postinstall/system/priv-app/GoogleNow
204 rm -rf /postinstall/system/priv-app/GoogleSearch
205 rm -rf /postinstall/system/priv-app/OneTimeInitializer
206 rm -rf /postinstall/system/priv-app/QuickSearchBox
207 rm -rf /postinstall/system/priv-app/Velvet_update
208 rm -rf /postinstall/system/priv-app/Vending
209
210 # Remove/postinstall 'priv-app' apps from 'app' (per installer.data)
211 rm -rf /postinstall/system/app/CanvasPackageInstaller
212 rm -rf /postinstall/system/app/ConfigUpdater
213 rm -rf /postinstall/system/app/GoogleBackupTransport
214 rm -rf /postinstall/system/app/GoogleFeedback
215 rm -rf /postinstall/system/app/GoogleLoginService
216 rm -rf /postinstall/system/app/GoogleOneTimeInitializer
217 rm -rf /postinstall/system/app/GooglePartnerSetup
218 rm -rf /postinstall/system/app/GoogleServicesFramework
219 rm -rf /postinstall/system/app/OneTimeInitializer
220 rm -rf /postinstall/system/app/Phonesky
221 rm -rf /postinstall/system/app/PrebuiltGmsCore
222 rm -rf /postinstall/system/app/SetupWizard
223 rm -rf /postinstall/system/app/Velvet
224
225 # Remove/postinstall 'required' apps (per installer.data)
226 rm -rf /postinstall/system/app/LatinIME/lib//libjni_keyboarddecoder.so
227 rm -rf /postinstall/system/app/LatinIME/lib//libjni_latinimegoogle.so
228 rm -rf /postinstall/system/lib/libjni_keyboarddecoder.so
229 rm -rf /postinstall/system/lib/libjni_latinimegoogle.so
230 rm -rf /postinstall/system/lib64/libjni_keyboarddecoder.so
231 rm -rf /postinstall/system/lib64/libjni_latinimegoogle.so
232
233 # Remove 'user requested' apps (from gapps-config)
234 # Stub
235 ;;
236 post-restore)
237 if [ -d "/postinstall" ]; then
238 P="/postinstall/system"
239 else
240 P="/system"
241 fi
242
243 # Recreate required symlinks (from GApps Installer)
244 install -d "$P/app/MarkupGoogle/lib/arm64"
245 ln -sfn "$P/lib64/libsketchology_native.so" "$P/app/MarkupGoogle/lib/arm64/libsketchology_native.so"
246 install -d "$P/app/FaceLock/lib/arm64"
247 ln -sfn "$P/lib64/libfacenet.so" "$P/app/FaceLock/lib/arm64/libfacenet.so"
248 install -d "$P/app/LatinIME/lib64/arm64"
249 ln -sfn "$P/lib64/libjni_latinimegoogle.so" "$P/app/LatinIME/lib64/arm64/libjni_latinimegoogle.so"
250 ln -sfn "$P/lib64/libjni_keyboarddecoder.so" "$P/app/LatinIME/lib64/arm64/libjni_keyboarddecoder.so"
251
252 # Apply build.prop changes (from GApps Installer)
253 sed -i "s/ro.error.receiver.system.apps=.*/ro.error.receiver.system.apps=com.google.android.gms/g" /system/system/build.prop
254
255 # Re-pre-ODEX APKs (from GApps Installer)
256
257 # Remove any empty folders we may have created during the removal process
258 for i in /system/app /system/priv-app /system/usr/srec; do
259 if [ -d $i ]; then
260 find $i -type d -exec rmdir -p '{}' \+ 2>/dev/null;
261 fi
262 done;
263 for i in $(list_files); do
264 chown root:root "$P/$i"
265 chmod 644 "$P/$i"
266 chmod 755 "$(dirname "$P/$i")"
267 if [ "$API" -ge "26" ]; then # Android 8.0+ uses 0600 for its permission on build.prop
268 chmod 600 /system/build.prop
269 fi
270 done
271
272 ;;
273esac