可在/vendor/sprd/目录下,创建一个apps目录

顶级目录变为:/vendor/sprd/apps

# 内置已签名应用

比如内置GpsTest这个应用,创建一个GpsTest目录,在目录下创建Android.mk,内容如下:

LOCAL_PATH := $(call my-dir)
  
include $(CLEAR_VARS)
LOCAL_MODULE := GpsTest
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := GpsTest.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)
1
2
3
4
5
6
7
8
9
10

在将APK包放置到这个目录下,文件名要与LOCAL_SRC_FILES配置项一致

增加编译项,将GpsTest编译进ROM中,修改文件:/device/sprd/sharkle/common/common_packages.mk(绝对路径)

# The default product packages these packages will set to trunk/prime products without feature configs
PRODUCT_PACKAGES += \
+    GpsTest \
1
2
3

提示

PRODUCT_PACKAGES中的名称,要与Android.mk中的LOCAL_MODULE配置项值一致

# 内置系统签名应用

基本步骤跟内置已签名应用差不多,区别在于Android.mk的配置

- LOCAL_CERTIFICATE := PRESIGNED
+ LOCAL_CERTIFICATE := platform
1
2

也就是说,把PRESIGNED改为platform即可。但是要注意,此时的APK文件,应是未签名的的APK包。

# 内置带SO库的应用

比如内置Google的TTS,我们把最新的Google TTS下载下来,并安装到手机上,在手机上把中文包下载下来,在放到assets目录中,重新打包APK,这样就得到了一个预置了中文语音包的TTS。

Android.mk的配置如下:

LOCAL_PATH := $(call my-dir)
  
include $(CLEAR_VARS)
LOCAL_MODULE := TTS
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := TTS.apk
LOCAL_PREBUILT_JNI_LIBS:= libtts_android_neon.so
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)
1
2
3
4
5
6
7
8
9
10
11

在把未签名的APK文件及libtts_android_neon.so放到同一目录下,即可。

注意

这里指的是将SO库与APK分离的内置方法,如果SO库在APK包内,就跟内置已签名应用一样了。