`
scliu0718
  • 浏览: 52224 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Android中JNI开发(二)Android.mk写法

 
阅读更多
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变量必须被定义来确定每个模块,你描述在你的Andr​​oid.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

    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操作指南pdf文档.zip android_jni...

    Android中JNI编程的那些事儿.docx

    在Android开发中,JNI(Java Native Interface)是一个关键的组件,它使得Java代码能够与用其他语言(如C/C++)编写的本地代码进行交互。JNI在Android系统中扮演着重要角色,因为Android系统要求所有应用程序至少...

    Android_makefile编译系统_Android.mk_文件语法规范

    下面是一个简单的“Hello World”示例,展示了如何使用`Android.mk`文件来定义一个JNI共享库。 1. **定义`LOCAL_PATH`**: ```make LOCAL_PATH:=$(call my-dir) ``` - `LOCAL_PATH`变量用于确定当前目录的位置...

    JNI.rar_Android jni_JNI语句_android_jni_site:www.pudn.com

    这个压缩包“JNI.rar”包含了关于Android平台上JNI的使用基础,特别是针对Android开发者的重要知识。 在Android开发中,JNI主要被用来实现以下功能: 1. **性能优化**:对于计算密集型任务,如图像处理、加密算法等...

    android_jni操作指南.pdf.zip

    在Android应用开发中,JNI被广泛用于优化性能、使用硬件加速功能、接入第三方库或者利用已有的C/C++代码库。这份“android_jni操作指南.pdf”很可能是对开发者如何在Android项目中运用JNI技术的一个详细教程。 首先...

    JNI编程指南与规范.zip

    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 ...

    java_jni_mytest.tar.gz_android_jni

    在Android开发中,JNI被广泛用于优化性能、调用本地库、实现特定硬件功能或者接入C/C++的第三方库。在这个“java_jni_mytest.tar.gz_android_jni”压缩包中,包含了一个专门为初学者准备的Android JNI编程实例,帮助...

    Android通过JNI调用.so动态库

    Android 通过 JNI(Java Native Interface)调用.so 动态库是 Android 开发中的一种常用技术。JNI 是一种允许 Java 代码与 native 代码之间进行交互的接口。通过 JNI,我们可以在 Android 项目中调用.so 动态库中的 ...

    android JNI开发操作实用手册.zip

    android JNI开发操作实用手册

    android studio 3.4配置Android -jni 开发基础的教程详解

    Android Studio 3.4 配置 Android-JNI 开发基础是 Android 应用程序开发中的一项重要技术,能够帮助开发者更好地编写 Android 应用程序。本文将详细介绍如何在 Android Studio 3.4 中配置 Android-JNI 开发基础,...

    ffmpeg移植android需要的android.mk

    6. **Android.mk中的模块定义**:在`Android.mk`文件中,需要定义FFmpeg作为本地库模块,指定源文件路径、依赖项、编译标志等。例如: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_...

    Android NDK开发JNI及mk

    这是Android NDK开发标准的JNI和Android.mk编写模版,里面的一些东西可能涉及我的项目,但不影响观看

    android_jni开发文档.rar

    JNI在Android开发中扮演着重要的角色,特别是在需要高效计算、调用系统底层库或者利用硬件特性时。周工的"android_jni开发文档"应该详细介绍了使用JNI进行Android开发的过程。 JNI开发流程主要包括以下几个步骤: ...

    Android使用JNI调用Python so解释器

    在`Android.mk`或`CMakeLists.txt`文件中,指定编译的源代码和链接的库。 6. **加载Python脚本**:在Java层,你可以通过JNI接口调用C/C++中的函数,传入Python脚本内容或文件路径。C/C++代码则负责将这些信息传递给...

    webrtc-android-jni.rar

    在这个"webrtc-android-jni.rar"压缩包中,我们可以推测其内容可能与Android应用开发中集成WebRTC以及使用JNI进行性能优化有关。下面将详细介绍WebRTC在Android上的实现和JNI的相关知识点。 1. **WebRTC架构**:...

    DELPHI开发JNI必备 jni.pas

    标题中的"DELPHI开发JNI必备 jni.pas"表明这是一个针对Delphi开发者的资源,其中包含的`jni.pas`文件是用Delphi编写的,目的是支持在Delphi项目中使用JNI来调用本地C/C++库或Java方法。`jni.pas`通常会封装JNI的C...

    ffmpeg 2.0 Android.mk file

    在你提供的文件列表中,我们看到三个相关的`Android.mk`文件:`Android_configure.mk`、`Android.mk`以及`Android_.mk`。这些文件是构建过程的关键部分,用于指定编译选项、依赖关系和目标。 `Android.mk`是Android...

    Android.mk语法说明(android ndk开发)

    其中`src/MainActivity.java`是Java层的入口文件,`jni/hello-jni.c`是C层的源代码文件,而`jni/Android.mk`则是用于定义如何构建这个项目的`Android.mk`文件。 ```makefile LOCAL_PATH := $(call my-dir) include...

Global site tag (gtag.js) - Google Analytics