android内置system_app注意事项

内置system_app 注意事项:

1 app需要拥有系统签名,如下Android.bp文件中需要配置 certificate: “platform”,表示平台签名。

android_app {
    name: "Settings",
    defaults: ["platform_app_defaults"],
    platform_apis: true,
    certificate: "platform",

2 app需要在AndroidManifest.xml中配置android:sharedUserId=“android.uid.system”

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xindawn"
    android:versionCode="1"
    android:versionName="1.0"
    android:sharedUserId="android.uid.system">

    <protected-broadcast android:name="com.vt.dlna.PARAM_DEV_UPDATE" />

以上两步是否成功可以通过执行adb shell ps -AZ| grep “xxx” 查看,
untrusted_app表示三方app,无系统签名
system_app表示系统app,有系统签名+配置 android:sharedUserId=“android.uid.system”。
platform_app表示平台app,有系统签名。

u:r:untrusted_app_30:s0:c56,c+ u0_a56        1765   331 14482280 93484 0                   0 S com.android.calendar
u:r:system_app:s0              system        1464   331 14633576 120228 0                  0 S system:ui
u:r:platform_app:s0:c512,c768  u0_a14        2035   331 14604764 97872 0                   0 S com.android.statementservice

3 app用到的广播需要配置成保护广播,否则不能正常发送于接收。报错如下:

07-06 08:18:42.633   527  1040 E ActivityManager: Sending non-protected broadcast com.xindawn.PARAM_DEV_UPDATE from system 2335:com.xindawn/1000 pkg com.xindawn
07-06 08:18:42.633   527  1040 E ActivityManager: java.lang.Throwable
07-06 08:18:42.633   527  1040 E ActivityManager: 	at com.android.server.am.ActivityManagerService.checkBroadcastFromSystem(ActivityManagerService.java:13561)
07-06 08:18:42.633   527  1040 E ActivityManager: 	at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:14283)
07-06 08:18:42.633   527  1040 E ActivityManager: 	at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:13579)
07-06 08:18:42.633   527  1040 E ActivityManager: 	at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:14457)
07-06 08:18:42.633   527  1040 E ActivityManager: 	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2296)
07-06 08:18:42.633   527  1040 E ActivityManager: 	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2628)
07-06 08:18:42.633   527  1040 E ActivityManager: 	at android.os.Binder.execTransactInternal(Binder.java:1280)
07-06 08:18:42.633   527  1040 E ActivityManager: 	at android.os.Binder.execTransact(Binder.java:1244)

配置方法如下:

frameworks/base/core$ git diff
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -817,6 +817,8 @@
     <protected-broadcast android:name="android.service.autofill.action.DELAYED_FILL" />
     <protected-broadcast android:name="android.app.action.PROVISIONING_COMPLETED" />
     <protected-broadcast android:name="android.app.action.LOST_MODE_LOCATION_UPDATE" />
+    
+    <protected-broadcast android:name="com.vt.dlna.PARAM_DEV_UPDATE" />

4.遇到selinxu avc权限问题,可以通过在debug版本adb shell setenforce 0,暂时关闭验证。如果正常则慢慢给system_app添加权限解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值