В Android 4.x достаточно было добавить APK файл в /system/priv -app, и диспетчер пакетов узнал, что новый файл и (не) установил соответствующее приложение или службу.
С Android L, кажется, недостаточно просто поместить файл в этот каталог - требуется перезагрузка системы, чтобы заставить Android распознать это изменение.
Есть ли у кого-нибудь идея, как обойти это? Может быть, с любым setprop ctl.restart xxx
или путем убийства выделенного сервиса?
EDIT:
Вот несколько журналов из logcat:
1. Перенесите APK из/в систему/в систему /priv -app (= установка)
su
mount -o remount rw /system
cd /system/priv-app
mv ../AARSCService.apk . // move from /system to /system/priv-app
W/mv ( 3268): type=1400 audit(0.0:53): avc: denied { rename } for name="AARSCService.apk" dev="mmcblk0p22" ino=23041 scontext=u:r:init:s0 tcontext=u:object_r:system_file:s0 tclass=file
(но файл HAS был перемещен как текущая корневая реализация для Nexus 7 Android Android L P2 отключает SELinux для корневых команд!)
- > APK NOT загружен и не указан в списке приложений → НЕ как ожидается, APK будет автоматически установлен после установки в папку priv-app на Android 4.4.
2. Перезагрузите устройство, используя APK внутри /system/priv -app
reboot
I/PackageManager( 567): /system/priv-app/AARSCService.apk changed; collecting certs
- > APK IS загружен и указан в списке приложений → как ожидалось
3. Переместить APK из /system/priv -app в/system (= deinstallation)
su
mount -o remount rw /system
cd /system/priv-app
mv AARSCService.apk .. // move from /system/priv-app to /system
W/mv ( 3189): type=1400 audit(0.0:31): avc: denied { rename } for name="AARSCService.apk" dev="mmcblk0p22" ino=23041 scontext=u:r:init:s0 tcontext=u:object_r:system_file:s0 tclass=file
(но файл HAS был перемещен как текущая корневая реализация для Nexus 7 Android Android L P2 отключает SELinux для корневых команд!)
- > APK по-прежнему загружается и отображается внутри списка приложений, сервис внутри приложения по-прежнему может быть связан с другим приложением → НЕ, как ожидалось, APK будет автоматически удалена после удаления из папки priv-app на Android 4.4.
4. Перезагрузите устройство, имея APK NOT inside/system/priv-app
reboot
W/PackageManager( 570): System package eu.airaudio.aarscservice no longer exists; wiping its data
- > APK больше не загружается и больше не отображается в списке приложений → как ожидалось
ИЗМЕНИТЬ 2:
Там же поведение на некорректном эмуляторе Android L (21) - конечно, без предупреждения SELinux. Но APK также просто (un-) установлен после перезагрузки (= kill zygote).