跳转至

Android_Boot_Apk

属性配置方式

Tip

属性配置方式是KICKPI Android 系统客制功能(部分系统镜像未支持,如果无法正常使用请咨询KICKPI官方技术支持)。

ADB 方式配置

1. 安装开机启动的APP(通过接入U盘,ADB等方式安装)。

2. 获取对应APP的包名和页面类名;点击查看获取方式和测试方法

3. 属性配置:

Note

packname :包名
classname: 页面类名

adb shell
setprop persist.sys.bootAppPack $packname
setprop persist.sys.bootAppClass $classname
操作示例:将属性配置为需要开机启动的APP包名和页面类名。

adb shell
setprop persist.sys.bootAppPack com.android.settings
setprop persist.sys.bootAppClass com.android.settings.Settings

4. 重启:

adb reboot

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 的编译:

+PRODUCT_PACKAGES += \
+       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 方式

    LOCAL_OVERRIDES_PACKAGES := \
        Launcher2 \
        Launcher3 \
        Launcher3QuickStep \
        Launcher3QuickStepGo

Android.bp 方式

    overrides: [
        "Launcher2",
        "Launcher3",
        "Launcher3QuickStep",
        "Launcher3QuickStepGo",
    ],

3. 编译SDK,烧录镜像。

命令行启动APP

am start

am start 是 Android 系统中用于启动 Activity 的命令行工具,属于 Activity Manager(am)的一部分。它允许你通过命令行直接启动应用的特定界面,常用于测试、自动化脚本或调试场景。

操作示例:手动启动设置

adb shell am start com.android.settings/com.android.settings.Settings

Note

com.android.settings : APP 的包名。
com.android.settings.Settings : APP 界面的类名。
只需要获取到 APP 的包名和界面类名,可以通过 am start 启动

获取APP指定页面的包名和类名

1. 手动打开对应界面,执行命令获取当前活动的 Activity:

adb shell dumpsys window | grep mCurrentFocus

操作示例:获取设置界面的包名和类名。

命令输出会包含类似 com.android.settings/com.android.settings.Settings 的信息,其中 / 前面是包名,后面是 Activity 类名,直接替换到 am start -n 命令中即可。

获取APP的包名和界面类名

查看已安装应用:

adb shell pm list packages

查看应用的 Activity 信息:

adb shell 
dumpsys package $packname | grep -i activity

操作示例

adb shell 
dumpsys package com.android.settings | grep -i 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>

主板路径:

/etc/permissions/privapp-permissions-platform.xml
  • 编译失败?

编译失败的问题根据不同APP会存在不同表现,如库缺失、APP路径错误等问题。

通用解决方法:将编译报错的日志,复制给AI进行解答,一般都能得到正确的解决方法。一般体现为 Android.mk 或 Android.bp 添加对应配置。