Android.mk常见变量的使用和含义

mac2025-04-11  5

 

常见变量的使用和含义。

/* user: 指该模块只在user版本下才编译 eng: 指该模块只在eng版本下才编译 tests: 指该模块只在tests版本下才编译 optional:指该模块在所有版本下都编译 */ LOCAL_MODULE_TAGS := optional ​ /* 用于设置不同的签名方式 build/target/product/security目录中有四组默认签名供Android.mk在编译APK使用: 1、testkey:普通APK,默认情况下使用。 2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。 3、shared:该APK需要和home/contacts进程共享数据。 4、media:该APK是media/download系统中的一环。 */ LOCAL_CERTIFICATE := platform ​ /* 指定依赖的静态java类库 */ LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 ​ /* 指定依赖的共享java类库 */ LOCAL_JAVA_LIBRARIES += mediatek-framework ​ /* RenderScript在应用程序执行图像处理,计算摄影或者计算机视觉等方面都非常有用,并不是Android.mk文件的必需品。 */ LOCAL_RENDERSCRIPT_TARGET_API := 18 LOCAL_RENDERSCRIPT_COMPATIBILITY := 18 LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript ​ /* src、dir就是编译的源码Java文件(src)和xml资源文件(dir) */ LOCAL_SRC_FILES := $(call all-java-files-under, src) $(prev_compiled_rs_files) LOCAL_SRC_FILES += ../Camera/src/com/mediatek/camera/addition/remotecamera/service/ICameraClientCallback.aidl LOCAL_SRC_FILES += ../Camera/src/com/mediatek/camera/addition/remotecamera/service/IMtkCameraService.aidl LOCAL_AIDL_INCLUDES += $(LOCAL_PATH)/src LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res $(LOCAL_PATH)/res_ext $(LOCAL_PATH)/res_v2 ​ /* aapt是Android的打包工具: -–auto-add-overlay意思是当不同文件夹有相同的资源id时,只将第一个资源合并打包进来 -–extra-packages android.support.v7.appcompat,意思是将extra-package包后边的文件包引入到当前代码框架中,就像给当前代码导入一个jar包,但是这里不限jar、library等等,这样引入编译之后就能合并在一起使用 */ #LOCAL_AAPT_FLAGS := --auto-add-overlay LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.android.camera ​ /* Java代码中引用JNI中的共享库*.so,此变量就是共享库的名字。 */   LOCAL_JNI_SHARED_LIBRARIES := libjni_jpegdecoder   LOCAL_JNI_SHARED_LIBRARIES += libjni_jpegencoder ​ /* 指定不需要混淆的native方法与变量的proguard.flags文件 */ LOCAL_PROGUARD_FLAG_FILES := proguard.flags ​ /* 应用在编译之后目录的名称 */ LOCAL_PACKAGE_NAME := Camera ​ /* LOCAL_PRIVATE_PLATFORM_APIS设置后,会使用sdk的hide的api來编译 */ LOCAL_PRIVATE_PLATFORM_APIS := true ​ /* 此变量声明模块名称,名称必须唯一且不含任何空格 Build System在生成最终共享库文件时,会将"lib"作为前缀+模块名称+".so"作为共享库文件名称 */ LOCAL_MODULE := avcodec   //生成共享库为avcodec.so LOCAL_MODULE := avdevice //生成共享库为avdevice.so ​ /* 变量设置头文件的include目录列表 */ LOCAL_C_INCLUDES += $(LOCAL_PATH)/include ​ /* 此变量是此模块运行中依赖的共享库模块列表,avcodec和avdevice都是前面定义的共享模块库 */ LOCAL_SHARED_LIBRARIES := avcodec avdevice ​ /* 此变量设置Build System提供的变量执行GNU Makefile脚本,表示指定模块的生成方式; BUILD_SHARED_LIBRARY:编译为动态库(*.so),这里的LOCAL_SRC_FILES的值为*.c/*.cpp; BUILD_STATIC_LIBRARY:编译为静态库(*.a),这里的LOCAL_SRC_FILES的值为*.c/*.cpp; BUILD_EXECUTABLE:编译为Native C可执行程序; PREBUILT_SHARED_LIBRARY:编译为动态库(*.so),与BUILD_SHARED_LIBRARY不同,这里LOCAL_SRC_FILES的值不能是源文件,而是库文件; PREBUILD_STATIC_LIBRARY:编译静态库; */ include $(BUILD_SHARED_LIBRARY) ​ /* 此变量设置C++源文件以外的文件扩展名 */ LOCAL_CPP_EXTENSION := .cxx .cpp .cc .c ​ /* 此变量设置支持NEON */ LOCAL_ARM_NEON := true ​ /* 此变量设置为true,构建静态库时生成一个只包含实际对象的文件路径而不包含对象的库,好处是库文件变小了,但是不能进行移植,因为所有的路径是相对路径 */ LOCAL_THIN_ARCHIVE :=true
最新回复(0)