Apk預(yù)制過(guò)程

【新】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)行修改

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在之前的公司參與項(xiàng)目開(kāi)發(fā)的時(shí)候,雖然不負(fù)責(zé)系統(tǒng)固件編譯腳本的維護(hù),但為了工作的過(guò)程中更加的順利,便學(xué)習(xí)了一下And...
    N8_xEnn7nA1閱讀 10,953評(píng)論 0 10
  • 一、如何將帶源碼的APK預(yù)置進(jìn)系統(tǒng) 在 packages/apps 下面以需要預(yù)置的 APK的 名字創(chuàng)建一個(gè)新文件...
    天空汁橙閱讀 8,590評(píng)論 0 8
  • 因?yàn)楣ぷ餍枰?,?jīng)常要開(kāi)發(fā)和合入系統(tǒng)App,所以在此開(kāi)篇作為收集和記錄Android合入系統(tǒng)應(yīng)用的方法,以備日后查閱...
    _Justin閱讀 21,692評(píng)論 16 70
  • Tcp/IP通信也是不安全的,在傳輸?shù)臅r(shí)候也可能出現(xiàn)漏洞 查看正在運(yùn)行的進(jìn)程 adb shell ps -A |g...
    遠(yuǎn)遠(yuǎn)飄著云閱讀 5,203評(píng)論 0 0
  • 1:InputChannel提供函數(shù)創(chuàng)建底層的Pipe對(duì)象 2: 1)客戶(hù)端需要新建窗口 2)new ViewRo...
    自由人是工程師閱讀 5,701評(píng)論 0 18

友情鏈接更多精彩內(nèi)容