Android.mk
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS) LOCAL_SRC_FILES:= /        com_ura_test_JNITest.c LOCAL_C_INCLUDES := /        $(JNI_H_INCLUDE) LOCAL_SHARED_LIBRARIES := libutils LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libJNITest include $(BUILD_SHARED_LIBRARY)

LOCAL_PATH - 编译时的目录

$(call 目录,目录….) 目录引入操作符

如该目录下有个文件夹名称Src,则可以这样写 $(call src) 等



CLEAR_VARS –

在build/core/config.mk 定义 CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk

详细看build/core/clear_vars.mk

Include 是 *.mk 文件的运算符。可以通过include 包含自定义的.mk文件(即是自定义编译规则)或是引用系统其他的.mk文件(系统定义的编译规则)。



LOCAL_SRC_FILES - 编译的源文件

可以是.c, .cpp, .java, .S(汇编文件)或是.aidl等格式

写法是不同的文件用空格隔开。如果编译目录子目录,采用相对路径,如子目录/文件名。也可以通过$(call 目录),指明编译某目录下所有.c/.cpp/.java/.S/ .aidl文件.

追加文件 LOCAL_SRC_FILES += 文件



LOCAL_C_INCLUDES - 需要包含的头文件目录

可以是系统定义路径,也可以是相对路径. 如该编译目录下有个include目录,写法是include/*.h



LOCAL_SHARED_LIBRARIES - 链接时需要的外部共享库

还有链接的外部静态库用LOCAL_STATIC_LIBRARY

如果是java文件,要加入jar包用LOCAL_JAVA_LIBRARIES



LOCAL_PRELINK_MODULE - 是否需要prelink处理 .Prelink利用事先链接代替运行时链接的方法来加速共享库的加载,它不仅可以加快起动速度,还可以减少部分内存开销,是各种Linux架构上用于减少程序加载时间、缩短系统启动时间和加快应用程序启动的很受欢迎的一个工具.



LOCAL_MODULE - 编译的目标对象

module 是指系统的native code ,相对用Java 写成的 Android application 称为package。Package用LOCAL_PACKAGE_NAME.



BUILD_SHARED_LIBRARY - 指明要编译成动态库。

编译的目标,用include 操作符,动态库会用到系统的编译脚本host_share_library.mk 编译静态库目标,会用到系统的编译脚本host_static_library.mk . 用BUILD_STATIC_LIBRARY来指明要编译成静态库。如果是java文件的话,会用到系统的编译脚本host_java_library.mk,用BUILD_PACKAGE来指明。三个编译脚本都放到build/core目录下。



LOCAL_ARM_MODE := arm

目前Android大部分都是基于Arm处理器的,Arm指令用两种模式Thumb(每条指令两个字节)和arm指令(每条指令四个字节)



LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays

通过设定编译器操作,优化级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高



Android.mk 也通过ifeq关键字支持条件选择语句,类如下面

ifeq ($(HOST_OS),linux)

# Use the futex based mutex and condition variable

# implementation from android-arm because it's shared mem safe

LOCAL_SRC_FILES += /

futex_synchro.c /

executablepath_linux.cpp

endif

ifeq ($(HOST_OS),darwin)

LOCAL_SRC_FILES += /

executablepath_darwin.cpp

endif

总结,android.mk 的写法,系统源代码提供了大量的android.mk可以作为参考资料。在编写android.mk的时候,有任何碰到疑问的地方,可以拿系统的android.mk看看, 相信写个android.mk 应该没有什么困难.

参考资料:http://blog.csdn.net/wukunting/article/details/4640100

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. android 命令行创建工程
  4. xpose框架使用android studio
  5. android 保存和读取文件
  6. Android(安卓)解压zip文件
  7. Android根据URL下载文件保存到SD卡
  8. android打开文件
  9. Android(安卓)用手动组拼的方式生成xml

随机推荐

  1. Android中System.exit(0)退出失败
  2. 使用VirtualBox安装Android(安卓)4.2.2 x
  3. Android精简小笔记(2):广播机制
  4. 在移动端开发中,容易遇到的问题集合。
  5. 【Android(安卓)Studio 4.0.0】高版本And
  6. 虚拟导航(NavigationBar)栏适配
  7. Android(安卓)Native内存泄漏诊断
  8. 2-3-9 RatingBar
  9. cocosCreator打包Android及更换icon
  10. 【Android】自定义Gradle Plugin实现云端