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).
在Android 4.x系统中,只需将APK文件放入/system/priv-app目录,系统就会自动识别并安装或卸载对应的应用。然而从Android L开始,仅移动文件可能不足以触发系统识别,需要重启设备。博客中提供了日志信息,显示在安装和卸载过程中,即使文件已移动,系统仍需重启才能更新应用列表。这表明在Android L及更高版本中,对系统应用的修改可能需要更复杂的操作,如重新启动服务或设备。
1万+

被折叠的 条评论
为什么被折叠?



