-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathservice.sh
150 lines (126 loc) · 2.83 KB
/
service.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
MODPATH=${0%/*}
# log
LOGFILE=$MODPATH/debug.log
exec 2>$LOGFILE
set -x
# var
API=`getprop ro.build.version.sdk`
# property
resetprop -n ro.audio.ignore_effects false
resetprop -n dolby.monospeaker false
resetprop -n ro.atmos.music_stream false
# restart
if [ "$API" -ge 24 ]; then
SERVER=audioserver
else
SERVER=mediaserver
fi
killall $SERVER\
android.hardware.audio@4.0-service-mediatek\
android.hardware.wifi@1.0-service-lazy
#xkillall android.hardware.sensors@1.0-service
# wait
sleep 20
# aml fix
AML=/data/adb/modules/aml
if [ -L $AML/system/vendor ]\
&& [ -d $AML/vendor ]; then
DIR=$AML/vendor/odm/etc
else
DIR=$AML/system/vendor/odm/etc
fi
if [ "$API" -ge 26 ] && [ -d $DIR ]\
&& [ ! -f $AML/disable ]; then
chcon -R u:object_r:vendor_configs_file:s0 $DIR
fi
AUD=`grep AUD= $MODPATH/copy.sh | sed -e 's|AUD=||g' -e 's|"||g'`
if [ -L $AML/system/vendor ]\
&& [ -d $AML/vendor ]; then
DIR=$AML/vendor
else
DIR=$AML/system/vendor
fi
FILES=`find $DIR -type f -name $AUD`
if [ -d $AML ] && [ ! -f $AML/disable ]\
&& find $DIR -type f -name $AUD; then
if ! grep '/odm' $AML/post-fs-data.sh && [ -d /odm ]\
&& [ "`realpath /odm/etc`" == /odm/etc ]; then
for FILE in $FILES; do
DES=/odm`echo $FILE | sed "s|$DIR||g"`
if [ -f $DES ]; then
umount $DES
mount -o bind $FILE $DES
fi
done
fi
if ! grep '/my_product' $AML/post-fs-data.sh\
&& [ -d /my_product ]; then
for FILE in $FILES; do
DES=/my_product`echo $FILE | sed "s|$DIR||g"`
if [ -f $DES ]; then
umount $DES
mount -o bind $FILE $DES
fi
done
fi
fi
# wait
until [ "`getprop sys.boot_completed`" == 1 ]; do
sleep 10
done
# list
PKGS=`cat $MODPATH/package.txt`
for PKG in $PKGS; do
magisk --denylist rm $PKG 2>/dev/null
magisk --sulist add $PKG 2>/dev/null
done
if magisk magiskhide sulist; then
for PKG in $PKGS; do
magisk magiskhide add $PKG
done
else
for PKG in $PKGS; do
magisk magiskhide rm $PKG
done
fi
# allow
PKG=com.atmos
if [ "$API" -ge 30 ]; then
appops set $PKG AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore
fi
PKGOPS=`appops get $PKG`
UID=`dumpsys package $PKG 2>/dev/null | grep -m 1 Id= | sed -e 's| userId=||g' -e 's| appId=||g'`
if [ "$UID" ] && [ "$UID" -gt 9999 ]; then
UIDOPS=`appops get --uid "$UID"`
fi
# audio flinger
#DMAF=`dumpsys media.audio_flinger`
# function
stop_log() {
SIZE=`du $LOGFILE | sed "s|$LOGFILE||g"`
if [ "$LOG" != stopped ] && [ "$SIZE" -gt 50 ]; then
exec 2>/dev/null
set +x
LOG=stopped
fi
}
check_audioserver() {
if [ "$NEXTPID" ]; then
PID=$NEXTPID
else
PID=`pidof $SERVER`
fi
sleep 15
stop_log
NEXTPID=`pidof $SERVER`
if [ "`getprop init.svc.$SERVER`" != stopped ]; then
[ "$PID" != "$NEXTPID" ] && killall $PROC
else
start $SERVER
fi
check_audioserver
}
# check
PROC=`cat $MODPATH/package.txt`
killall $PROC
check_audioserver