如何将编译好的apk文件加入定制Android系统?
需求由来:由于移植的AOSP Android系统还无法直接在网上安装app,于是下载了一些已经编译好的app,问题是这些app该放在何处?如何让Android系统安装它们?
下面以AngryBird.apk为例介绍如何实现。
创建packages/apps/AngryBird目录:
alan@FSLChengdu:/data/alan/Android$ ls packages/apps/AngryBird/
Android.mk AngryBird.apk
将AngryBird.apk放到这个目录里面,并在其中建立文件Android.mk,文件内容为:
alan@FSLChengdu:/data/alan/Android$ vi packages/apps/AngryBird/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := AngryBird
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)
接下来,在PRODUCT_PACKAGES中加入该app模块的名称,如此,编译Android系统时,AngryBird就会被编译进去,并且在Android系统起来时会自动安装该app。我的Android是在device/nxp/layerscape/packages.mk加入:
alan@FSLChengdu:/data/alan/Android$ vi device/nxp/layerscape/packages.mk
PRODUCT_PACKAGES += \
AngryBird \
BaoxuePlayer \
QihooBrowser \
QihooAppStore \
app模块的名称必须与上面LOCAL_MODULE的一致。
题外话:如此安装的apk是安装在system分区,不是在data分区,因此普通情况下不能卸载。
如果感觉到本文对您有所助益,您可以请我喝一杯咖啡。