android 预制32 64 位so, bin

来源:互联网 发布:免费流量软件下载 编辑:程序博客网 时间:2024/05/20 20:44


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

LOCAL_PATH := $(call my-dir)sources := \   tvini.c \   mmap.c \   spi.ccincludes := \   $(TARGET_OUT_HEADERS) \   $(TARGET_UTOPIA_LIBS_DIR)/include \    external/iniparser# libmutils.so# ==============================================================================include $(CLEAR_VARS)LOCAL_MODULE := libmutilsLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(sources)LOCAL_C_INCLUDES := $(cincludes)LOCAL_CFLAGS := -DMSOS_TYPE_LINUX-DENABLE_LOGGERLOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutilsWEWWWinclude $(BUILD_SHARED_LIBRARY)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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

LOCAL_PATH := $(call my-dir)sources := \   tvini.c \   mmap.c \   spi.ccincludes := \   $(TARGET_OUT_HEADERS) \   $(TARGET_UTOPIA_LIBS_DIR)/include \   external/iniparser# libmutils.so#==============================================================================include $(CLEAR_VARS)LOCAL_MODULE := libmutilsLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(sources)LOCAL_C_INCLUDES := $(cincludes)LOCAL_CFLAGS := -DMSOS_TYPE_LINUX-DENABLE_LOGGERLOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutilsLOCAL_32_BIT_ONLY := trueinclude $(BUILD_SHARED_LIBRARY)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

或者采用下面的这种方法

LOCAL_PATH := $(call my-dir)sources := \   tvini.c \   mmap.c \   spi.ccincludes := \   $(TARGET_OUT_HEADERS) \   $(TARGET_UTOPIA_LIBS_DIR)/include \   external/iniparser# libmutils.so# ==============================================================================include $(CLEAR_VARS)LOCAL_MODULE := libmutilsLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(sources)LOCAL_C_INCLUDES := $(cincludes)LOCAL_CFLAGS := -DMSOS_TYPE_LINUX -DENABLE_LOGGERLOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutilsLOCAL_MODULE_TARGET_ARCH:= armLOCAL_MULTILIB := 32include $(BUILD_SHARED_LIBRARY)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

LOCAL_PATH := $(call my-dir)sources := \   tvini.c \   mmap.c \   spi.ccincludes := \   $(TARGET_OUT_HEADERS) \   $(TARGET_UTOPIA_LIBS_DIR)/include \   external/iniparser# libmutils.so#==============================================================================include $(CLEAR_VARS)LOCAL_MODULE := libmutilsLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(sources)LOCAL_C_INCLUDES := $(cincludes)LOCAL_CFLAGS := -DMSOS_TYPE_LINUX-DENABLE_LOGGERLOCAL_SHARED_LIBRARIES := liblog libutopialibiniparser libcutilsLOCAL_MODULE_TARGET_ARCH:= arm64LOCAL_MULTILIB := 64include $(BUILD_SHARED_LIBRARY)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

## libutopia.so##==============================================================================include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE_SUFFIX := .soLOCAL_MODULE := libutopiaLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_SRC_FILES_arm :=lib/libutopia.soLOCAL_SRC_FILES_arm64 :=lib64/libutopia.soLOCAL_MODULE_TARGET_ARCHS:= arm arm64LOCAL_MULTILIB := bothinclude $(BUILD_PREBUILT)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如果只预制32 bit的so

## libutopia.so##==============================================================================include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE_SUFFIX := .soLOCAL_MODULE := libutopiaLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_SRC_FILES_arm :=lib/libutopia.soLOCAL_MODULE_TARGET_ARCHS:= armLOCAL_MULTILIB := 32include $(BUILD_PREBUILT)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

如果只想预制64 bit的so

## libutopia.so##==============================================================================include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE_SUFFIX := .soLOCAL_MODULE := libutopiaLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_SRC_FILES_arm64 :=lib64/libutopia.soLOCAL_MODULE_TARGET_ARCHS:= arm64LOCAL_MULTILIB := 64include $(BUILD_PREBUILT)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

预置 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

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


参考http://blog.csdn.net/le_773/article/details/51714986


原创粉丝点击