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...
META-INF/MANIFEST.MF com.ice.jni.registry.HexNumberFormat.class com.ice.jni.registry.NoSuchKeyException.class com.ice.jni.registry.NoSuchValueException.class com.ice.jni.registry.RegBinaryValue.class ...
基于java的开发源码-JNI代码生成器 JNIGen.zip 基于java的开发源码-JNI代码生成器 JNIGen.zip 基于java的开发源码-JNI代码生成器 JNIGen.zip 基于java的开发源码-JNI代码生成器 JNIGen.zip 基于java的开发源码-JNI...
Android的JNI基础,主要描述了JNI语言的基础用法和数据类型。
Android中JNI编程的那些事儿
com.ice.jni.registry.RegMultiStringValue.class com.ice.jni.registry.RegBinaryValue.class com.ice.jni.registry.RegistryException.class com.ice.jni.registry.NoSuchValueException.class ...
这是Android NDK开发标准的JNI和Android.mk编写模版,里面的一些东西可能涉及我的项目,但不影响观看
JNI_on_android.ppt JNI_on_android.ppt JNI_on_android.ppt JNI_on_android.ppt
jni.h文件jni.h文件jni.h文件jni.h文件jni.h文件jni.h文件
jni4net-0.8.8.0,比较新的版本,里面有proxygen.exe可以编译,以及jni4net.j-0.8.8.0.jar,32位和64位皆可
webrtc-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 ...
DELPHI开发JNI必备 jni.pas 包含文件 jni.pas JNI_MD.INC
周工总结的jni开发流程
一个简单的android JNI 开发范例. 可以做入门学习之用
ANDROID优秀资源
1、实现一个android工程,在其Android.mk文件中不要定义jni相关的东西,代码中可以尽情的使用 2、使用mmm 命令编译该工程,能够编译成功的。(System.loadLibrary("jni_example");) 3、使用javah 命令编译定义有...
总结了Android下jni开发的一些重要知识点,并且以代码的形式提供供大家参考
Android 理解frameworks services jni hardware kernel 整个控制过程实例包括回调 包含app demo 和底层驱动。