android9.0内置APP

由于android p的代码不同于以往低版本的代码直接可以cp过去,而是在代码的编译同事check一下,多了这一个动作就导致p内置app的时候编译不过的问题,而且错误也是让人摸着头脑,特记录下以防再次出错并回忆学习。

1、对于没有库文件的APP可以直接放在package/app里面创建一个目录并相应写android.mk文件编译进系统里面,例如:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

# Module name should match apk name to be installed
LOCAL_MODULE := app_name 
$(shell mkdir -p $(PRODUCT_OUT)/system/app/app_name )
$(shell cp $(LOCAL_PATH)/$(LOCAL_MODULE).apk $(PRODUCT_OUT)/system/app/app_name /)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)

PS:对于这一段代码可优化,即,删除shell拷贝代码段,在device/mediatek/commom/device.mk中增加模块使其编译到系统中。例如:

PRODUCT_PACKAGES += GooglePinyin

2、对于有库文件的APP上种方法则就不是很实用了,需要采取新的方法来编译。首先,如上一样在package/app里面创建一个文件夹,并把app以及lib库文件放到里面,再通过相应的android.mk文件进行编译。例:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

# Module name should match apk name to be installed
LOCAL_MODULE := app_name
LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MULTILIB := 32
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := app定义的库文件名1
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES_32 := lib/armeabi-v7a/libapp_BaiduNaviApplib.so
LOCAL_SRC_FILES_32 := lib/armeabi-v7a/libapp_BaiduVIlib.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX = .so
LOCAL_MULTILIB = first
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := app定义的库文件名2
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES_32 := lib/armeabi-v7a/libapp_BaiduNaviApplib.so
LOCAL_SRC_FILES_32 := lib/armeabi-v7a/libapp_BaiduVIlib.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX = .so
LOCAL_MULTILIB = first
include $(BUILD_PREBUILT)

app定义的库文件名需要在device\mediatek\common\device.mk中去定义,如:

#For 3rd party NLP provider
PRODUCT_PACKAGES += app_name
PRODUCT_PACKAGES += app_name定义的库文件名
PRODUCT_PACKAGES += app_name定义的库文件名
ifneq ($(strip $(MTK_BASIC_PACKAGE)), yes)
  ifneq ($(strip $(MTK_BSP_PACKAGE)), yes)
    PRODUCT_PROPERTY_OVERRIDES += persist.mtk_nlp_switch_support=1
  endif
endif

猜你喜欢

转载自blog.csdn.net/lwz622/article/details/103473549