MTK Android12 开机向导


需求-场景

开机向导定制

备注:开机向导是一个单独的apk 无源码,在单独apk 基础上,修改apk 实现开机向导定制。

参考资料:

博客资料

如果您有开机向导的需求,建议看一下相关开机向导定制例子,介绍,这一块内容本身对外资料很少,需要自己理解一下,然后针对需求更改。

Android 运行时资源替换----Runtime Resource Overlay:

Android8.0 Setupwizard 定制:

Android开机向导setupwizard,设置系统语言,WiFi向导:

Android Q新增Google Setup Wizard页面

Android10定制Google开机向导

Android集成自定义Google Setup Wizard

GMS如何客制化GMS开机向导

官网参考资料:

官网资料相关开机向导部分本身不对外开放的,需要谷歌账号有一定的开发权限。
自定义向导脚本
配置可选步骤:
自定义SUW:

参考资料注意点

开机向导内容属于Framework层内容模块,单独apk,没有源码,需要知晓修改原理。
开机向导修改,针对不同的主控芯片平台不一样,RK、全志、mtk、展锐、谷歌… 不同的Android版本 参考资料只是思路,针对自身平台找到自身的DEMO或者对应的修改点,不可照抄照搬。
本文针对自己在MTK Android12 上面实现需求的一个思路、编译位置、涉及到知识业务点一个总结。
存在不同平台开机引导包、不同版本开机引导包apk 名称都不一样的情况。

附件资料文件说明:

SetupWizard.apk MTK的开机向导app
SetupWizardOverlay-master.zip 第三方自定义开机向导源码
GmsSampleIntegration MTK Android12 开机向导叠加DEMO
附件资料-MTKAndroid12 开机向导相关资料

推荐工具:

2024最新版Android逆向教程——第2天:dex反编译工具的安装和使用

推荐工具目的,查看附件中的SetupWizard.apk 源码,找到 wizard_script.xml 里面的配置,这样不管需求是什么,好对应上对应的action和resultCode,
不然造成找不到加载资源crash掉、按钮点击按钮无反应不跳转;同时自己需要添加界面或者删除界面时候,好修改wizard_script.xml 文件 及 关联的xml 文件。

其源码如下:

<?xml version="1.0" encoding="utf-8"?>
<WizardScript xmlns:wizard="http://schemas.android.com/apk/res/com.google.android.setupwizard" wizard:version="2">
    <WizardAction
        wizard:uri="intent:#Intent;action=com.android.setupwizard.OEM_PRE_SETUP;end"
        id="oem_pre_setup"/>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.android.setupwizard.WELCOME;end"
        id="welcome">
        <result
            wizard:action="check_user_unlock_qr"
            wizard:name="start_qr_provision"
            wizard:resultCode="101"/>
        <result
            wizard:action="check_user_unlock_dpm_user_complete"
            wizard:name="dpm_user_complete"
            wizard:resultCode="111"/>
        <result
            wizard:action="check_user_unlock_dpm_user_complete"
            wizard:name="dpm_profile_complete"
            wizard:resultCode="112"/>
        <result
            wizard:action="check_user_unlock_work_setup_interrupted_qr_scan"
            wizard:name="check_user_unlock_work_setup_interrupted_qr_scan"
            wizard:resultCode="114"/>
        <result
            wizard:action="check_user_unlock_work_setup_interrupted_consumer_flow"
            wizard:name="check_user_unlock_work_setup_interrupted_consumer_flow"
            wizard:resultCode="115"/>
        <result
            wizard:action="check_user_unlock_nfc"
            wizard:name="check_user_unlock_nfc"
            wizard:resultCode="124"/>
        <result
            wizard:action="check_user_unlock_work_setup_interrupted_nfc_tap"
            wizard:name="check_user_unlock_work_setup_interrupted_nfc_tap"
            wizard:resultCode="125"/>
        <result
            wizard:action="check_user_unlock_fail_provisioning"
            wizard:name="provisioning_extras_not_saved"
            wizard:resultCode="128"/>
        <result wizard:action="check_user_unlock"/>
    </WizardAction>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end"
        id="check_user_unlock_fail_provisioning">
        <result wizard:action="fail_provisioning"/>
    </WizardAction>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.android.setupwizard.SHOW_PROVISIONING_ERROR;end"
        id="fail_provisioning"/>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end"
        id="check_user_unlock_work_setup_interrupted_nfc_tap">
        <result wizard:action="work_setup_interrupted_nfc_tap"/>
    </WizardAction>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.google.android.setupwizard.WORK_SETUP_INTERRUPTED;end"
        id="work_setup_interrupted_nfc_tap">
        <result
            wizard:action="nfc_provision_flow"
            wizard:name="continue_start_nfc_provisioning"
            wizard:resultCode="1"/>
        <result wizard:action="factory_reset"/>
    </WizardAction>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end"
        id="check_user_unlock_nfc">
        <result wizard:action="nfc_provision_flow"/>
    </WizardAction>
    <WizardAction
        wizard:script="android.resource://com.google.android.setupwizard/xml/wizard_script_nfc_provision_flow"
        id="nfc_provision_flow">
        <result wizard:action="oem_post_setup"/>
    </WizardAction>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end"
        id="check_user_unlock_work_setup_interrupted_qr_scan"/>
    <WizardAction
        wizard:uri="intent:#Intent;action=com.google.android.setupwizard.WORK_SETUP_INTERRUPTED;end"
        id="work_setup_interrupted_qr_scan">
        <result
            wizard:action="check_user_unlock_qr"
            wizard:name
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

野火少年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值