一、新建APP项目
我们使用Android Studio 3.6.3
版本新建一个空的APP项目,因为该版本是Android 10 r41
发布之后的版本,适合用于基于Android 10
的APP开发,Android Studio 历史版本下载地址为:https://developer.android.google.cn/studio/archive
新建的APP基本信息如下如所示:
二、拷贝APP项目到AOSP
接下来我们在AOSP的product目录下新建一个目录,名为FirstSystemApp
,然后在该目录下新增src
和res
目录,把新建的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添加三方库成功。