android开发

Android.mk

2020-04-21  本文已影响0人  android_Pie

Android.mk

1. LOCAL_PATH := $(call my-dir)
  作用:用于在查找源文件。其中“my-dir”是由编译系统提供的宏函数,用于返回当前的路径(即包含Android.mk的文件目录)。

2. include (CLEAR_VARS)   作用:清除许多LOCAL_XXX变量(例如:LOCAL_MODULE,LOCAL_SRC_FILES等等)。其中“CLEAR_VARS”是由编译系统提供的。我们可以在android的目录下的/build/core/config.mk文件中看到其定义,为CLEAR_VARS :=(BUILD_SYSTEM)/clear_vars.mk。

3. LOCAL_MODULE_TAGS := optional
  作用:指定该模块在哪个版本下编译。LOCAL_MODULE_TAGS :=user/ eng /tests/ optional
  user:指定该模块只在user版本下才编译
  eng:指定该模块只能在eng版本下才编译
  tests:指定该模块只能在tests版本下才编译
  optional:指该模块在所有版本下都编译

4. LOCAL_SRC_FILES := $(call all-java-files-under, src)
  这是要编译的源代码文件列表。只要列出要传递给编译器的文件,因为编译系统会自动计算依赖。
  all-java-files-under在definitions.mk中定义(在build/core中)

5. LOCAL_STATIC_JAVA_LIBRARIES := comon
  作用:引入第三方jar包
  语法:LOCAL_STATIC_JAVA_LIBRARIES :=library_name
  其中library_name可以理解为一个命名空间
  所以引入comon,这样就可以使用comon中的类文件了。

6. LOCAL_PACKAGE_NAME := Contacts
  这个变量表示了这个包的名字,即这个文件最终生成的apk的名称

7.LOCAL_CERTIFICATE := shared
  指定签名时以那种密钥签名。有platform、shared、media、testkey

8. LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
  作用主要是压缩、优化、混淆类文件,具体的功能还不理解。

9. include (BUILD_PACKAGE)   作用是将该目录下的模块编译成package(即apk文件),默认存在/system/app下。   如果是include(BUILD_SHARED_LIBRARY),表示将目录下的文件编译为共享库文件(即so档),默认存在/system/lib下。

10. include (call all-makefiles-under,(LOCAL_PATH))
  表示需要build该目录下的子目录的文件,这样编译系统就会在当前目录下的子目录寻找Android.mk来编译so库等其他程序。

Android.mk文件是用来向编译系统描述项目组织和编译方式,实际上是GNU make文件的一小片段,它会被编译系统解析一次或多次。
这个文件内容如下:
LOCAL_PATH := (call my-dir) 这行是用来指定当前目录在那里,也就是把当前目录(call my-dir)赋值给变量LOCAL_PATH,这样才可以找到源码和相应的资源文件。

include $(CLEAR_VARS)
清除前面使用的临时变量。

LOCAL_STATIC_JAVA_LIBRARIES := libarity
使用静态的JAVA库,名称为 libarity。

LOCAL_SRC_FILES := $(call all-Java-files-under, src)
这里是指明需要编译的文件,也就是说明源码的文件列表。这里编译所有src目录下的java源码。

LOCAL_PACKAGE_NAME := Calculator
这里指明编译出来包的名称,计算器的包名称就是Calculator.apk。

include (BUILD_PACKAGE) 这里是包括编译生成包的规则,它的定义也是在config.mk中定义,如下: BUILD_PACKAGE:=(BUILD_SYSTEM)/package.mk。就是在这个文件详细地定义怎么样生成包文件。

##################################################
include $(CLEAR_VARS)
清除前面使用的临时变量。

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:arity-1.3.3.jar
include $(BUILD_MULTI_PREBUILT)
预先编译这个依赖库。

上一篇下一篇

猜你喜欢

热点阅读