device_phh_treble/phh-on-boot.sh
Pierre-Hugues Husson 7576b8f0fe Fix mediacodec on vndk-27
Since android-10.0.0_r37, mediacodec seccomp policy now has two
includes. In AOSP 8.1, minijail is vendor-side.
AOSP 8.1's minijail has a bug, which can't read multiple includes.
All of this together means mediacodec is broken.

This fixes it by overriding vendor's minijail to a working one, in the
hope that vendors didn't change anything in their own minijail

https://issuetracker.google.com/issues/158068181
2020-06-03 16:52:59 +02:00

51 lines
1.5 KiB
Bash

#!/system/bin/sh
vndk="$(getprop persist.sys.vndk)"
[ -z "$vndk" ] && vndk="$(getprop ro.vndk.version |grep -oE '^[0-9]+')"
[ "$(getprop vold.decrypt)" = "trigger_restart_min_framework" ] && exit 0
setprop ctl.start media.swcodec
for i in wpa p2p;do
if [ ! -f /data/misc/wifi/${i}_supplicant.conf ];then
cp /vendor/etc/wifi/wpa_supplicant.conf /data/misc/wifi/${i}_supplicant.conf
fi
chmod 0660 /data/misc/wifi/${i}_supplicant.conf
chown wifi:system /data/misc/wifi/${i}_supplicant.conf
done
if [ -f /vendor/bin/mtkmal ];then
if [ "$(getprop persist.mtk_ims_support)" = 1 ] || [ "$(getprop persist.mtk_epdg_support)" = 1 ];then
setprop persist.mtk_ims_support 0
setprop persist.mtk_epdg_support 0
reboot
fi
fi
if grep -qF android.hardware.boot /vendor/manifest.xml || grep -qF android.hardware.boot /vendor/etc/vintf/manifest.xml ;then
bootctl mark-boot-successful
fi
setprop ctl.restart sec-light-hal-2-0
if find /sys/firmware -name support_fod |grep -qE .;then
setprop ctl.restart vendor.fps_hal
fi
setprop ctl.stop storageproxyd
sleep 10
if [ "$vndk" = 27 ] && getprop init.svc.mediacodec |grep -q restarting;then
mount /system/lib64/vndk-27/libminijail.so /vendor/lib64/libminijail_vendor.so
mount /system/lib/vndk-27/libminijail.so /vendor/lib/libminijail_vendor.so
fi
#Clear looping services
sleep 30
getprop | \
grep restarting | \
sed -nE -e 's/\[([^]]*).*/\1/g' -e 's/init.svc.(.*)/\1/p' |
while read -r svc ;do
setprop ctl.stop "$svc"
done