I've been searching non-stop for almost 2 days using different search terms and am at a total loss here.
What I am trying to do is have my addon.d script comment out a few lines (lines 32 to 38) upon flashing a CM12 ROM update in audio_policy.conf (in red bold.)
I've came across a few solutions, but none of them worked -> except the one I found here which was the closest to working <-
After flashing a ROM, TWRP doesn't give any errors about it in tmp/recovery.log, but it doesn't change anything in audio_policy.conf.
When I run them manually through terminal in adb shell, they work.
Here is my entire addon.d script, named 70-customize.sh, and the sed commands are at the bottom of it:
Does anyone have any way that I can make this thing work?
Thanks for any help in advance.
What I am trying to do is have my addon.d script comment out a few lines (lines 32 to 38) upon flashing a CM12 ROM update in audio_policy.conf (in red bold.)
Code:
# Global configuration section: lists input and output devices always present on the device
# as well as the output device selected by default.
# Devices are designated by a string that corresponds to the enum in audio.h
global_configuration {
attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_TELEPHONY_TX
default_output_device AUDIO_DEVICE_OUT_SPEAKER
attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_TELEPHONY_RX
}
# audio hardware module section: contains descriptors for all audio hw modules present on the
# device. Each hw module node is named after the corresponding hw module library base name.
# For instance, "primary" corresponds to audio.primary.<device>.so.
# The "primary" module is mandatory and must include at least one output with
# AUDIO_OUTPUT_FLAG_PRIMARY flag.
# Each module descriptor contains one or more output profile descriptors and zero or more
# input profile descriptors. Each profile lists all the parameters supported by a given output
# or input stream category.
# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding
# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n".
audio_hw_modules {
primary {
outputs {
primary {
sampling_rates 44100|48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY
flags AUDIO_OUTPUT_FLAG_PRIMARY
}
deep_buffer {
sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY
flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER
}
multichannel {
sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000|96000
channel_masks dynamic
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY
flags AUDIO_OUTPUT_FLAG_DIRECT
}
compress_offload {
sampling_rates 8000|11025|16000|22050|32000|44100|48000|64000|88200|96000|176400|192000
channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_2POINT1|AUDIO_CHANNEL_OUT_QUAD|AUDIO_CHANNEL_OUT_PENTA|AUDIO_CHANNEL_OUT_5POINT1|AUDIO_CHANNEL_OUT_6POINT1|AUDIO_CHANNEL_OUT_7POINT1
formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_MP2|AUDIO_FORMAT_PCM_16_BIT_OFFLOAD|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL
flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
}
voice_tx {
sampling_rates 8000|16000|48000
channel_masks AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_MONO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_TELEPHONY_TX
}
voip_rx {
sampling_rates 8000|16000
channel_masks AUDIO_CHANNEL_OUT_MONO
formats AUDIO_FORMAT_PCM_16_BIT|AUDIO_FORMAT_AMR_NB|AUDIO_FORMAT_AMR_WB|AUDIO_FORMAT_QCELP|AUDIO_FORMAT_EVRC|AUDIO_FORMAT_EVRCB|AUDIO_FORMAT_EVRCWB|AUDIO_FORMAT_EVRCNW
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET|AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET|AUDIO_DEVICE_OUT_ALL_SCO
flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_VOIP_RX
}
}
inputs {
primary {
sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000
channel_masks AUDIO_CHANNEL_IN_5POINT1|AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK
formats AUDIO_FORMAT_PCM_16_BIT|AUDIO_FORMAT_AMR_NB|AUDIO_FORMAT_AMR_WB|AUDIO_FORMAT_QCELP|AUDIO_FORMAT_EVRC|AUDIO_FORMAT_EVRCB|AUDIO_FORMAT_EVRCWB|AUDIO_FORMAT_EVRCNW
devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_VOICE_CALL
}
voice_rx {
sampling_rates 8000|16000|48000
channel_masks AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_MONO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_TELEPHONY_RX
}
}
}
a2dp {
outputs {
a2dp {
sampling_rates 44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_ALL_A2DP
}
}
}
usb {
outputs {
usb_accessory {
sampling_rates 44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_USB_ACCESSORY
}
usb_device {
sampling_rates 44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_USB_DEVICE
}
}
}
r_submix {
outputs {
submix {
sampling_rates 48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX
}
}
inputs {
submix {
sampling_rates 48000
channel_masks AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
}
}
}
}
Code:
sed -i '32 s/^/#/' /system/etc/audio_policy.conf;
sed -i '33 s/^/#/' /system/etc/audio_policy.conf;
sed -i '34 s/^/#/' /system/etc/audio_policy.conf;
sed -i '35 s/^/#/' /system/etc/audio_policy.conf;
sed -i '36 s/^/#/' /system/etc/audio_policy.conf;
sed -i '37 s/^/#/' /system/etc/audio_policy.conf;
sed -i '38 s/^/#/' /system/etc/audio_policy.conf;
When I run them manually through terminal in adb shell, they work.
Here is my entire addon.d script, named 70-customize.sh, and the sed commands are at the bottom of it:
Code:
#!/sbin/sh
#
# /system/addon.d/70-customize.sh
# During a CM12.1 upgrade, this script backs up Google Apps,
# along with ViPER4Android, Cerberus, Lollipop media files + bootanimation
# and a script to set SELinux to a permissive state when used with SuperSU.
# /system partition is formatted and reinstalled, followed by restoring everything.
#
. /tmp/backuptool.functions
list_files() {
cat <<EOF
addon.d/70-customize.sh
etc/cerberus_at.db
etc/cerberus_at.dbj
etc/cerberus_conf.xml
media/bootanimation.zip
media/audio/alarms/Argon.ogg
media/audio/alarms/Carbon.ogg
media/audio/alarms/Helium.ogg
media/audio/alarms/Krypton.ogg
media/audio/alarms/Neon.ogg
media/audio/alarms/Osmium.ogg
media/audio/alarms/Oxygen.ogg
media/audio/alarms/Platinum.ogg
media/audio/alarms/Timer.ogg
media/audio/notifications/Ariel.ogg
media/audio/notifications/Carme.ogg
media/audio/notifications/Ceres.ogg
media/audio/notifications/Elara.ogg
media/audio/notifications/Europa.ogg
media/audio/notifications/Iapetus.ogg
media/audio/notifications/Io.ogg
media/audio/notifications/Rhea.ogg
media/audio/notifications/Salacia.ogg
media/audio/notifications/Tethys.ogg
media/audio/notifications/Titan.ogg
media/audio/ringtones/Atria.ogg
media/audio/ringtones/Callisto.ogg
media/audio/ringtones/Dione.ogg
media/audio/ringtones/Ganymede.ogg
media/audio/ringtones/Luna.ogg
media/audio/ringtones/Oberon.ogg
media/audio/ringtones/Phobos.ogg
media/audio/ringtones/Pyxis.ogg
media/audio/ringtones/Sedna.ogg
media/audio/ringtones/Titania.ogg
media/audio/ringtones/Triton.ogg
media/audio/ringtones/Umbriel.ogg
media/audio/ui/audio_end.ogg
media/audio/ui/audio_initiate.ogg
media/audio/ui/camera_click.ogg
media/audio/ui/camera_focus.ogg
media/audio/ui/Dock.ogg
media/audio/ui/Effect_Tick.ogg
media/audio/ui/KeypressDelete.ogg
media/audio/ui/KeypressInvalid.ogg
media/audio/ui/KeypressReturn.ogg
media/audio/ui/KeypressSpacebar.ogg
media/audio/ui/KeypressStandard.ogg
media/audio/ui/Lock.ogg
media/audio/ui/LowBattery.ogg
media/audio/ui/NFCFailure.ogg
media/audio/ui/NFCInitiated.ogg
media/audio/ui/NFCSuccess.ogg
media/audio/ui/NFCTransferComplete.ogg
media/audio/ui/NFCTransferInitiated.ogg
media/audio/ui/Trusted.ogg
media/audio/ui/Undock.ogg
media/audio/ui/Unlock.ogg
media/audio/ui/VideoRecord.ogg
media/audio/ui/VideoStop.ogg
media/audio/ui/WirelessChargingStarted.ogg
priv-app/Cerberus/Cerberus.apk
priv-app/ViPERFX/ViPERFX.apk
priv-app/ViPERFX/lib/arm/libV4AJniUtils.so
su.d/permissive.sh
app/Books/Books.apk
app/CalendarGooglePrebuilt/CalendarGooglePrebuilt.apk
app/ChromeBeta/ChromeBeta.apk
app/CloudPrint2/CloudPrint2.apk
app/DMAgent/DMAgent.apk
app/Drive/Drive.apk
app/Drive/lib/arm/libbitmap_parcel.so
app/Drive/lib/arm/libdocscanner_image.so
app/Drive/lib/arm/libdocsimageutils.so
app/Drive/lib/arm/libfoxit.so
app/Drive/lib/arm/librectifier.so
app/Drive/lib/arm/libwebp_android.so
app/EditorsDocs/EditorsDocs.apk
app/EditorsDocs/lib/arm/libdocsimageutils.so
app/EditorsDocs/lib/arm/libkix_ndk1.so
app/EditorsDocs/lib/arm/libwebp_android.so
app/EditorsSheets/EditorsSheets.apk
app/EditorsSheets/lib/arm/libdocsimageutils.so
app/EditorsSheets/lib/arm/libritz_ndk1.so
app/EditorsSheets/lib/arm/libwebp_android.so
app/EditorsSlides/EditorsSlides.apk
app/EditorsSlides/lib/arm/libdocsimageutils.so
app/EditorsSlides/lib/arm/libpunch_ndk1.so
app/EditorsSlides/lib/arm/libwebp_android.so
app/FaceLock/FaceLock.apk
app/FitnessPrebuilt/FitnessPrebuilt.apk
app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk
app/GoogleCamera/GoogleCamera.apk
app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk
app/GoogleHome/GoogleHome.apk
app/GoogleTTS/GoogleTTS.apk
app/iWnnIME/iWnnIME.apk
app/LatinImeGoogle/LatinImeGoogle.apk
app/LatinImeGoogle/lib/arm/libjni_unbundled_latinimegoogle.so
app/Maps/Maps.apk
app/Maps/lib/arm/libcrashreporterer.so
app/Maps/lib/arm/libgmm-jni.so
app/Music2/Music2.apk
app/Newsstand/Newsstand.apk
app/PlayGames/PlayGames.apk
app/PlusOne/PlusOne.apk
app/PlusOne/lib/arm/libcrashreporterer.so
app/PlusOne/lib/arm/libcronet.so
app/PlusOne/lib/arm/libfilterframework_jni.so
app/PlusOne/lib/arm/libframesequence.so
app/PlusOne/lib/arm/libmoviemaker-jni.so
app/PlusOne/lib/arm/libphotoeditor_native.so
app/PlusOne/lib/arm/libwebp_android.so
app/PrebuiltBugle/PrebuiltBugle.apk
app/PrebuiltBugle/lib/arm/libframesequence.so
app/PrebuiltBugle/lib/arm/libgiftranscode.so
app/PrebuiltExchange3Google/PrebuiltExchange3Google.apk
app/PrebuiltGmail/PrebuiltGmail.apk
app/PrebuiltKeep/PrebuiltKeep.apk
app/Street/Street.apk
app/talkback/talkback.apk
app/Videos/Videos.apk
app/Videos/lib/arm/libWVphoneAPI.so
app/YouTube/YouTube.apk
app/YouTube/lib/arm/libcronet.so
app/YouTube/lib/arm/libfilterframework_jni.so
app/YouTube/lib/arm/libm2ts_player.so
etc/permissions/com.google.android.camera2.xml
etc/permissions/com.google.android.maps.xml
etc/permissions/com.google.android.media.effects.xml
etc/permissions/com.google.widevine.software.drm.xml
etc/preferred-apps/google.xml
framework/com.google.android.camera2.jar
framework/com.google.android.maps.jar
framework/com.google.android.media.effects.jar
framework/com.google.widevine.software.drm.jar
lib/libchrome.so
lib/libchromeview.so
lib/libchromium_android_linker.so
lib/libEnjemailuri.so
lib/libennjcon.so
lib/libennjubase1.so
lib/libennjubase1gb.so
lib/libennjubase1us.so
lib/libennjubase2.so
lib/libennjubase3.so
lib/libennjyomi.so
lib/libfacelock_jni.so
lib/libgcam.so
lib/libgcam_swig_jni.so
lib/libgoogle_hotword_jni.so
lib/libgoogle_recognizer_jni_l.so
lib/libgoogle_speech_jni.so
lib/libgoogle_speech_micro_jni.so
lib/libiwnn.so
lib/libjni_jpegutil.so
lib/libjni_latinimegoogle.so
lib/libjni_tinyplanet.so
lib/libjpeg.so
lib/liblightcycle.so
lib/libnativehelper_compat_libc++.so
lib/libnjaddress.so
lib/libnjcon.so
lib/libnjemoji.so
lib/libnjexyomi.so
lib/libnjexyomi_plus.so
lib/libnjfzk.so
lib/libnjkaomoji.so
lib/libnjname.so
lib/libnjtan.so
lib/libnjubase1.so
lib/libnjubase2.so
lib/libpatts_engine_jni_api.so
lib/librefocus.so
lib/librs.layered_filter_f32.so
lib/librs.layered_filter_fast_f32.so
lib/librsjni.so
lib/libRSSupport.so
lib/libspeexwrapper.so
lib/libvcdecoder_jni.so
lib/lib_dic_en_tablet_USUK.conf.so
lib/lib_dic_en_USUK.conf.so
lib/lib_dic_ja_JP.conf.so
lib/lib_dic_morphem_ja_JP.conf.so
priv-app/GCS/GCS.apk
priv-app/GoogleBackupTransport/GoogleBackupTransport.apk
priv-app/GoogleFeedback/GoogleFeedback.apk
priv-app/GoogleLoginService/GoogleLoginService.apk
priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk
priv-app/GooglePartnerSetup/GooglePartnerSetup.apk
priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
priv-app/Hangouts/Hangouts.apk
priv-app/Hangouts/lib/arm/libcrashreporterer.so
priv-app/Hangouts/lib/arm/libcronet.so
priv-app/Hangouts/lib/arm/libframesequence.so
priv-app/Hangouts/lib/arm/libvideochat_jni.so
priv-app/Phonesky/Phonesky.apk
priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
priv-app/PrebuiltGmsCore/lib/arm/libAppDataSearch.so
priv-app/PrebuiltGmsCore/lib/arm/libconscrypt_gmscore_jni.so
priv-app/PrebuiltGmsCore/lib/arm/libgames_rtmp_jni.so
priv-app/PrebuiltGmsCore/lib/arm/libgcastv2_base.so
priv-app/PrebuiltGmsCore/lib/arm/libgcastv2_support.so
priv-app/PrebuiltGmsCore/lib/arm/libgms-ocrclient.so
priv-app/PrebuiltGmsCore/lib/arm/libgmscore.so
priv-app/PrebuiltGmsCore/lib/arm/libjgcastservice.so
priv-app/PrebuiltGmsCore/lib/arm/libNearbyApp.so
priv-app/PrebuiltGmsCore/lib/arm/libsslwrapper_jni.so
priv-app/PrebuiltGmsCore/lib/arm/libwearable-selector.so
priv-app/PrebuiltGmsCore/lib/arm/libWhisper.so
priv-app/SetupWizard/SetupWizard.apk
priv-app/Velvet/Velvet.apk
priv-app/Velvet/lib/arm/libcronet.so
priv-app/Wallet/Wallet.apk
priv-app/Wallet/lib/arm/libbarhopper.so
priv-app/Wallet/lib/arm/libgoogle-ocrclient.so
usr/srec/en-US/clg
usr/srec/en-US/commands.abnf
usr/srec/en-US/compile_grammar.config
usr/srec/en-US/contacts.abnf
usr/srec/en-US/c_fst
usr/srec/en-US/dict
usr/srec/en-US/dictation.config
usr/srec/en-US/dnn
usr/srec/en-US/endpointer_dictation.config
usr/srec/en-US/endpointer_voicesearch.config
usr/srec/en-US/ep_acoustic_model
usr/srec/en-US/g2p_fst
usr/srec/en-US/grammar.config
usr/srec/en-US/hclg_shotword
usr/srec/en-US/hmmlist
usr/srec/en-US/hmm_symbols
usr/srec/en-US/hotword.config
usr/srec/en-US/hotword_classifier
usr/srec/en-US/hotword_normalizer
usr/srec/en-US/hotword_prompt.txt
usr/srec/en-US/hotword_word_symbols
usr/srec/en-US/metadata
usr/srec/en-US/normalizer
usr/srec/en-US/norm_fst
usr/srec/en-US/offensive_word_normalizer
usr/srec/en-US/phonelist
usr/srec/en-US/phone_state_map
usr/srec/en-US/rescoring_lm
usr/srec/en-US/wordlist
vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.8/landmark_group_meta_data.bin
vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.8/left_eye-y0-yi45-p0-pi45-r0-ri20.lg_32-tree7-wmd.bin
vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.8/nose_base-y0-yi45-p0-pi45-r0-ri20.lg_32-tree7-wmd.bin
vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.8/right_eye-y0-yi45-p0-pi45-r0-ri20.lg_32-3-tree7-wmd.bin
vendor/pittpatt/models/detection/yaw_roll_face_detectors.7.1/head-y0-yi45-p0-pi45-r0-ri30.4a-v24-tree7-2-wmd.bin
vendor/pittpatt/models/detection/yaw_roll_face_detectors.7.1/head-y0-yi45-p0-pi45-rn30-ri30.5-v24-tree7-2-wmd.bin
vendor/pittpatt/models/detection/yaw_roll_face_detectors.7.1/head-y0-yi45-p0-pi45-rp30-ri30.5-v24-tree7-2-wmd.bin
vendor/pittpatt/models/detection/yaw_roll_face_detectors.7.1/pose-r.8.1.bin
vendor/pittpatt/models/detection/yaw_roll_face_detectors.7.1/pose-y-r.8.1.bin
vendor/pittpatt/models/recognition/face.face.y0-y0-71-N-tree_7-wmd.bin
EOF
}
case "" in
backup)
list_files | while read FILE DUMMY; do
backup_file $S/"$FILE"
done
;;
restore)
list_files | while read 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)
# Stub
# Remove unused apps
rm -rf /system/app/BasicDaydreams
rm -rf /system/app/Browser
rm -rf /system/app/Calendar
rm -rf /system/app/Camera2
rm -rf /system/app/CMFileManager
rm -rf /system/app/CMWallpapers
rm -rf /system/app/Email
rm -rf /system/app/Exchange2
rm -rf /system/app/Galaxy4
rm -rf /system/app/Galaxy2
rm -rf /system/app/Gallery2
rm -rf /system/app/HoloSpiralWallpaper
rm -rf /system/app/LatinIME
rm -rf /system/app/LiveWallpapers
rm -rf /system/app/NoiseField
rm -rf /system/app/PhotoPhase
rm -rf /system/app/PhotoTable
rm -rf /system/app/PicoTts
rm -rf /system/app/SoundRecorder
rm -rf /system/app/Terminal
rm -rf /system/app/VisualizationWallpapers
rm -rf /system/media/audio
rm -rf /system/priv-app/AudioFX
rm -rf /system/priv-app/Mms
rm -rf /system/priv-app/Trebuchet
rm -rf /system/tts
;;
post-restore)
# Stub
rm '/system/addon.d/91-v4a.sh'
rm '/system/addon.d/95-cerberus.sh'
# Symlink files
mkdir /system/app/ChromeBeta/lib && mkdir /system/app/ChromeBeta/lib/arm
ln -s system/lib/libchrome.so /system/app/ChromeBeta/lib/arm/libchrome.so
ln -s system/lib/libchromeview.so /system/app/ChromeBeta/lib/arm/libchromeview.so
ln -s system/lib/libchromium_android_linker.so /system/app/ChromeBeta/lib/arm/libchromium_android_linker.so
mkdir /system/app/FaceLock/lib && mkdir /system/app/FaceLock/lib/arm
ln -s system/lib/libfacelock_jni.so /system/app/FaceLock/lib/arm/libfacelock_jni.so
mkdir /system/app/GoogleCamera/lib && mkdir /system/app/GoogleCamera/lib/arm
ln -s system/lib/libgcam.so /system/app/GoogleCamera/lib/arm/libgcam.so
ln -s system/lib/libgcam_swig_jni.so /system/app/GoogleCamera/lib/arm/libgcam_swig_jni.so
ln -s system/lib/libjni_jpegutil.so /system/app/GoogleCamera/lib/arm/libjni_jpegutil.so
ln -s system/lib/libjni_tinyplanet.so /system/app/GoogleCamera/lib/arm/libjni_tinyplanet.so
ln -s system/lib/libjpeg.so /system/app/GoogleCamera/lib/arm/libjpeg.so
ln -s system/lib/liblightcycle.so /system/app/GoogleCamera/lib/arm/liblightcycle.so
ln -s system/lib/libnativehelper_compat_libc++.so /system/app/GoogleCamera/lib/arm/libnativehelper_compat_libc++.so
ln -s system/lib/librefocus.so /system/app/GoogleCamera/lib/arm/librefocus.so
ln -s system/lib/librs.layered_filter_f32.so /system/app/GoogleCamera/lib/arm/librs.layered_filter_f32.so
ln -s system/lib/librs.layered_filter_fast_f32.so /system/app/GoogleCamera/lib/arm/librs.layered_filter_fast_f32.so
ln -s system/lib/librsjni.so /system/app/GoogleCamera/lib/arm/librsjni.so
ln -s system/lib/libRSSupport.so /system/app/GoogleCamera/lib/arm/libRSSupport.so
mkdir /system/app/GoogleTTS/lib && mkdir /system/app/GoogleTTS/lib/arm
ln -s system/lib/libpatts_engine_jni_api.so /system/app/GoogleTTS/lib/arm/libpatts_engine_jni_api_ub.210304060.so
ln -s system/lib/libspeexwrapper.so /system/app/GoogleTTS/lib/arm/libspeexwrapper_ub.210304060.so
mkdir /system/app/iWnnIME/lib && mkdir /system/app/iWnnIME/lib/arm
ln -s system/lib/libEnjemailuri.so /system/app/iWnnIME/lib/arm/libEnjemailuri.so
ln -s system/lib/lib_dic_en_USUK.conf.so /system/app/iWnnIME/lib/arm/lib_dic_en_USUK.conf.so
ln -s system/lib/lib_dic_en_tablet_USUK.conf.so /system/app/iWnnIME/lib/arm/lib_dic_en_tablet_USUK.conf.so
ln -s system/lib/lib_dic_ja_JP.conf.so /system/app/iWnnIME/lib/arm/lib_dic_ja_JP.conf.so
ln -s system/lib/lib_dic_morphem_ja_JP.conf.so /system/app/iWnnIME/lib/arm/lib_dic_morphem_ja_JP.conf.so
ln -s system/lib/libennjcon.so /system/app/iWnnIME/lib/arm/libennjcon.so
ln -s system/lib/libennjubase1.so /system/app/iWnnIME/lib/arm/libennjubase1.so
ln -s system/lib/libennjubase1gb.so /system/app/iWnnIME/lib/arm/libennjubase1gb.so
ln -s system/lib/libennjubase1us.so /system/app/iWnnIME/lib/arm/libennjubase1us.so
ln -s system/lib/libennjubase2.so /system/app/iWnnIME/lib/arm/libennjubase2.so
ln -s system/lib/libennjubase3.so /system/app/iWnnIME/lib/arm/libennjubase3.so
ln -s system/lib/libennjyomi.so /system/app/iWnnIME/lib/arm/libennjyomi.so
ln -s system/lib/libiwnn.so /system/app/iWnnIME/lib/arm/libiwnn.so
ln -s system/lib/libnjaddress.so /system/app/iWnnIME/lib/arm/libnjaddress.so
ln -s system/lib/libnjcon.so /system/app/iWnnIME/lib/arm/libnjcon.so
ln -s system/lib/libnjemoji.so /system/app/iWnnIME/lib/arm/libnjemoji.so
ln -s system/lib/libnjexyomi.so /system/app/iWnnIME/lib/arm/libnjexyomi.so
ln -s system/lib/libnjexyomi_plus.so /system/app/iWnnIME/lib/arm/libnjexyomi_plus.so
ln -s system/lib/libnjfzk.so /system/app/iWnnIME/lib/arm/libnjfzk.so
ln -s system/lib/libnjkaomoji.so /system/app/iWnnIME/lib/arm/libnjkaomoji.so
ln -s system/lib/libnjname.so /system/app/iWnnIME/lib/arm/libnjname.so
ln -s system/lib/libnjtan.so /system/app/iWnnIME/lib/arm/libnjtan.so
ln -s system/lib/libnjubase1.so /system/app/iWnnIME/lib/arm/libnjubase1.so
ln -s system/lib/libnjubase2.so /system/app/iWnnIME/lib/arm/libnjubase2.so
ln -s system/lib/libjni_latinimegoogle.so /system/app/LatinImeGoogle/lib/arm/libjni_latinimegoogle.so
ln -s system/lib/libgoogle_hotword_jni.so /system/priv-app/Velvet/lib/arm/libgoogle_hotword_jni.so
ln -s system/lib/libgoogle_recognizer_jni_l.so /system/priv-app/Velvet/lib/arm/libgoogle_recognizer_jni_l.so
ln -s system/lib/libgoogle_speech_jni.so /system/priv-app/Velvet/lib/arm/libgoogle_speech_jni.so
ln -s system/lib/libgoogle_speech_micro_jni.so /system/priv-app/Velvet/lib/arm/libgoogle_speech_micro_jni.so
ln -s system/lib/libvcdecoder_jni.so /system/priv-app/Velvet/lib/arm/libvcdecoder_jni.so
# build.prop edits
sed -i 's/wifi\.supplicant_scan_interval=.*/wifi\.supplicant_scan_interval=120/' /system/build.prop;
sed -i 's/ro\.build\.display\.id=.*/ro\.build\.display\.id=LMY47V/' /system/build.prop;
sed -i 's/ro\.build\.product=.*/ro\.build\.product=hammerhead/' /system/build.prop;
sed -i 's/ro\.product\.device=.*/ro\.product\.device=hammerhead/' /system/build.prop;
sed -i 's/ro\.product\.model=.*/ro\.product\.model=Nexus 5/' /system/build.prop;
sed -i 's/ro\.config\.notification_sound=.*/ro\.config\.notification_sound=Tethys.ogg/' /system/build.prop;
sed -i 's/ro\.config\.alarm_alert=.*/ro\.config\.alarm_alert=Oxygen.ogg/' /system/build.prop;
sed -i 's/ro\.config\.ringtone=.*/ro\.config\.ringtone=Phobos.ogg/' /system/build.prop;
echo "dalvik.vm.image-dex2oat-filter=everything" >> /system/build.prop;
echo "dalvik.vm.dex2oat-filter=everything" >> /system/build.prop;
echo "ro.usb.host=1" >> /system/build.prop;
echo "lpa.decode=false" >> /system/build.prop;
echo "lpa.releaselock=false" >> /system/build.prop;
echo "lpa.use-stagefright=false" >> /system/build.prop;
echo "tunnel.decode=false" >> /system/build.prop;
# audio_policy.conf edits for V4A compatibility
# (not working. "no address after comma" error) sed -e '/deep_buffer {/,+7 s/^/#/' /system/etc/audio_policy.conf;
sed -i '32 s/^/#/' /system/etc/audio_policy.conf;
sed -i '33 s/^/#/' /system/etc/audio_policy.conf;
sed -i '34 s/^/#/' /system/etc/audio_policy.conf;
sed -i '35 s/^/#/' /system/etc/audio_policy.conf;
sed -i '36 s/^/#/' /system/etc/audio_policy.conf;
sed -i '37 s/^/#/' /system/etc/audio_policy.conf;
sed -i '38 s/^/#/' /system/etc/audio_policy.conf;
Thanks for any help in advance.
xda-developers