美文网首页
第四章:Android.mk语法

第四章:Android.mk语法

作者: momxmo | 来源:发表于2020-05-16 15:46 被阅读0次
  • 1.LOCAL_PATH:= $(call my-dir)
    ‘:=’是赋值的意思,LOCAL_PATH 定义了当前模块的相对路径,必须出现在所有的编译模块之前。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。

    1. include$(CLEAR_VARS)
      CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),
      除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
      每个编译模块由include (CLEAR_VARS) 开始,由include(BUILD_XXX) 结束
  • 3.LOCAL_JACK_ENABLED:=disabled

LOCAL_JACK_ENABLED有三种模式,即分别是disabled,full和incremental。disabled是指关闭JACK编译,使用android old toolchain。full是指全部编译,即每次编译,都会将所有的code全部编译。incremental是指增量编译,即只会编译修改的代码。incremental模式默认是关闭的,需要设置。
不加本行会生成clasess.jack而非clasess.jar。

  • 4.LOCAL_MODULE := helloworld
    LOCAL_PACKAGE_NAME:= helloworld是同一意思;
    LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。

    1. LOCAL_SRC_FILES := $(call all-subdir-java-files)
      定义了本模块编译使用的源文件,采用的是基于LOCAL_PATH的相对路径
  • 6.LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_TAGS :=user eng tests optional
    user: 指该模块只在user版本下才编译
    eng: 指该模块只在eng版本下才编译
    tests: 指该模块只在tests版本下才编译
    optional:指该模块在所有版本下都编译

  • 7.LOCAL_PRIVILEGED_MODULE :=true
    LOCAL_PRIVILEGED_MODULE := true 表示app应用在目录/system/priv-app/下
    LOCAL_PRIVILEGED_MODULE := false 表示app应用在目录/system/app/下

  • 8.DEVICE_PACKAGE_OVERLAYS := \ device/samsung/avl7580/overlay
    ‘\’表示连接符,DEVICE_PACKAGE_OVERLAYS可以设定路径,起到的作用就是替换掉原来的目录中的资源,比如图片等等,惟一的要求就是必须建立和原来图片位置相同的路径
    有两种不同的overaly目录定义,来影响最终的效果:
    PRODUCT_PACKAGE_OVERLAYS: used by a particular product DEVICE_PACKAGE_OVERLAYS: used several products that share a common device model
    如果包含同一资源,那么 PRODUCT_PACKAGE_OVERLAYS 将覆盖 DEVICE_PACKAGE_OVERLAYS

  • 9.LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13
    当前模块依赖的java静态库,这项不是必须的。

include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES := aa
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := aa:libs/aa.jar
include $(BUILD_MULTI_PREBUILT)
  • 10.LOCAL_CERTIFICATE := platform
    ①AndroidManifest.xml的manifest节点中添加 android:sharedUserId=”android.uid.system”
    Android.mk中增加  LOCAL_CERTIFICATE := platform
    这里是平台使用的签名,和系统同进程
    ②shared签名:
    AndroidManifest.xml的manifest节点中增加android:sharedUserId=”android.uid.shared”
    Android.mk中增加LOCAL_CERTIFICATE := shared
    ③media签名:
    AndroidManifest.xml的manifest节点中增加 android:sharedUserId=”android.media”
    Android.mk中增加 LOCAL_CERTIFICATE := media

  • 11.LOCAL_RESOURCE_DIR += \ $(LOCAL_PATH)/res \ $(LOCAL_PATH)/res_p
    资源目录

  • 12.include $(BUILD_STATIC_JAVA_LIBRARY)
    编译目标类型:

编译目标 说明
BUILD_HOST_STATIC_LIBRARY 主机上的静态库
BUILD_HOST_SHARED_LIBRARY 主机上的动态库
BUILD_HOST_EXECUTABLE 主机上的可执行文件
BUILD_STATIC_LIBRARY 目标设备上的静态库
BUILD_SHARED_LIBRARY 目标设备上的动态库
BUILD_EXECUTABLE 目标设备上的可执行文件
BUILD_JAVA_LIBRARY JAVA库
BUILD_STATIC_JAVA_LIBRARY 静态JAVA库
BUILD_HOST_JAVA_LIBRARY 主机上的JAVA库
BUILD_PACKAGE APK程序
  • 13.LOCAL_PROGUARD_FLAG_FILES:= proguard.flags
    混淆编译;
    不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆

相关文章

  • 2019-05-30

    转自 Android.mk 文件语法详解 ====================================...

  • cocos2d-x 系列

    NDK mk文件语法 0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关...

  • 第四章:Android.mk语法

    1.LOCAL_PATH:= $(call my-dir)‘:=’是赋值的意思,LOCAL_PATH 定义了当前模...

  • Android.mk语法

    翻译自docs/ANDROID-MK.html Indroduction 本篇文档描述Andrid.mk编译文件的...

  • 2018-08-09

    mark 引用如下的链接文章 Android.mk 文件语法详解 转:http://blog.sina.com.c...

  • Android.mk语法说明

    版权申明: 本文原创首发于以下网站,您可以自由转载,但必须加入完整的版权声明 博客园:https://www.cn...

  • Android.mk语法解析

    什么是Android.mk Android.mk是Android提供的一种makefile文件,用来指定诸如编译生...

  • Android.mk语法详解

    LOCAL_PATH := $(call my-dir)每个Android.mk文件必须以定义LOCAL_PATH...

  • Android.mk 语法浅析

    概述 Android 底层代码中,使用 Android.mk 文件来进行编译代码,类似于我们平常接触的 gradl...

  • Android.mk语法解释[转]

    前言 本文转载自Android.mk语法解释,方便收藏。 原文 大家在编写Android的Native代码时,经常...

网友评论

      本文标题:第四章:Android.mk语法

      本文链接:https://www.haomeiwen.com/subject/luicohtx.html