Android.mk文件的写法:
---------- cut here ------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
---------- cut here ------------------
现在,让我们解释一下这几行:
LOCAL_PATH := $(call my-dir)
一个Android.mk文件的开头必须LOCAL_PATH变量的定义。它是用来在开发树中查找源文件。在这个例子中,宏功能“my-dir”,提供构建系统,用于返回在当前目录(即该目包含的路径Android.mk文件本身)。
$(CLEAR_VARS)
通过构建系统和点到CLEAR_VARS变量特殊的GNU Makefile文件,这个文件中将清除许多LOCAL_XXX的变量为你(例如LOCAL_MODULE ,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,等等。),与除LOCAL_PATH。这是必要的,因为所有的建设控制文件都在一个单一的GNU Make的执行上下文分析所有的变量。
LOCAL_MODULE:= HELLO-JNI
LOCAL_MODULE变量必须被定义来确定每个模块,你描述在你的Android.mk。该名称必须是*独特的和不包含任何空格。需要注意的是,构建系统会自动添加适当的相应的生成的文件的前缀和后缀。换言之,一个命名为'foo'的共享库模块将产生'libfoo.so“。
重要注意事项:
如果你的名字你的模块libfoo的,构建系统不会添加另一种的'lib'前缀,并会生成libfoo.so。这是为了支持Android.mk文件,源于Android平台。
LOCAL_SRC_FILES:= HELLO-jni.c
LOCAL_SRC_FILES变量必须包含C和/或C + +源文件的列表文件将被建造和组装到模块中。需要注意的是,你应该没有列出头文件和包含的文件,因为生成系统将
自动为你建立链接,只列出源文件将被直接传递给编译器即可。
需要注意的是C + +源文件的默认扩展名是“.CPP。这是
然而,可以通过定义变量指定一个不同的LOCAL_CPP_EXTENSION。不要忘了最初的“.”(即“.CXX”,而不是“CXX”)。
$(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY是由编译系统提供的一个变量,即一个GNU Makefile脚本,负责收集所有的中定义的LOCAL_XXX变量,因为最新的信息“include $(CLEAR_VARS)”,并决定建立什么,以及如何做到这一点。还有BUILD_STATIC_LIBRARY生成静态库。也就是说:include $(BUILD_SHARED_LIBRARY)与include $(BUILD_STATIC_LIBRARY)将决定当前的库以共享方式还是静态的方式来创建
在一个Android.mk中可定义多个库,结构如下:
include $(CLEAR_VARS)
LOCAL_MODULE := native
LOCAL_SRC_FILES := native.c
include $(BUILD_SHARED_LIBRARY)
分享到:
相关推荐
android studio 配置gradle 使用android.mk进行编译jni,简单的jni调用,使用android.mk进行编译,注意事项:app下的gradle,以及编译生成的 .h文件,复制修改为 .cpp时,里面的文件的宏逻辑,最好去掉这个宏(#...
android_jni操作指南pdf文档.zip android_jni操作指南pdf文档.zip android_jni操作指南pdf文档.zip android_jni操作指南pdf文档.zip android_jni操作指南pdf文档.zip android_jni操作指南pdf文档.zip android_jni...
在Android开发中,JNI(Java Native Interface)是一个关键的组件,它使得Java代码能够与用其他语言(如C/C++)编写的本地代码进行交互。JNI在Android系统中扮演着重要角色,因为Android系统要求所有应用程序至少...
下面是一个简单的“Hello World”示例,展示了如何使用`Android.mk`文件来定义一个JNI共享库。 1. **定义`LOCAL_PATH`**: ```make LOCAL_PATH:=$(call my-dir) ``` - `LOCAL_PATH`变量用于确定当前目录的位置...
这个压缩包“JNI.rar”包含了关于Android平台上JNI的使用基础,特别是针对Android开发者的重要知识。 在Android开发中,JNI主要被用来实现以下功能: 1. **性能优化**:对于计算密集型任务,如图像处理、加密算法等...
在Android应用开发中,JNI被广泛用于优化性能、使用硬件加速功能、接入第三方库或者利用已有的C/C++代码库。这份“android_jni操作指南.pdf”很可能是对开发者如何在Android项目中运用JNI技术的一个详细教程。 首先...
JNI程序员指南与规范.pdf + 06 JNI编程指南.pdf NDK开发汇总 https://blog.csdn.net/baopengjian/article/details/104615972 THIS book covers the Java™ Native Interface (JNI). It will be useful to you if ...
在Android开发中,JNI被广泛用于优化性能、调用本地库、实现特定硬件功能或者接入C/C++的第三方库。在这个“java_jni_mytest.tar.gz_android_jni”压缩包中,包含了一个专门为初学者准备的Android JNI编程实例,帮助...
Android 通过 JNI(Java Native Interface)调用.so 动态库是 Android 开发中的一种常用技术。JNI 是一种允许 Java 代码与 native 代码之间进行交互的接口。通过 JNI,我们可以在 Android 项目中调用.so 动态库中的 ...
android JNI开发操作实用手册
Android Studio 3.4 配置 Android-JNI 开发基础是 Android 应用程序开发中的一项重要技术,能够帮助开发者更好地编写 Android 应用程序。本文将详细介绍如何在 Android Studio 3.4 中配置 Android-JNI 开发基础,...
6. **Android.mk中的模块定义**:在`Android.mk`文件中,需要定义FFmpeg作为本地库模块,指定源文件路径、依赖项、编译标志等。例如: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_...
这是Android NDK开发标准的JNI和Android.mk编写模版,里面的一些东西可能涉及我的项目,但不影响观看
JNI在Android开发中扮演着重要的角色,特别是在需要高效计算、调用系统底层库或者利用硬件特性时。周工的"android_jni开发文档"应该详细介绍了使用JNI进行Android开发的过程。 JNI开发流程主要包括以下几个步骤: ...
标题中的"DELPHI开发JNI必备 jni.pas"表明这是一个针对Delphi开发者的资源,其中包含的`jni.pas`文件是用Delphi编写的,目的是支持在Delphi项目中使用JNI来调用本地C/C++库或Java方法。`jni.pas`通常会封装JNI的C...
在`Android.mk`或`CMakeLists.txt`文件中,指定编译的源代码和链接的库。 6. **加载Python脚本**:在Java层,你可以通过JNI接口调用C/C++中的函数,传入Python脚本内容或文件路径。C/C++代码则负责将这些信息传递给...
在这个"webrtc-android-jni.rar"压缩包中,我们可以推测其内容可能与Android应用开发中集成WebRTC以及使用JNI进行性能优化有关。下面将详细介绍WebRTC在Android上的实现和JNI的相关知识点。 1. **WebRTC架构**:...
在你提供的文件列表中,我们看到三个相关的`Android.mk`文件:`Android_configure.mk`、`Android.mk`以及`Android_.mk`。这些文件是构建过程的关键部分,用于指定编译选项、依赖关系和目标。 `Android.mk`是Android...
其中`src/MainActivity.java`是Java层的入口文件,`jni/hello-jni.c`是C层的源代码文件,而`jni/Android.mk`则是用于定义如何构建这个项目的`Android.mk`文件。 ```makefile LOCAL_PATH := $(call my-dir) include...