RK356x Android11更换默认的Launcher

本文介绍了如何在RK356x设备上基于Android11系统,将默认的Launcher3替换为自开发的hybLauncher。步骤包括在源码指定路径创建目录,拷入apk,创建Android.mk文件,并修改app.mk文件,最终实现系统启动时自动运行自定义Launcher。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 开发环境

ubuntu版本:18.04
开发平台:RK356x
Android版本:android11

2、目的

android11 系统自带了一个启动器Launcher3,在android源码路径下的packages/apps/Launcher3下,现需要将我们自己开发的Launcher放到android源码上,让系统启动的时候自动运行我们的Launcher,从而达到想要的效果。

3、方法

1.在源码android\vendor\rockchip\common\apps\路径下新建一个目录hybLauncher
2. 将hybLauncher.apk软件包拷贝进去到hybLauncher文件夹中(文件夹名和apk的名需要一样)
3.在hybLauncher文件夹中新建一个Android.mk文件(相当于linux下的Makefile文件)
<think>我们面对的需求是:在RK3128芯片的安卓7.1设备上,将默认启动器为名为Dangbei的第三方启动器apk。 根据提供的引用信息,有两种方法可以修改默认Launcher: 方法1:修改系统源码中默认LauncherAndroidManifest.xml,去掉其HOME属性(如引用[1]所示),这样系统就不会有默认Launcher,然后安装第三方Launcher,它就会自动获得HOME属性。 方法2:在系统源码中修改,将第三方Launcher的Activity强制添加HOME属性(如引用[2]所示),这样系统就会将其视为Launcher。 但是,用户可能没有系统源码,或者不想重新编译系统。因此,我们还需要考虑非源码修改的方法。 由于用户使用的是RK3128安卓7.1设备,我们可以尝试以下几种方法: 方法一:通过adb命令设置默认Launcher(无需root) 1. 确保设备已开启USB调试,并连接电脑。 2. 使用以下命令查看当前设备上所有具有HOME intent的Activity(即Launcher): ``` adb shell dumpsys package | grep -i home ``` 3. 在输出中,找到Dangbei启动器的Activity名称,通常格式为`com.dangbei.launcher/.MainActivity`(具体名称可能不同,需要根据实际APK确定)。 4. 使用以下命令设置默认Launcher(假设Dangbei的Activity为`com.dangbei.launcher/.MainActivity`): ``` adb shell cmd package set-home-activity "com.dangbei.launcher/.MainActivity" ``` 注意:这个命令在Android 7.1上可能有效,但需要系统支持(有些系统可能没有这个命令)。 方法二:通过adb命令清除默认Launcher设置(适用于已有默认Launcher的情况) 1. 进入系统设置->应用,找到当前的默认Launcher(比如系统自带的Launcher),清除其默认设置。 2. 然后按Home键,系统会弹出选择Launcher的对话框,选择Dangbei并设置为始终使用。 方法三:修改系统文件(需要root) 1. 如果系统没有提供设置默认Launcher的命令,且清除默认设置后按Home键没有出现选择框,那么可能需要修改系统文件。 2. 在系统文件`/data/system/users/0/package-restrictions.xml`(或类似文件,不同系统可能不同)中,找到当前默认Launcher的配置,将其删除或修改为Dangbei的包名。 3. 注意:修改系统文件需要root权限,且在修改前备份原文件。 方法四:通过系统源码修改(适用于有系统源码的情况) 如果有系统源码,可以参考引用[1]和[2]的方法: - 方法A:移除系统默认Launcher的HOME属性(如引用[1]),然后编译系统,刷机。这样安装第三方Launcher后,系统就会将其视为默认Launcher。 - 方法B:在系统源码中,将Dangbei的Activity强制添加HOME属性(如引用[2]),然后编译系统,刷机。 由于用户使用的是RK3128,我们可以参考Rockchip平台常见的修改方式。 具体步骤(方法四): 方法A(移除默认Launcher的HOME属性): 1. 找到系统默认LauncherAndroidManifest.xml(通常位于`packages/apps/Launcher3`或类似路径)。 2. 在默认Launcher的Activity的intent-filter中,注释掉`<category android:name="android.intent.category.HOME" />`这一行。 3. 重新编译系统,生成新的固件并烧录。 方法B(给Dangbei添加HOME属性): 1. 在系统源码中,找到解析Activity的地方(如引用[2]中修改的`ParsedActivityUtils.java`)。 2. 添加代码,当解析到Dangbei的MainActivity时,强制添加HOME和DEFAULT的category,并设置优先级(priority)为1000(高优先级)。 3. 重新编译系统,生成固件并烧录。 但是,用户可能没有系统源码,因此我们重点推荐非源码方法(方法一和方法二)。 如果用户没有源码,且上述adb命令无效,那么可能需要root设备,然后使用方法三。 注意:不同设备可能有所不同,操作前请备份重要数据。 根据用户的问题,我们假设用户希望的是非源码修改(因为提到的是第三方apk),所以优先使用方法一或方法二。 步骤总结(非源码): 1. 安装Dangbei.apk。 2. 尝试通过系统设置清除当前默认Launcher默认设置(如果之前设置过),然后按Home键选择Dangbei。 3. 如果不行,尝试使用adb命令设置: - 连接设备并打开USB调试。 - 使用命令`adb shell dumpsys package | grep -i home`找到Dangbei的完整Activity名称。 - 使用命令`adb shell cmd package set-home-activity "com.dangbei.launcher/.MainActivity"`(替为实际的Activity名称)设置。 4. 如果上述命令无效,尝试使用更通用的命令: - 先清除当前默认设置:`adb shell pm clear com.android.launcher3`(将com.android.launcher3替为当前默认Launcher的包名) - 然后再次尝试按Home键选择。 5. 如果以上都不行,考虑root设备,然后修改`/data/system/users/0/package-restrictions.xml`文件(或类似文件): - 找到`<preferred-activities>`标签中,包含`android.intent.category.HOME`的项,将其中的`set`标签的`name`属性改为Dangbei的包名和Activity。 注意:修改系统文件风险较大,操作前务必备份。 由于不同设备系统文件可能不同,还可以尝试在`/data/system`目录下查找类似`packages.xml`、`packages.list`、`packages-stopped.xml`等文件,但修改这些文件可能无效,因为默认应用信息通常存储在`package-restrictions.xml`或`packages.xml`中。 最后,如果用户有系统源码,则推荐使用方法四,这样更彻底。 根据用户的具体情况,选择合适的方法。 相关问题: 1. 如何确定Dangbei启动器的Activity名称? 2. 如果设备没有USB调试选项,如何设置默认Launcher? 3. 在RK3128安卓7.1上,除了上述方法,还有其他设置默认Launcher的方式吗? 4. 如何避免在系统更新后默认Launcher被重置?</think>在 RK3128 芯片的 Android 7.1 设备上设置 Dangbei.apk 为默认启动器,可通过以下方法实现: ### 方法一:通过 AndroidManifest.xml 修改(需系统源码) 1. **定位默认启动器配置文件** 找到系统源码中的默认启动器配置(通常为 `packages/apps/Launcher3/AndroidManifest.xml`)。 2. **注释系统默认 HOME 属性** 在默认启动器的 `<intent-filter>` 内注释掉 `android.intent.category.HOME` 属性: ```xml <!-- 原始代码 --> <category android:name="android.intent.category.HOME" /> <!-- 修改后 --> <!-- <category android:name="android.intent.category.HOME" /> --> ``` 参考修改:[^1] 3. **添加 Dangbei 的 HOME 属性** 在系统解析 APK 的代码中(如 `ParsedActivityUtils.java`),强制为 Dangbei 添加 HOME 属性: ```java if ("com.dangbei.packagename.MainActivity".equals(activity.getName())) { intent.addCategory("android.intent.category.HOME"); intent.addCategory("android.intent.category.DEFAULT"); intent.setPriority(1000); // 设置高优先级 } ``` 参考实现:[^2] 4. **重新编译系统** 完成修改后,重新编译固件并烧录到设备。 --- ### 方法二:通过 ADB 命令设置(无需源码) 1. **启用 USB 调试** 在设备设置中开启 **开发者选项** → **USB 调试**。 2. **连接设备并安装 APK** ```bash adb install Dangbei.apk ``` 3. **清除当前默认启动器** ```bash adb shell pm clear com.android.launcher3 # 替为当前默认启动器包名 ``` 4. **设置 Dangbei 为默认启动器** ```bash adb shell cmd package set-home-activity "com.dangbei.packagename/.MainActivity" ``` > 注:需替 `com.dangbei.packagename` 和 `MainActivity` 为实际值。 5. **验证设置** 重启设备后,按 Home 键应直接进入 Dangbei 启动器。 --- ### 方法三:通过用户界面设置 1. **安装 Dangbei.apk** 并打开。 2. 按 **Home 键**,系统弹出启动器选择对话框。 3. 选择 **Dangbei** → 勾选 **始终使用此应用** → 确认。 --- ### 注意事项 1. **包名与 Activity 名称** 使用 `adb shell dumpsys package | grep dangbei` 获取准确的包名和主 Activity。 2. **系统签名** 若 Dangbei 未系统签名,需在源码中配置 `android:sharedUserId="android.uid.system"` 并签名。 3. **权限问题** RK3128 设备可能需要先解锁 Bootloader 才能刷写修改后的固件。 --- ### 相关问题 1. 如何获取第三方启动器的包名和主 Activity 名称? 2. 如果 ADB 的 `set-home-activity` 命令无效,有哪些替代方案? 3. 在 Android 7.1 上如何为 APK 添加系统签名? 4. 如何避免系统更新后默认启动器被重置? [^1]: 参考修改:通过注释默认启动器的 HOME 属性解除系统绑定。 [^2]: 参考实现:在系统层动态注入 HOME 属性实现第三方启动器劫持。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赟赟、嵌入式

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

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

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

打赏作者

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

抵扣说明:

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

余额充值