android系统内置第三方app

内置第三方app算是基本的常用需求,每个项目总会需要内置那么一两个,下面看看如何内置app

  1. 新建文件夹(源码目录下,位置任意,但是不能放太深不然刚开始编译遍历android.mk的时候无法遍历到) 命名app的名字(这样方便查找),将要内置的app放入文件夹中。
  2. 在新建文件夹中添加空文件,文件名Android.mk ,在文件中添加(以google拼音输入法为例)
#将当前的路径赋值给LOCAL_PATH
LOCAL_PATH := $(call my-dir)

#具体什么意思不懂,但是其他的每份Android.mk都有这句就借鉴过来了
include $(CLEAR_VARS)
#定义模块的名称,一般就是app的名字
LOCAL_MODULE := GoogleInput
#要在哪总版本下编译,可选择值有user eng tests optional,optional表示任意版本都编译
LOCAL_MODULE_TAGS := optional 
#源app的位置
LOCAL_SRC_FILES := GoogleInput.apk
#定义编译完成之后的类型:除了APPS,还有ETC,EXECUTABLES(.bin)SHARED_LIBRARIES(.so) 等选择值
LOCAL_MODULE_CLASS := APPS
#定义编译完成之后模块的后缀
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

#添加lib文件的引用,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中,可根据CPU 的(TARGET_ARCH)不同类型对SO  进行处理。
LOCAL_PREBUILT_JNI_LIBS := \
	@lib/armeabi-v7a/liben_data_bundle.so \
	@lib/armeabi-v7a/libgnustl_shared.so \
	@lib/armeabi-v7a/libhmm_gesture_hwr_zh.so \
	@lib/armeabi-v7a/libhwrword.so \
	@lib/armeabi-v7a/libpinyin_data_bundle.so

#定义编译之后的位置
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
#定义使用原app签名可用选择项platform,shared,media
LOCAL_CERTIFICATE := PRESIGNED
#不进行odex化
LOCAL_DEX_PREOPT := false

#具体什么意思不懂,但是其他的app每份Android.mk都有这句就借鉴过来了
include $(BUILD_PREBUILT)

  1. 最后一步 将PRODUCT_PACKAGES += GoogleInput 加入的能的系统编译的的.mk中。PRODUCT_PACKAGES后跟的是模块名称

最最后全编验证

你可能感兴趣的:(Android)