android 预制32 64 位so, bin

参考:http://blog.csdn.net/qhc88/article/details/51066628

预制有源码和无源码32 , 64 bit so bin 通过LOCAL_MODULE_TARGET_ARCHS 、 LOCAL_MULTILIB 控制

LOCAL_PATH := $(call my-dir)
sources := \
   tvini.c \
   mmap.c \
   spi.c
cincludes := \
   $(TARGET_OUT_HEADERS) \
   $(TARGET_UTOPIA_LIBS_DIR)/include \
    external/iniparser
# libmutils.so
# ==============================================================================
include $(CLEAR_VARS)
LOCAL_MODULE := libmutils
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(sources)
LOCAL_C_INCLUDES := $(cincludes)
LOCAL_CFLAGS := -DMSOS_TYPE_LINUX-DENABLE_LOGGER
LOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutils
WEWWW
include $(BUILD_SHARED_LIBRARY)

对于有源码,只编译32 lib的so

LOCAL_PATH := $(call my-dir)
sources := \
   tvini.c \
   mmap.c \
   spi.c
cincludes := \
   $(TARGET_OUT_HEADERS) \
   $(TARGET_UTOPIA_LIBS_DIR)/include \
   external/iniparser
# libmutils.so
#==============================================================================
include $(CLEAR_VARS)
LOCAL_MODULE := libmutils
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(sources)
LOCAL_C_INCLUDES := $(cincludes)
LOCAL_CFLAGS := -DMSOS_TYPE_LINUX-DENABLE_LOGGER
LOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutils
LOCAL_32_BIT_ONLY := true
include $(BUILD_SHARED_LIBRARY)

或者采用下面的这种方法

LOCAL_PATH := $(call my-dir)
sources := \
   tvini.c \
   mmap.c \
   spi.c
cincludes := \
   $(TARGET_OUT_HEADERS) \
   $(TARGET_UTOPIA_LIBS_DIR)/include \
   external/iniparser
# libmutils.so
# ==============================================================================
include $(CLEAR_VARS)
LOCAL_MODULE := libmutils
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(sources)
LOCAL_C_INCLUDES := $(cincludes)
LOCAL_CFLAGS := -DMSOS_TYPE_LINUX -DENABLE_LOGGER
LOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutils

LOCAL_MODULE_TARGET_ARCH:= arm
LOCAL_MULTILIB := 32

include $(BUILD_SHARED_LIBRARY)

对于有源码,但是只需要编译64 bit的so

LOCAL_PATH := $(call my-dir)
sources := \
   tvini.c \
   mmap.c \
   spi.c
cincludes := \
   $(TARGET_OUT_HEADERS) \
   $(TARGET_UTOPIA_LIBS_DIR)/include \
   external/iniparser
# libmutils.so
#==============================================================================
include $(CLEAR_VARS)
LOCAL_MODULE := libmutils
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(sources)
LOCAL_C_INCLUDES := $(cincludes)
LOCAL_CFLAGS := -DMSOS_TYPE_LINUX-DENABLE_LOGGER
LOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutils

LOCAL_MODULE_TARGET_ARCH:= arm64
LOCAL_MULTILIB := 64

include $(BUILD_SHARED_LIBRARY)

下面在说一下没有源码,预制so的方式
对于有32 跟64 bit so的东西,都想预制进入可以采用:

## libutopia.so
##==============================================================================
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE := libutopia
LOCAL_MODULE_CLASS := SHARED_LIBRARIES

LOCAL_SRC_FILES_arm :=lib/libutopia.so
LOCAL_SRC_FILES_arm64 :=lib64/libutopia.so
LOCAL_MODULE_TARGET_ARCHS:= arm arm64
LOCAL_MULTILIB := both

include $(BUILD_PREBUILT)

如果只预制32 bit的so

## libutopia.so
##==============================================================================
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE := libutopia
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_SRC_FILES_arm :=lib/libutopia.so

LOCAL_MODULE_TARGET_ARCHS:= arm
LOCAL_MULTILIB := 32

include $(BUILD_PREBUILT)

如果只想预制64 bit的so

## libutopia.so
##==============================================================================
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE := libutopia
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_SRC_FILES_arm64 :=lib64/libutopia.so

LOCAL_MODULE_TARGET_ARCHS:= arm64
LOCAL_MULTILIB := 64


include $(BUILD_PREBUILT)

预置 apk,请参考下面的写法预置 apk
1,预置system app下的apk

define PREBUILT_system_apps_template
 include $(CLEAR_VARS)
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := $(1)
 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
 LOCAL_MODULE_CLASS := APPS
 LOCAL_CERTIFICATE := platform
 LOCAL_SRC_FILES := $$(LOCAL_MODULE)$(COMMON_ANDROID_PACKAGE_SUFFIX)
 include $(BUILD_PREBUILT)
endef

2,预置system下的apk, force apk 跑 32 bit, libbluetooth_jni部分是一个32 bit的lib

define PREBUILT_system_apps_template_32only
 include $(CLEAR_VARS)
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := $(1)
 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
 LOCAL_MODULE_CLASS := APPS
 LOCAL_CERTIFICATE := platform
 LOCAL_SRC_FILES := $$(LOCAL_MODULE)$(COMMON_ANDROID_PACKAGE_SUFFIX)

 LOCAL_MULTILIB := 32

 LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
 include $(BUILD_PREBUILT)
endef

3,预置system app, 不用系统签名, 用预签名

definePREBUILT_system_apps_template_32only_presigned
 include $(CLEAR_VARS)
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := $(1)
 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
 LOCAL_MODULE_CLASS := APPS
 LOCAL_CERTIFICATE := PRESIGNED

 LOCAL_MULTILIB := 32

 LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
 include $(BUILD_PREBUILT)
endef

4,预置system vendor apk

define PREBUILT_vendor_apps_template
 include $(CLEAR_VARS)
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := $(1)
 LOCAL_MODULE_CLASS := APPS

 LOCAL_MODULE_PATH:= $(TARGET_OUT)/vendor/app

 LOCAL_CERTIFICATE := platform
 LOCAL_SRC_FILES := $(1).apk
 include $(BUILD_PREBUILT)
endef

5,预置system vendor apk, 并force 32 bit

define PREBUILT_vendor_apps_template_32only
 include $(CLEAR_VARS)
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := $(1)
 LOCAL_MODULE_CLASS := APPS

 LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/app

 LOCAL_CERTIFICATE := platform
 LOCAL_SRC_FILES := $(1).apk

 LOCAL_MULTILIB := 32

 LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
 include $(BUILD_PREBUILT)
endef

6,预置data app下的apk,使用系统签名

define PREBUILT_data_apps_template
 include $(CLEAR_VARS)
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := $(1)
 LOCAL_MODULE_CLASS := APPS
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 LOCAL_CERTIFICATE := platform
 LOCAL_SRC_FILES := $(1).apk
 include $(BUILD_PREBUILT)
endef

7,预置data app下的apk,使用预签名

definePREBUILT_data_apps_presigned_template
 include $(CLEAR_VARS)
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := $(1)
 LOCAL_MODULE_CLASS := APPS
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 LOCAL_CERTIFICATE := PRESIGNED
 LOCAL_SRC_FILES := $(1).apk
 include $(BUILD_PREBUILT)
endef

LOCAL_MODULE_TARGET_ARCH
设置成一个架构的列表,只有被构建的架构在列表中才会被构建系统添加进入当前模块。
LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH
LOCAL_MODULE_TARGET_ARCH 的对立选项。
只有被构建的架构不在列表中才会被构建系统添加进入当前模块。

DEX预选择
LOCAL_MULTILIB := both
为APK预置32位和64位的odex ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值