对于有源码编译32 , 64 bit
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
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_SRC_FILES := $$(LOCAL_MODULE)$(COMMON_ANDROID_PACKAGE_SUFFIX)
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