Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@satmandu
Created April 10, 2020 15:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save satmandu/52f881ac9539eb532dba63dc341a5954 to your computer and use it in GitHub Desktop.
Save satmandu/52f881ac9539eb532dba63dc341a5954 to your computer and use it in GitHub Desktop.
not working 70-gapps.sh
#!/sbin/sh
#
# ADDOND_VERSION=2
#
# /system/addon.d/70-gapps.sh
#
. /tmp/backuptool.functions
if [ -z $backuptool_ab ]; then
SYS=$S
TMP=/tmp
else
SYS=/postinstall/system
TMP=/postinstall/tmp
fi
list_files() {
cat <<EOF
._etc
app/CalendarGooglePrebuilt/CalendarGooglePrebuilt.apk
app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk
app/GoogleExtShared/GoogleExtShared.apk
app/GoogleTTS/GoogleTTS.apk
app/MarkupGoogle/MarkupGoogle.apk
app/PrebuiltExchange3Google/PrebuiltExchange3Google.apk
app/PrebuiltGmail/PrebuiltGmail.apk
app/SoundPickerPrebuilt/SoundPickerPrebuilt.apk
app/WallpaperPickerGooglePrebuilt/WallpaperPickerGooglePrebuilt.apk
etc/._sysconfig
etc/default-permissions/default-permissions.xml
etc/default-permissions/opengapps-permissions-q.xml
etc/g.prop
etc/permissions/com.google.android.dialer.support.xml
etc/permissions/com.google.android.maps.xml
etc/permissions/com.google.android.media.effects.xml
etc/permissions/privapp-permissions-google.xml
etc/permissions/split-permissions-google.xml
etc/preferred-apps/google.xml
etc/sysconfig/._nexus.xml
etc/sysconfig/._pixel_experience_2017.xml
etc/sysconfig/._pixel_experience_2018.xml
etc/sysconfig/dialer_experience.xml
etc/sysconfig/google-hiddenapi-package-whitelist.xml
etc/sysconfig/google.xml
etc/sysconfig/google_build.xml
etc/sysconfig/google_exclusives_enable.xml
etc/sysconfig/nexus.xml
etc/sysconfig/pixel_experience_2017.xml
etc/sysconfig/pixel_experience_2018.xml
framework/com.google.android.dialer.support.jar
framework/com.google.android.maps.jar
framework/com.google.android.media.effects.jar
lib/libsketchology_native.so
lib64/libjni_latinimegoogle.so
lib64/libsketchology_native.so
priv-app/AndroidMigratePrebuilt/AndroidMigratePrebuilt.apk
priv-app/CarrierSetup/CarrierSetup.apk
priv-app/ConfigUpdater/ConfigUpdater.apk
priv-app/GmsCoreSetupPrebuilt/GmsCoreSetupPrebuilt.apk
priv-app/GoogleBackupTransport/GoogleBackupTransport.apk
priv-app/GoogleExtServices/GoogleExtServices.apk
priv-app/GoogleFeedback/GoogleFeedback.apk
priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk
priv-app/GooglePackageInstaller/GooglePackageInstaller.apk
priv-app/GooglePartnerSetup/GooglePartnerSetup.apk
priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
priv-app/MatchmakerPrebuilt/MatchmakerPrebuilt.apk
priv-app/NexusLauncherPrebuilt/NexusLauncherPrebuilt.apk
priv-app/Phonesky/Phonesky.apk
priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
priv-app/SetupWizard/SetupWizard.apk
priv-app/Turbo/Turbo.apk
priv-app/Velvet/Velvet.apk
priv-app/WellbeingPrebuilt/WellbeingPrebuilt.apk
usr/srec/en-US/APP_NAME.fst
usr/srec/en-US/APP_NAME.syms
usr/srec/en-US/CLG.prewalk.fst
usr/srec/en-US/CONTACT_NAME.fst
usr/srec/en-US/CONTACT_NAME.syms
usr/srec/en-US/SONG_NAME.fst
usr/srec/en-US/SONG_NAME.syms
usr/srec/en-US/am_phonemes.syms
usr/srec/en-US/app_bias.fst
usr/srec/en-US/c_fst
usr/srec/en-US/commands.abnf
usr/srec/en-US/compile_grammar.config
usr/srec/en-US/config.pumpkin
usr/srec/en-US/confirmation_bias.fst
usr/srec/en-US/contacts.abnf
usr/srec/en-US/contacts_bias.fst
usr/srec/en-US/contacts_disambig.fst
usr/srec/en-US/dict
usr/srec/en-US/dictation.config
usr/srec/en-US/dnn
usr/srec/en-US/embedded_class_denorm.mfar
usr/srec/en-US/embedded_normalizer.mfar
usr/srec/en-US/endpointer_dictation.config
usr/srec/en-US/endpointer_model
usr/srec/en-US/endpointer_model.mmap
usr/srec/en-US/endpointer_voicesearch.config
usr/srec/en-US/ep_portable_mean_stddev
usr/srec/en-US/ep_portable_model.uint8.mmap
usr/srec/en-US/g2p.data
usr/srec/en-US/g2p_fst
usr/srec/en-US/g2p_graphemes.syms
usr/srec/en-US/g2p_phonemes.syms
usr/srec/en-US/grammar.config
usr/srec/en-US/hmm_symbols
usr/srec/en-US/hmmlist
usr/srec/en-US/input_mean_std_dev
usr/srec/en-US/lexicon.U.fst
usr/srec/en-US/lstm_model.uint8.data
usr/srec/en-US/magic_mic.config
usr/srec/en-US/media_bias.fst
usr/srec/en-US/metadata
usr/srec/en-US/monastery_config.pumpkin
usr/srec/en-US/norm_fst
usr/srec/en-US/offensive_word_normalizer.mfar
usr/srec/en-US/offline_action_data.pb
usr/srec/en-US/phonelist
usr/srec/en-US/portable_lstm
usr/srec/en-US/portable_meanstddev
usr/srec/en-US/pumpkin.mmap
usr/srec/en-US/read_items_bias.fst
usr/srec/en-US/rescoring.fst.compact
usr/srec/en-US/semantics.pumpkin
usr/srec/en-US/skip_items_bias.fst
usr/srec/en-US/time_bias.fst
usr/srec/en-US/transform.mfar
usr/srec/en-US/voice_actions.config
usr/srec/en-US/voice_actions_compiler.config
usr/srec/en-US/word_confidence_classifier
usr/srec/en-US/wordlist.syms
vendor/overlay/ActionsServicesOverlay.apk
vendor/overlay/PixelLauncherOverlay.apk
vendor/overlay/WellbeingOverlay.apk
EOF
}
# Backup/Restore using /sdcard if the installed GApps size plus a buffer for other addon.d backups (204800=200MB) is larger than /tmp
installed_gapps_size_kb=$(grep "^installed_gapps_size_kb" $TMP/gapps.prop | cut -d '=' -f 2)
if [ ! "$installed_gapps_size_kb" ]; then
installed_gapps_size_kb="$(cd $SYS; size=0; for n in $(du -ak $(list_files) | cut -f 1); do size=$((size+n)); done; echo "$size")"
echo "installed_gapps_size_kb=$installed_gapps_size_kb" >> $TMP/gapps.prop
fi
free_tmp_size_kb=$(grep "^free_tmp_size_kb" $TMP/gapps.prop | cut -d '=' -f 2)
if [ ! "$free_tmp_size_kb" ]; then
free_tmp_size_kb="$(echo $(df -k $TMP | tail -n 1) | cut -d ' ' -f 4)"
echo "free_tmp_size_kb=$free_tmp_size_kb" >> $TMP/gapps.prop
fi
buffer_size_kb=204800
if [ $((installed_gapps_size_kb + buffer_size_kb)) -ge "$free_tmp_size_kb" ]; then
C=/sdcard/tmp-gapps
fi
# Get ROM SDK from installed GApps
rom_build_sdk=$(grep "^rom_build_sdk" $TMP/gapps.prop | cut -d '=' -f 2)
if [ ! "$rom_build_sdk" ]; then
rom_build_sdk="$(cd $SYS; grep "^ro.addon.sdk" etc/g.prop | cut -d '=' -f 2)"
echo "rom_build_sdk=$rom_build_sdk" >> $TMP/gapps.prop
fi
case "$1" in
backup)
list_files | while read -r FILE DUMMY; do
backup_file "$S"/"$FILE"
done
;;
restore)
list_files | while read -r FILE REPLACEMENT; do
R=""
[ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
[ -f "$C/$S/$FILE" ] && restore_file "$S"/"$FILE" "$R"
done
;;
pre-backup)
# Stub
;;
post-backup)
# Stub
;;
pre-restore)
# Remove Stock/AOSP apps (from GApps Installer)
rm -rf $SYS/app/Calendar
rm -rf $SYS/app/FineOSCalendar
rm -rf $SYS/app/MonthCalendarWidget
rm -rf $SYS/priv-app/Calendar
rm -rf $SYS/product/app/Calendar
rm -rf $SYS/product/app/FineOSCalendar
rm -rf $SYS/product/app/MonthCalendarWidget
rm -rf $SYS/product/priv-app/Calendar
rm -rf $SYS/app/CyanogenSetupWizard
rm -rf $SYS/priv-app/CyanogenSetupWizard
rm -rf $SYS/product/app/CyanogenSetupWizard
rm -rf $SYS/product/priv-app/CyanogenSetupWizard
rm -rf $SYS/app/Exchange2
rm -rf $SYS/priv-app/Exchange2
rm -rf $SYS/product/app/Exchange2
rm -rf $SYS/product/priv-app/Exchange2
rm -rf $SYS/priv-app/ExtServices
rm -rf $SYS/product/priv-app/ExtServices
rm -rf $SYS/app/ExtShared
rm -rf $SYS/product/app/ExtShared
rm -rf $SYS/app/PackageInstaller
rm -rf $SYS/priv-app/PackageInstaller
rm -rf $SYS/priv-app/packageinstaller
rm -rf $SYS/product/app/PackageInstaller
rm -rf $SYS/product/priv-app/PackageInstaller
rm -rf $SYS/product/priv-app/packageinstaller
rm -rf $SYS/app/Provision
rm -rf $SYS/priv-app/Provision
rm -rf $SYS/product/app/Provision
rm -rf $SYS/product/priv-app/Provision
rm -rf $SYS/app/WallpaperPicker
rm -rf $SYS/product/app/WallpaperPicker
# Remove 'other' apps (per installer.data)
rm -rf $SYS/app/BookmarkProvider
rm -rf $SYS/app/BooksStub
rm -rf $SYS/app/CalendarGoogle
rm -rf $SYS/app/CloudPrint
rm -rf $SYS/app/DeskClockGoogle
rm -rf $SYS/app/EditorsDocsStub
rm -rf $SYS/app/EditorsSheetsStub
rm -rf $SYS/app/EditorsSlidesStub
rm -rf $SYS/app/Gmail
rm -rf $SYS/app/Gmail2
rm -rf $SYS/app/GoogleCalendar
rm -rf $SYS/app/GoogleCloudPrint
rm -rf $SYS/app/GoogleHangouts
rm -rf $SYS/app/GoogleKeep
rm -rf $SYS/app/GoogleLatinIme
rm -rf $SYS/app/Keep
rm -rf $SYS/app/NewsstandStub
rm -rf $SYS/app/PartnerBookmarksProvider
rm -rf $SYS/app/PrebuiltBugleStub
rm -rf $SYS/app/PrebuiltKeepStub
rm -rf $SYS/app/QuickSearchBox
rm -rf $SYS/app/Vending
rm -rf $SYS/priv-app/GmsCore
rm -rf $SYS/priv-app/GmsCore_update
rm -rf $SYS/priv-app/GoogleHangouts
rm -rf $SYS/priv-app/GoogleNow
rm -rf $SYS/priv-app/GoogleSearch
rm -rf $SYS/priv-app/OneTimeInitializer
rm -rf $SYS/priv-app/QuickSearchBox
rm -rf $SYS/priv-app/Velvet_update
rm -rf $SYS/priv-app/Vending
rm -rf $SYS/product/app/BookmarkProvider
rm -rf $SYS/product/app/BooksStub
rm -rf $SYS/product/app/CalendarGoogle
rm -rf $SYS/product/app/CloudPrint
rm -rf $SYS/product/app/DeskClockGoogle
rm -rf $SYS/product/app/EditorsDocsStub
rm -rf $SYS/product/app/EditorsSheetsStub
rm -rf $SYS/product/app/EditorsSlidesStub
rm -rf $SYS/product/app/Gmail
rm -rf $SYS/product/app/Gmail2
rm -rf $SYS/product/app/GoogleCalendar
rm -rf $SYS/product/app/GoogleCloudPrint
rm -rf $SYS/product/app/GoogleHangouts
rm -rf $SYS/product/app/GoogleKeep
rm -rf $SYS/product/app/GoogleLatinIme
rm -rf $SYS/product/app/Keep
rm -rf $SYS/product/app/NewsstandStub
rm -rf $SYS/product/app/PartnerBookmarksProvider
rm -rf $SYS/product/app/PrebuiltBugleStub
rm -rf $SYS/product/app/PrebuiltKeepStub
rm -rf $SYS/product/app/QuickSearchBox
rm -rf $SYS/product/app/Vending
rm -rf $SYS/product/priv-app/GmsCore
rm -rf $SYS/product/priv-app/GmsCore_update
rm -rf $SYS/product/priv-app/GoogleHangouts
rm -rf $SYS/product/priv-app/GoogleNow
rm -rf $SYS/product/priv-app/GoogleSearch
rm -rf $SYS/product/priv-app/OneTimeInitializer
rm -rf $SYS/product/priv-app/QuickSearchBox
rm -rf $SYS/product/priv-app/Velvet_update
rm -rf $SYS/product/priv-app/Vending
# Remove 'priv-app' apps from 'app' (per installer.data)
rm -rf $SYS/app/CanvasPackageInstaller
rm -rf $SYS/app/ConfigUpdater
rm -rf $SYS/app/GoogleBackupTransport
rm -rf $SYS/app/GoogleFeedback
rm -rf $SYS/app/GoogleLoginService
rm -rf $SYS/app/GoogleOneTimeInitializer
rm -rf $SYS/app/GooglePartnerSetup
rm -rf $SYS/app/GoogleServicesFramework
rm -rf $SYS/app/OneTimeInitializer
rm -rf $SYS/app/Phonesky
rm -rf $SYS/app/PrebuiltGmsCore
rm -rf $SYS/app/SetupWizard
rm -rf $SYS/app/Velvet
rm -rf $SYS/product/app/CanvasPackageInstaller
rm -rf $SYS/product/app/ConfigUpdater
rm -rf $SYS/product/app/GoogleBackupTransport
rm -rf $SYS/product/app/GoogleFeedback
rm -rf $SYS/product/app/GoogleLoginService
rm -rf $SYS/product/app/GoogleOneTimeInitializer
rm -rf $SYS/product/app/GooglePartnerSetup
rm -rf $SYS/product/app/GoogleServicesFramework
rm -rf $SYS/product/app/OneTimeInitializer
rm -rf $SYS/product/app/Phonesky
rm -rf $SYS/product/app/PrebuiltGmsCore
rm -rf $SYS/product/app/SetupWizard
rm -rf $SYS/product/app/Velvet
# Remove 'required' apps (per installer.data)
rm -rf $SYS/app/LatinIME/lib//libjni_keyboarddecoder.so
rm -rf $SYS/app/LatinIME/lib//libjni_latinimegoogle.so
rm -rf $SYS/lib/libjni_keyboarddecoder.so
rm -rf $SYS/lib/libjni_latinimegoogle.so
rm -rf $SYS/lib64/libjni_keyboarddecoder.so
rm -rf $SYS/lib64/libjni_latinimegoogle.so
rm -rf $SYS/product/app/LatinIME/lib//libjni_keyboarddecoder.so
rm -rf $SYS/product/app/LatinIME/lib//libjni_latinimegoogle.so
rm -rf $SYS/product/lib/libjni_keyboarddecoder.so
rm -rf $SYS/product/lib/libjni_latinimegoogle.so
rm -rf $SYS/product/lib64/libjni_keyboarddecoder.so
rm -rf $SYS/product/lib64/libjni_latinimegoogle.so
# Remove 'user requested' apps (from gapps-config)
;;
post-restore)
# Recreate required symlinks (from GApps Installer)
install -d "/system/app/MarkupGoogle/lib/arm64"
ln -sfn "/system/lib64/libsketchology_native.so" "/system/app/MarkupGoogle/lib/arm64/libsketchology_native.so"
install -d "$SYS/app/LatinIME/lib64/arm64"
ln -sfn "$SYS/product/lib64/libjni_latinimegoogle.so" "$SYS/product/app/LatinIME/lib64/arm64/libjni_latinimegoogle.so"
ln -sfn "$SYS/product/lib64/libjni_keyboarddecoder.so" "$SYS/product/app/LatinIME/lib64/arm64/libjni_keyboarddecoder.so"
ln -sfn "$SYS/lib64/libjni_latinimegoogle.so" "$SYS/app/LatinIME/lib64/arm64/libjni_latinimegoogle.so"
ln -sfn "$SYS/lib64/libjni_keyboarddecoder.so" "$SYS/app/LatinIME/lib64/arm64/libjni_keyboarddecoder.so"
# Apply build.prop changes (from GApps Installer)
sed -i "s/ro.error.receiver.system.apps=.*/ro.error.receiver.system.apps=com.google.android.gms/g" $SYS/build.prop
# Re-pre-ODEX APKs (from GApps Installer)
# Remove any empty folders we may have created during the removal process
for i in $SYS/app $SYS/priv-app $SYS/vendor/pittpatt $SYS/usr/srec; do
if [ -d $i ]; then
find $i -type d -exec rmdir -p '{}' \+ 2>/dev/null
fi
done
# Fix ownership/permissions and clean up after backup and restore from /sdcard
find $SYS/vendor/pittpatt -type d -exec chown 0:2000 '{}' \; 2>/dev/null # Change pittpatt folders to root:shell per Google Factory Settings
for i in $(list_files); do
chown root:root "$SYS/$i"
chmod 644 "$SYS/$i"
chmod 755 "$(dirname "$SYS/$i")"
done
if [ "$rom_build_sdk" -ge "26" ]; then # Android 8.0+ uses 0600 for its permission on build.prop
chmod 600 "$SYS/build.prop"
fi
rm -rf /sdcard/tmp-gapps
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment