【新】so庫(kù)文件的編譯策略
一、放入APK
放入apk,若apk中有l(wèi)ibs庫(kù),將其中的jar包放到apk同一目錄下,并關(guān)注apk中l(wèi)ib包下適配處理器的位數(shù),如下:
armeabi(32位)
armeabi-v7a(32位)
arm64-v8a(64位)
如果適配多種處理器,適配so文件最全的(注意X86是因特爾的處理器不能集成)。
如果32位和64位的so文件一樣多,可同時(shí)適配。
另:若so文件是共用的將so文件提出來(lái)與apk放在同一目錄下
二、配置Android.mk
1.腳本開(kāi)頭
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(配置處理器位數(shù):32/64/both,與上面放入的so庫(kù)一致,32/64兩套都放入時(shí)選擇both,沒(méi)有l(wèi)ib可去掉這句)
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(如果是位數(shù)是both,去掉這句)
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/lib(32位放到lib,64位放到lib64)
LOCAL_MULTILIB :=32(配置處理器位數(shù):32/64/both,與上面放入的so庫(kù)一致,32/64兩套都放入時(shí)選擇both)
include $(BUILD_PREBUILT)
特殊處理:禁止進(jìn)行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(調(diào)用so文件)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES_32:= $(LOCAL_MODULE).apk(【32位為L(zhǎng)OCAL_SRC_FILES_32,64位為L(zhǎng)OCAL_SRC_FILES_64,32位64位都配置或沒(méi)有l(wèi)ib的時(shí)候?yàn)長(zhǎng)OCAL_SRC_FILES】:=【apk名】)
LOCAL_MODULE_CLASS := APPS
LOCAL_MULTILIB :=32(配置處理器位數(shù):32/64/both,與上面放入的so庫(kù)一致,32/64兩套都放入時(shí)選擇both,沒(méi)有l(wèi)ib可去掉)
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE :=platform(簽名方式包括系統(tǒng)簽名platform與應(yīng)用自簽名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庫(kù)文件的編譯策略
include $(BUILD_PREBUILT)
特殊處理:
apk可卸載(若apk可卸載lib包可直接忽略無(wú)需定義)
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
可參看vendor/letv/preloadapps/eui/supersearch/Android.mk
不需要odex優(yōu)化
LOCAL_DEX_PREOPT := false
可參看vendor/letv/preloadapps/eui/letvbigdata/Android.mk
一般情況應(yīng)用集成到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.單獨(dú)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下根據(jù)對(duì)應(yīng)版本引用apk
PRODUCT_PACKAGES +=LePush(該名與Android.mk中的LOCAL_MODULE命名一致)
公共引用腳本如下:
common_domestic_packages.mk(所有機(jī)型國(guó)內(nèi)版本配置文件)
common_oversea_packages.mk(所有機(jī)型海外版本配置文件)
common_packages.mk(所有機(jī)型配置文件)
注:這部分需要聯(lián)系我們進(jìn)行修改。
【舊】
一、放入APK
放入apk,并將apk中l(wèi)ib庫(kù)中的so文件以及l(fā)ibs庫(kù)中的jar包一并放入,并關(guān)注lib下適配處理器的位數(shù),如下:
armeabi(32位)
armeabi-v7a(32位)
arm64-v8a(64位)
如果適配多種處理器,選用so文件最全的(注意X86是因特爾的處理器不能集成)。
如果32位和64位的so文件一樣多可將兩套so文件全部放入(參看vendor/letv/preloadapps/eui/VoiceAssistant)。
二、配置Android.mk
1.腳本開(kāi)頭
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(配置處理器位數(shù):32/64/both,與上面放入的so庫(kù)一致,32/64兩套都放入時(shí)選擇both,沒(méi)有l(wèi)ib可去掉這句)
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(如果是位數(shù)是both,去掉這句)
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/lib(32位放到lib,64位放到lib64)
LOCAL_MULTILIB :=32(配置處理器位數(shù):32/64/both,與上面放入的so庫(kù)一致,32/64兩套都放入時(shí)選擇both)
include $(BUILD_PREBUILT)
特殊處理:禁止進(jìn)行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(調(diào)用so文件)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES_32:= $(LOCAL_MODULE).apk(【32位為L(zhǎng)OCAL_SRC_FILES_32,64位為L(zhǎng)OCAL_SRC_FILES_64,32位64位都配置或沒(méi)有l(wèi)ib的時(shí)候?yàn)長(zhǎng)OCAL_SRC_FILES】:=【apk名】)
LOCAL_MODULE_CLASS := APPS
LOCAL_MULTILIB :=32(配置處理器位數(shù):32/64/both,與上面放入的so庫(kù)一致,32/64兩套都放入時(shí)選擇both,沒(méi)有l(wèi)ib可去掉)
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE :=platform(簽名方式包括系統(tǒng)簽名platform與應(yīng)用自簽名PRESIGNED)
LOCAL_STATIC_JAVA_LIBRARIES :=fastjsonLesport(引用jar包)
LOCAL_JNI_SHARED_LIBRARIES := \
libtpnsWatchdogSport \
libtpnsSecuritySport(引用so文件)
include $(BUILD_PREBUILT)
特殊處理:
apk可卸載(若apk可卸載lib包可直接忽略無(wú)需定義)
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
可參看vendor/letv/preloadapps/eui/supersearch/Android.mk
不需要odex優(yōu)化
LOCAL_DEX_PREOPT := false
可參看vendor/letv/preloadapps/eui/letvbigdata/Android.mk
一般情況應(yīng)用集成到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.單獨(dú)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下根據(jù)對(duì)應(yīng)版本引用apk
PRODUCT_PACKAGES +=LePush(該名與Android.mk中的LOCAL_MODULE命名一致)
公共引用腳本如下:
common_domestic_packages.mk(所有機(jī)型國(guó)內(nèi)版本配置文件)
common_oversea_packages.mk(所有機(jī)型海外版本配置文件)
common_packages.mk(所有機(jī)型配置文件)
注:這部分需要聯(lián)系我們進(jìn)行修改