In Android 4.x, it was enough to put an APK-file into /system/priv-app, and the package-manager recognized that new file and (un-)installed the corresponding application or service.
Since Android L, it seems to be not enough to just put the file into that directory - a reboot of the system is required to force Android to recognize that change.
Has anyone an idea how to circumvent this? Maybe with any setprop ctl.restart xxx
or by killing a dedicated service?
EDIT:
Here are some logs from logcat:
1. Move APK from /system to /system/priv-app (=installation)
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
(but file HAS been moved as the current root-implementation for Nexus 7 Android Android L P2 disables SELinux for the root-commands!)
-> APK NOT loaded and not listed in app-list -> NOT as expected, APK is going to be automatically installed once put into priv-app folder on Android 4.4.
2. Reboot device, having APK inside /system/priv-app
reboot I/PackageManager( 567): /system/priv-app/AARSCService.apk changed; collecting certs
-> APK IS loaded and listed in app-list -> as expected
3. Move APK from /system/priv-app to /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
(but file HAS been moved as the current root-implementation for Nexus 7 Android Android L P2 disables SELinux for the root-commands!)
-> APK still loaded and listed inside app-list, service inside app can still be bound from another app -> NOT as expected, APK is going to be automatically uninstalled once removed from priv-app folder on Android 4.4.
4. Reboot device, having APK NOT inside /system/priv-app
reboot W/PackageManager( 570): System package eu.airaudio.aarscservice no longer exists; wiping its data
-> APK is no more loaded and no more listed in app-list -> as expected
EDIT 2:
There's the same behaviour on unrooted Android L (21) emulator - sure, without the SELinux-warning. But the APK is also just (un-)installed after reboot (=kill zygote).