首页 在AOSP中添加系统APP
文章
取消

在AOSP中添加系统APP

一、新建APP项目

我们使用Android Studio 3.6.3版本新建一个空的APP项目,因为该版本是Android 10 r41发布之后的版本,适合用于基于Android 10的APP开发,Android Studio 历史版本下载地址为:https://developer.android.google.cn/studio/archive

新建的APP基本信息如下如所示:

20240405022621

二、拷贝APP项目到AOSP

接下来我们在AOSP的product目录下新建一个目录,名为FirstSystemApp,然后在该目录下新增srcres目录,把新建的APP项目对应的资源和代码这两个目录之下,再把AndroidManifest.xml文件复制过来到FirstSystemApp目录下。

另外需要在FirstSystemApp目录下新建一个Android.bp文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
android_app {
    name: "FirstSystemApp",
    srcs: ["src/**/*.java"],
    resource_dirs: ["res"],
    manifest: "AndroidManifest.xml",
    platform_apis: true,
    sdk_version: "",
    certificate: "platform",
    product_specific: true,

    static_libs: [
        "androidx.appcompat_appcompat",
        "com.google.android.material_material",
        "androidx-constraintlayout_constraintlayout",
    ]
}

rice14.mk文件中变更PRODUCT_PACKAGES变量为

1
2
3
4
PRODUCT_PACKAGES += helloworld \
    busybox \
    hellojavajar \
    FirstSystemApp

三、编译

执行以下命令编译:

1
2
3
source build/envsetup.sh
lunch rice14-eng
m

编译完成后启动模拟器,在模拟器中如果应用列表存在FirstSystemApp应用,则表示操作成功。

四、系统APP添加自动定义库

其实,我们在开发系统APP需要的大多依赖库在AOSP源码中已经存在,我们只需要在Android.bp文件中添加依赖即可。相关目录如下:

  • prebuilts/tools/common/m2
  • prebuilts/sdk/current/androidx

但如果系统中不存在我们需要的依赖库,我们可以手动添加三方库。接下来我们添加lottie库,在FirstSystemApp目录下新建一个liblottie目录,然后把下载的lottie依赖包添加到目录下,lottie的下载地址为https://repo1.maven.org/maven2/com/airbnb/android/lottie/5.2.0/lottie-5.2.0.aar。将lottie添加到本地后,在该目录新建一个Android.bp文件,内容如下:

1
2
3
4
5
android_library_import {
    name: "lib-lottie",
    aars: ["lottie-5.2.0.aar"],
    sdk_version: "current"
}

最后,我们在FistSystemApp目录下Android.bp文件中添加lottie依赖,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
android_app {
    name: "FirstSystemApp",
    srcs: ["src/**/*.java"],
    resource_dirs: ["res"],
    manifest: "AndroidManifest.xml",
    platform_apis: true,
    sdk_version: "",
    certificate: "platform",
    product_specific: true,

    static_libs: [
        "androidx.appcompat_appcompat",
        "com.google.android.material_material",
        "androidx-constraintlayout_constraintlayout",
        "lib-lottie"
    ]
}

再进行编译,编译成功,代表自定义系统APP添加三方库成功。

本文由作者按照 CC BY 4.0 进行授权

在AOSP中添加二进制可执行程序

使用Android Studio开发Android系统应用