Android.mk、CMake、Gradle简介 NDK和JNI的关系

原文地址:http://hubingforever.blog.163.com/blog/static/171040579201152185542166/

android.mk文件是GNU makefile的一小部分,它用来对android程序进行编译。因为所有的编译文件都在同一个GNU MAKE执行环境中进行执行,而android.mk中所有的变量都是全局的。因此,您应尽量少声明变量,不要认为某些变量在解析过程中不会被定义。

一个android.mk可以编译多个模块,每个模块属下列类型之一:apk  java  c++应用程序   c++静态库  c++共享库

 

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。能输出各种各样的makefile和project文件,能测试编译器所支持的C++特性,类型UNIX下的automake。

CMake可以编译源代码、制作程序库、产生适配器、还可以用任意的顺序建构执行档。也支持静态和动态程式库的建构。

CMake常见指令总结,可参阅博文:http://blog.csdn.net/u012839187/article/details/45790491

ADD_LIBRARY(hello SHARED${LIBHELLO_SRC})生成动态静态库

SET_TARGET_PROPERTIES为一个目标设置属性。该命令的语法是列出所有你想要变更的文件,然后提供你想要设置的值。你能够使用任何你想要的属性/值对,并且在随后的代码中调用GET_TARGET_PROPERTY命令取出属性的值。

include_directories添加头文件目录

link_directories添加需要链接的库文件目录(用于多个第三方库)

target_include_directories 向target中添加头文件目录

 

 

gradle在语法上是基于groovy语言的,在项目管理上是基于ant和maven概念的项目自动化建构工具

关于gradle的博文:http://www.jianshu.com/p/001abe1d8e95

 

NDK与JNI的关系   http://blog.csdn.net/banketree/article/details/12167145

JNI是java语言提供的java和c相互沟通的机制,java可通过jni调用本地c++代码。jni是本地编程接口。NDK是一系列工具的集合,它提供了一系列的工具,帮助开发者快速开发c的动态库,并能自动将so和java应用一起打包成apk。

java通过jni机制和c++沟通的具体步骤:

1编写包含native本地方法的java类

2通过javah工具生成c++的头文件

3使用c++实现头文件

4使用交叉编译工具对c++本地代码进行编译,最后通过链接生成so可执行的c++库

5实际执行java代码去和本地的c++代码沟通

转载于:https://www.cnblogs.com/hanmolabi/p/7764293.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android.mk 文件是 Android NDK(Native Development Kit)中的一个重要文件,它用于构建 Android 应用的 C/C++ 代码。Android.mk 文件是一个 Makefile,它描述了如何编译和链接 C/C++ 源代码文件以生成共享库(.so 文件)或可执行文件。 Android.mk 文件通常位于 JNI(Java Native Interface)目录下,用于指定要编译的源代码文件、编译选项、链接选项等。以下是一个示例 Android.mk 文件的简单结构: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # 编译选项 LOCAL_CFLAGS := -Werror # 源文件 LOCAL_SRC_FILES := \ file1.c \ file2.c # 生成的共享库名称 LOCAL_MODULE := mylib include $(BUILD_SHARED_LIBRARY) ``` 在这个示例中,`LOCAL_PATH` 定义了当前 Android.mk 文件所在的路径。`include $(CLEAR_VARS)` 清空了之前的变量设置,以便重新定义新的变量。`LOCAL_CFLAGS` 定义了编译选项,这里设置为 `-Werror` 表示将所有警告视为错误。`LOCAL_SRC_FILES` 定义了要编译的源文件列表。`LOCAL_MODULE` 定义了生成的共享库的名称。 通过编写 Android.mk 文件,您可以根据项目的需求自定义编译和链接规则,以及添加其他依赖库等。完成 Android.mk 文件的编写后,可以使用 ndk-build 命令来执行编译和链接操作,生成最终的共享库文件。 请注意,Android.mk 文件在最新的 Android Gradle 插件中已经不再被推荐使用,而是使用 CMakendk-build 的 Android.bp 文件进行构建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值