Android_Boot_Apk
属性配置方式
Tip
属性配置方式是KICKPI Android 系统客制功能(部分系统镜像未支持,如果无法正常使用请咨询KICKPI官方技术支持)。
ADB 方式配置
1. 安装开机启动的APP(通过接入U盘,ADB等方式安装)。
2. 获取对应APP的包名和页面类名;点击查看获取方式和测试方法。
3. 属性配置:
Note
packname :包名
classname: 页面类名
adb shell
setprop persist.sys.bootAppPack com.android.settings
setprop persist.sys.bootAppClass com.android.settings.Settings
4. 重启:
SDK 方式配置(修改源码定制镜像)
| 主控 | 型号 | 编译配置路径 |
|---|---|---|
| A133 | K5/K5C | android/device/softwinner/ceres-c3/ceres_c3.mk |
| H618 | K2B/K2C | device/softwinner/apollo/apollo_p2.mk |
| RK3562/RK3568/RK3576/RK3588 | K1/K1B/K3/K7/K7C/K8 | device/rockchip/common/device.mk |
1. 预装APK,如 TestLancher;点击查看预装方法。
2. 获取对应APP的包名和页面类名;点击查看获取方式和测试方法。
3. 添加的APP名为 TestLauncher,添加 TestLauncher 的编译:
4. 添加包名和类名属性配置:
+ PRODUCT_PROPERTY_OVERRIDES += \
+ persist.sys.bootAppPack=com.android.TestLauncher \
+ persist.sys.bootAppClass=com.android.TestLauncher.Activity
5. 编译SDK,烧录镜像。
Launcher方式
Android 开机会默认启动 HOME 属性的APP,本小章介绍如何将APP修改成带 HOME 属性的APP。
APP 修改
1. 在 APP 的 AndroidManifest.xml 中添加两个 category 和 directBootAware:
<activity
android:name=".MainActivity"
android:directBootAware="true"
>
<intent-filter>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
2. 重新编译生成带 HOME 属性的APP,签名APP。
3. 安装 APP,并在设置中 > Apps > Default apps > Home app 修改成你的APP。
SDK 修改(修改源码定制镜像)
| 主控 | 型号 | 桌面 | 编译配置路径 |
|---|---|---|---|
| A133 | K5/K5C | Launcher2 Launcher3 Launcher3QuickStep Launcher3QuickStepGo |
android/device/softwinner/ceres-c3/ceres_c3.mk |
| H618 | K2B/K2C | Launcher2 Launcher3 Launcher3QuickStep Launcher3QuickStepGo TvLauncher |
vendor/aw/homlet/homlet.mk |
| RK3562/RK3568/RK3576/RK3588 | K1/K1B/K3/K7/K7C/K8 | Launcher2 Launcher3 Launcher3QuickStep Launcher3QuickStepGo |
device/rockchip/common/device.mk |
1. 预装APK,例如 TestLancher。
2. 编译配置文件中添加桌面优先级覆盖:
Warning
K2B/K2C 需要添加 TvLauncher 的覆盖!
Android.mk 方式
Android.bp 方式
3. 编译SDK,烧录镜像。
命令行启动APP
am start
am start 是 Android 系统中用于启动 Activity 的命令行工具,属于 Activity Manager(am)的一部分。它允许你通过命令行直接启动应用的特定界面,常用于测试、自动化脚本或调试场景。
操作示例:手动启动设置
Note
com.android.settings : APP 的包名。
com.android.settings.Settings : APP 界面的类名。
只需要获取到 APP 的包名和界面类名,可以通过 am start 启动
获取APP指定页面的包名和类名
1. 手动打开对应界面,执行命令获取当前活动的 Activity:
操作示例:获取设置界面的包名和类名。
命令输出会包含类似 com.android.settings/com.android.settings.Settings 的信息,其中 / 前面是包名,后面是 Activity 类名,直接替换到 am start -n 命令中即可。
获取APP的包名和界面类名
查看已安装应用:
adb shell pm list packages
查看应用的 Activity 信息:
操作示例:
常见问题
- APP特殊权限?
桌面级 APP 是特殊应用,添加特殊权限,系统可能无法启动,需要抓取 APP 相关 log 日志:
# logcat | grep LauncherTest
09-14 10:36:06.662 3826 3826 W PackageManager: Privileged permission android.permission.INSTALL_PACKAGES for package com.example.myapplication (/system/priv-app/LauncherTest) not in privapp-permissions allowlist
09-14 10:36:08.437 3826 3826 W PackageManager: Privileged permission android.permission.INSTALL_PACKAGES for package com.example.myapplication (/system/priv-app/LauncherTest) not in privapp-permissions allowlist
- 如何在SDK源码修改特殊权限 ?
根据 log 修改 android.permission.INSTALL_PACKAGES 内容如下,其他报错类似参考以下添加:
--- a/frameworks/base/data/etc/privapp-permissions-platform.xml
+++ b/frameworks/base/data/etc/privapp-permissions-platform.xml
@@ -550,4 +550,8 @@ applications that come with the platform
<privapp-permissions package="com.android.calllogbackup">
<permission name="com.android.voicemail.permission.READ_VOICEMAIL"/>
</privapp-permissions>
+
+ <privapp-permissions package="com.example.myapplication">
+ <permission name="android.permission.INSTALL_PACKAGES"/>
+ </privapp-permissions>
主板路径:
- 编译失败?
编译失败的问题根据不同APP会存在不同表现,如库缺失、APP路径错误等问题。
通用解决方法:将编译报错的日志,复制给AI进行解答,一般都能得到正确的解决方法。一般体现为 Android.mk 或 Android.bp 添加对应配置。