Android源码预制基础

2023-05-16

1.调用mk生效

$(call inherit-product-if-exists, $(DEVICE_SOURCES)/preinstall/preinstall.mk)
$(call inherit-product-if-exists, $(DEVICE_SOURCES)/images/prebuilts/prebuilts.mk)
$(call inherit-product, device/mstar/miraclefruit/device-common.mk)

2.添加编译选项,预制modelname

 

PRODUCT_PACKAGES += \

    trapezoidServer \

3.app预制

//有库的预制方法

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := FlyIME
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_MODULE_CLASS := APPS
LOCAL_PACKAGE_NAME := FlyIME
LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_APPS)
LOCAL_SRC_FILES := FlyIME.apk
LOCAL_CERTIFICATE := PRESIGNED

LOCAL_PREBUILT_JNI_LIBS := \
            lib/armeabi/libcom_iflytek_inputmethod_bundlesetting.so \
            lib/armeabi/libcom_iflytek_inputmethod_mmp.so \
            lib/armeabi/libdexopt.so \
            lib/armeabi/libMetaVAD-v1.so \
            lib/armeabi/libmsc-v8.so \
            lib/armeabi/libNativeCrashCollect.so \
            lib/armeabi/libsmartaiwrite-jni-v23.so \
            lib/armeabi/libvadLib-v5.so \
            lib/armeabi/libvipfont.so

#LOCAL_MULTILIB := 64

include $(BUILD_PREBUILT)

 

无源码apk
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED//apk自己签名
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := AppManager.apk
LOCAL_PACKAGE_NAME := AppManager
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_POST_PROCESS_COMMAND := $(shell mkdir -p $(TARGET_OUT_SYSTEM_APPS)/$(LOCAL_PACKAGE_NAME))  //没试过命令形式
LOCAL_POST_PROCESS_COMMAND := $(shell cp -rf $(LOCAL_PATH)/$(LOCAL_MODULE) $(TARGET_OUT_SYSTEM_APPS)/$(LOCAL_PACKAGE_NAME))

预制动态库
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE := libabc
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_SRC_FILES_arm :=lib/abc.so  //system/lib
LOCAL_SRC_FILES_arm64 :=lib64/libabc.so //system/lib64
LOCAL_MODULE_TARGET_ARCHS:= arm arm64
LOCAL_MULTILIB := both
include $(BUILD_PREBUILT)

预制可执行文件
include $(CLEAR_VARS)
LOCAL_SRC_FILES := verity_verifier
LOCAL_MODULE := verity_verifier
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_IS_HOST_MODULE := true
LOCAL_MODULE_TAGS := optional
LOCAL_REQUIRED_MODULES := VerityVerifier
include $(BUILD_PREBUILT)

静态库
include $(CLEAR_VARS)
LOCAL_MODULE := libavp
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_SUFFIX := .a
LOCAL_SRC_FILES := cortex-a12/$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX)
LOCAL_MODULE_TARGET_ARCH := arm
LOCAL_MULTILIB := 32
include $(BUILD_PREBUILT)

jar包
LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava //调用jar包
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SDK_VERSION := current
LOCAL_PACKAGE_NAME := Calculator
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:arity-2.1.2.jar

include $(BUILD_MULTI_PREBUILT)

aar包
LOCAL_STATIC_JAVA_AAR_LIBRARIES += aesodm //调用

//有些还需要导aar包(com.sensetime.dms aesodm对应包名)
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages com.sensetime.dms

include $(CLEAR_VARS) 
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := aesodm:libs/aes.aar
include $(BUILD_MULTI_PREBUILT)

4.动态库

//如果只想预制64 bit的so
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE := libdms_sdk_c_api
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_SRC_FILES_arm64 := libs/arm64-v8a/libdms_sdk_c_api.so
LOCAL_MODULE_TARGET_ARCHS:= arm64
LOCAL_MULTILIB := 64

include $(BUILD_PREBUILT)


//预制64 bit的so并且制定out路径
include $(CLEAR_VARS)
LOCAL_MODULE        := libdms_sdk_c_api
LOCAL_MODULE_CLASS  := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_STRIP_MODULE  := false
LOCAL_MULTILIB      := 64
LOCAL_MODULE_OWNER  := qcom
LOCAL_MODULE_TAGS   := optional
LOCAL_SRC_FILES     := ../../.././target/product/msm8996_gvmq/vendor/lib64/libwfdmmservice.so
LOCAL_MODULE_PATH   := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/lib64
LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_PREBUILT)

//同时预制32和64位库
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES_32 := \
        libs/armeabi-v7a/libACRCloudUniversalEngine.so
LOCAL_SRC_FILES_64 := \
        libs/arm64-v8a/libACRCloudUniversalEngine.so
LOCAL_MODULE := libACRCloudUniversalEngine
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MULTILIB := both
include $(BUILD_PREBUILT)

 

5.Android.mk调用
 

LOCAL_JNI_SHARED_LIBRARIES := xxx  //链接jni库
LOCAL_SHARED_LIBRARIES := xxx   //链接动态库
LOCAL_SRC_FILES := $(call all-java-files-under, src)  //加载src目录的java文件
LOCAL_STATIC_JAVA_LIBRARIES += SensetimeDMS  //链接jar包
LOCAL_STATIC_JAVA_AAR_LIBRARIES += kuwo_sdk  //aar包

6.带有so和assets的aar包预制

//需要预制assets文件,同时app需要引用so
LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android源码预制基础 的相关文章

随机推荐