Android_Boot_Apk

属性配置方式

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

ADB 方式配置(无需修改源码)

第一步,安装开机启动的APP;(接入U盘,ADB等方式安装)

第二步,获取对应APP的包名和页面类名;点击查看获取方式和测试方法

第三步,配置属性;

$ adb shell
$ setprop persist.sys.bootAppPack $packname
$ setprop persist.sys.bootAppClass $classname

packname 包名

classname 页面类名

将属性配置为需要开机启动的APP包名和页面类名。

示例:

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

第四步,重启;

$ 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

第一步,预装APK,如 TestLancher;点击查看预装方法

第二步,获取对应APP的包名和页面类名;点击查看获取方式和测试方法

第三步,添加的APP名为 TestLauncher,添加 TestLauncher 的编译;

+PRODUCT_PACKAGES += \
+		TestLauncher

第四步,添加包名和类名属性配置;

+ PRODUCT_PROPERTY_OVERRIDES += \
+	persist.sys.bootAppPack=com.android.TestLauncher \
+	persist.sys.bootAppClass=com.android.TestLauncher.Activity

第五步,编译SDK,烧录镜像;

Launcher方式

Android 开机会默认启动 HOME 属性的APP,下面介绍修改APP为带 HOME 属性的APP。

APP 修改

第一步,在APP 的 AndroidManifest.xml 中添加两个 category;

<activity android:name=".MainActivity">
    <intent-filter>
		<category android:name="android.intent.category.HOME"/>
		<category android:name="android.intent.category.DEFAULT"/>
	</intent-filter>
</activity>

第二步,重新编译生成带 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

第一步,预装APK,如 TestLancher;

第二步,编译配置文件中添加桌面优先级覆盖;

K2B/K2C 需要添加 TvLauncher 的覆盖!!!

Android.mk 方式

    LOCAL_OVERRIDES_PACKAGES := \
        Launcher2 \
        Launcher3 \
        Launcher3QuickStep \
        Launcher3QuickStepGo

Android.bp 方式

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

第三步,编译SDK,烧录镜像;

命令行启动APP

am start 介绍

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

示例:手动启动设置

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

com.android.settings 为 APP 的包名

com.android.settings.Settings 为 APP 界面的类名

只需要获取到 APP 的包名和界面类名,可以通过 am start 启动

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

  1. 手动打开对应界面

  2. 执行命令获取当前活动的 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 添加对应配置。

Last updated