【新】so库文件的编译策略
一、放入APK
放入apk,若apk中有libs库,将其中的jar包放到apk同一目录下,并关注apk中lib包下适配处理器的位数,如下:
armeabi(32位)
armeabi-v7a(32位)
arm64-v8a(64位)
如果适配多种处理器,适配so文件最全的(注意X86是因特尔的处理器不能集成)。
如果32位和64位的so文件一样多,可同时适配。
另:若so文件是共用的将so文件提出来与apk放在同一目录下
二、配置Android.mk
1.脚本开头
LOCAL_PATH := $(call my-dir)
2.引用jar包的配置
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=fastjsonLesport:libs/fastjson_1.1.45.jar(【jar包重命名】:【jar包】)
LOCAL_MULTILIB :=32(配置处理器位数:32/64/both,与上面放入的so库一致,32/64两套都放入时选择both,没有lib可去掉这句)
LOCAL_MODULE_TAGS := optional(在user eng tests版本下都编译)
include $(BUILD_MULTI_PREBUILT)
34.公共的so文件的配置
include $(CLEAR_VARS)
LOCAL_MODULE :=libtpnsWatchdog(so文件名,可以是so文件名,也可重命名)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES :=libtpnsWatchdog.so(so文件)
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_OWNER := letv
LOCAL_PROPRIETARY_MODULE := true(如果是位数是both,去掉这句)
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/lib(32位放到lib,64位放到lib64)
LOCAL_MULTILIB :=32(配置处理器位数:32/64/both,与上面放入的so库一致,32/64两套都放入时选择both)
include $(BUILD_PREBUILT)
特殊处理:禁止进行strip操作
LOCAL_STRIP_MODULE :=false
可参看vendor/letv/preloadapps/eui/superlive/Android.mk
4.apk配置
include $(CLEAR_VARS)
LOCAL_MODULE :=leSport(apk名,可重命名)
LOCAL_JNI_SHARED_LIBRARIES := libtpnsWatchdogSport libtpnsSecuritySport(调用so文件)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES_32:= $(LOCAL_MODULE).apk(【32位为LOCAL_SRC_FILES_32,64位为LOCAL_SRC_FILES_64,32位64位都配置或没有lib的时候为LOCAL_SRC_FILES】:=【apk名】)
LOCAL_MODULE_CLASS := APPS
LOCAL_MULTILIB :=32(配置处理器位数:32/64/both,与上面放入的so库一致,32/64两套都放入时选择both,没有lib可去掉)
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE :=platform(签名方式包括系统签名platform与应用自签名PRESIGNED)
LOCAL_STATIC_JAVA_LIBRARIES :=fastjsonLesport(引用jar包)
LOCAL_JNI_SHARED_LIBRARIES := \
libtpnsWatchdogSport \
libtpnsSecuritySport(引用公共so文件)
@lib/armeabi-v7a/libtpnsWatchdogSport.so \
@lib/armeabi-v7a/libtpnsSecuritySport.so(引用apk中so文件)
具体参看:so库文件的编译策略
include $(BUILD_PREBUILT)
特殊处理:
apk可卸载(若apk可卸载lib包可直接忽略无需定义)
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
可参看vendor/letv/preloadapps/eui/supersearch/Android.mk
不需要odex优化
LOCAL_DEX_PREOPT := false
可参看vendor/letv/preloadapps/eui/letvbigdata/Android.mk
一般情况应用集成到system/app下,若需要集成到system/priv-app下可添加
LOCAL_PRIVILEGED_MODULE := true
可参看vendor/letv/preloadapps/eui/letvvideo/Android.mk
若需要集成到system下其他路径(如vendor/overlay)可添加
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/overlay
可参看vendor/letv/preloadapps/eui/AccountProxy_SHARPKey/Android.mk
5.单独jar包集成
include $(CLEAR_VARS)
LOCAL_MODULE :=cde_client_sdk(jar包,可重命名)
LOCAL_SRC_FILES :=cde-sdk-0.9.90.jar(jar包名)
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
LOCAL_NO_EMMA_INSTRUMENT := true
LOCAL_NO_EMMA_COMPILE := true
LOCAL_DX_FLAGS := --core-library
LOCAL_MODULE_OWNER := letv
include $(BUILD_PREBUILT)
三、引用apk
在vendor/letv/preloadapps/scripts下根据对应版本引用apk
PRODUCT_PACKAGES +=LePush(该名与Android.mk中的LOCAL_MODULE命名一致)
公共引用脚本如下:
common_domestic_packages.mk(所有机型国内版本配置文件)
common_oversea_packages.mk(所有机型海外版本配置文件)
common_packages.mk(所有机型配置文件)
注:这部分需要联系我们进行修改。
【旧】
一、放入APK
放入apk,并将apk中lib库中的so文件以及libs库中的jar包一并放入,并关注lib下适配处理器的位数,如下:
armeabi(32位)
armeabi-v7a(32位)
arm64-v8a(64位)
如果适配多种处理器,选用so文件最全的(注意X86是因特尔的处理器不能集成)。
如果32位和64位的so文件一样多可将两套so文件全部放入(参看vendor/letv/preloadapps/eui/VoiceAssistant)。
二、配置Android.mk
1.脚本开头
LOCAL_PATH := $(call my-dir)
2.引用jar包的配置
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=fastjsonLesport:libs/fastjson_1.1.45.jar(【jar包重命名】:【jar包】)
LOCAL_MULTILIB :=32(配置处理器位数:32/64/both,与上面放入的so库一致,32/64两套都放入时选择both,没有lib可去掉这句)
LOCAL_MODULE_TAGS := optional(在user eng tests版本下都编译)
include $(BUILD_MULTI_PREBUILT)
34.引用的so文件的配置
include $(CLEAR_VARS)
LOCAL_MODULE :=libtpnsWatchdog(so文件名,可以是so文件名,也可重命名)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES :=libtpnsWatchdog.so(so文件)
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_OWNER := letv
LOCAL_PROPRIETARY_MODULE := true(如果是位数是both,去掉这句)
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/lib(32位放到lib,64位放到lib64)
LOCAL_MULTILIB :=32(配置处理器位数:32/64/both,与上面放入的so库一致,32/64两套都放入时选择both)
include $(BUILD_PREBUILT)
特殊处理:禁止进行strip操作
LOCAL_STRIP_MODULE :=false
可参看vendor/letv/preloadapps/eui/superlive/Android.mk
4.apk配置
include $(CLEAR_VARS)
LOCAL_MODULE :=leSport(apk名,可重命名)
LOCAL_JNI_SHARED_LIBRARIES := libtpnsWatchdogSport libtpnsSecuritySport(调用so文件)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES_32:= $(LOCAL_MODULE).apk(【32位为LOCAL_SRC_FILES_32,64位为LOCAL_SRC_FILES_64,32位64位都配置或没有lib的时候为LOCAL_SRC_FILES】:=【apk名】)
LOCAL_MODULE_CLASS := APPS
LOCAL_MULTILIB :=32(配置处理器位数:32/64/both,与上面放入的so库一致,32/64两套都放入时选择both,没有lib可去掉)
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE :=platform(签名方式包括系统签名platform与应用自签名PRESIGNED)
LOCAL_STATIC_JAVA_LIBRARIES :=fastjsonLesport(引用jar包)
LOCAL_JNI_SHARED_LIBRARIES := \
libtpnsWatchdogSport \
libtpnsSecuritySport(引用so文件)
include $(BUILD_PREBUILT)
特殊处理:
apk可卸载(若apk可卸载lib包可直接忽略无需定义)
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
可参看vendor/letv/preloadapps/eui/supersearch/Android.mk
不需要odex优化
LOCAL_DEX_PREOPT := false
可参看vendor/letv/preloadapps/eui/letvbigdata/Android.mk
一般情况应用集成到system/app下,若需要集成到system/priv-app下可添加
LOCAL_PRIVILEGED_MODULE := true
可参看vendor/letv/preloadapps/eui/letvvideo/Android.mk
若需要集成到system下其他路径(如vendor/overlay)可添加
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/overlay
可参看vendor/letv/preloadapps/eui/AccountProxy_SHARPKey/Android.mk
5.单独jar包集成
include $(CLEAR_VARS)
LOCAL_MODULE :=cde_client_sdk(jar包,可重命名)
LOCAL_SRC_FILES :=cde-sdk-0.9.90.jar(jar包名)
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
LOCAL_NO_EMMA_INSTRUMENT := true
LOCAL_NO_EMMA_COMPILE := true
LOCAL_DX_FLAGS := --core-library
LOCAL_MODULE_OWNER := letv
include $(BUILD_PREBUILT)
三、引用apk
在vendor/letv/preloadapps/scripts下根据对应版本引用apk
PRODUCT_PACKAGES +=LePush(该名与Android.mk中的LOCAL_MODULE命名一致)
公共引用脚本如下:
common_domestic_packages.mk(所有机型国内版本配置文件)
common_oversea_packages.mk(所有机型海外版本配置文件)
common_packages.mk(所有机型配置文件)
注:这部分需要联系我们进行修改