MTK AB OTA升级代码及修改

OTA代码下载

https://download.csdn.net/download/xuyewen288/85801495

1.Android.mk增加编译

这里编译到priv-app下面,权限更高


LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := OTASdk
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
# LOCAL_CERTIFICATE := testkey

include $(BUILD_PREBUILT)

2.增加priv-app OTA的权限

alps\frameworks\base\data\etc\privapp-permissions-platform.xml

<privapp-permissions package="com.xxx.xxxx">
        <permission name="android.permission.REBOOT"/>
        <permission name="android.permission.RECOVERY"/>
        <permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <permission name="android.permission.READ_EXTERNAL_STORAGE"/>
        <permission name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
        <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <permission name="android.permission.RECEIVE_BOOT_COMPLETED"/>
		
</privapp-permissions>
    

3.新增se文件

/alps/device/mediatek/mt8168/sepolicy/basic/update_engine.te b/alps/device/mediatek/mt8168/sepolicy/basic/update_engine.te

update_engine.te 下面是修改系统的SE规则,不然会编译不过

allow update_engine metadata_file:dir { search };
allow update_engine sysfs_boot_type:file { read open getattr write unlink};
allow update_engine update_engine:capability dac_read_search;
allow update_engine update_engine:capability dac_override;

--- a/alps/system/sepolicy/prebuilts/api/29.0/private/domain.te
+++ b/alps/system/sepolicy/prebuilts/api/29.0/private/domain.te
@@ -271,6 +271,7 @@ define(`dac_override_allowed', `{
   vold
   vold_prepare_subdirs
   zygote
+  update_engine
 }')
 neverallow ~dac_override_allowed self:global_capability_class_set dac_override;
 # Since the kernel checks dac_read_search before dac_override, domains that
@@ -280,6 +281,7 @@ neverallow ~dac_override_allowed self:global_capability_class_set dac_override;
 neverallow ~{
   dac_override_allowed
   traced_probes
+  update_engine
   userdebug_or_eng(`heapprofd')
 } self:global_capability_class_set dac_read_search;
 
diff --git a/alps/system/sepolicy/private/domain.te b/alps/system/sepolicy/private/domain.te
index 1d26761d6b..9ac13ce30e 100644
--- a/alps/system/sepolicy/private/domain.te
+++ b/alps/system/sepolicy/private/domain.te
@@ -271,6 +271,7 @@ define(`dac_override_allowed', `{
   vold
   vold_prepare_subdirs
   zygote
+  update_engine
 }')
 neverallow ~dac_override_allowed self:global_capability_class_set dac_override;
 # Since the kernel checks dac_read_search before dac_override, domains that
@@ -280,6 +281,7 @@ neverallow ~dac_override_allowed self:global_capability_class_set dac_override;
 neverallow ~{
   dac_override_allowed
   traced_probes
+  update_engine
   userdebug_or_eng(`heapprofd')
 } self:global_capability_class_set dac_read_search;
 

4.添加系统能发送的广播,不然会报异常

--- a/alps/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/alps/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -14915,6 +14915,11 @@ public class ActivityManagerService extends IActivityManager.Stub
             // we've relaxed, so it's fine for system internals to send.
             return;
         }
+               
+               if(action != null && (action.contains("android.intent.action.xxxx.ota") || action.contains("action.xxx.xxx"))){
+            return;
+        }
+
 
         // This broadcast may be a problem...  but there are often system components that
         // want to send an internal broadcast to themselves, which is annoying to have to

5.MTK平台快霸增加白名单,不然如果是后台服务会把app被杀掉,其他平台根据情况定

--- a/alps/vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/am/AmsExtImpl.java
+++ b/alps/vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/am/AmsExtImpl.java
@@ -229,6 +229,26 @@ public class AmsExtImpl extends AmsExt {
             mAalUtils = AalUtils.getInstance();
         }
         ///@}
+               
+                //add 过滤应用 begin    
+               try {
+                Method method= mDuraSpeedService.getClass().getMethod("getPlatformWhitelist", null);
+                //获取白名单列表
+                Object obj = method.invoke(mDuraSpeedService);                
+                if(obj != null && obj instanceof List) {
+                        List<String> list = (List<String>) obj;
+                        //加入自己的过滤app
+                        list.add("com.xxx.xxxx");
+                        //更新白名单
+                        method = mDuraSpeedService.getClass().getMethod("setAppWhitelist", List.class);
+                        method.invoke(mDuraSpeedService, list);
+                }
+        }catch (Exception e){
+                Slog.e("AmsExtImpl add app to whitelist ", e.toString());
+        }
+        
+       //add 过滤应用 end
+          
     }
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuyewen288

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值