`

2011.12.05(4)——— android JNI学习之三 关于Android.mk

阅读更多
2011.12.05(4)——— android JNI学习之三 关于Android.mk
参考:http://blog.sina.com.cn/s/blog_67d8d7060100q8un.html
http://apps.hi.baidu.com/share/detail/31174707
http://www.cnblogs.com/luxiaofeng54/archive/2011/08/13/2137577.html

可以参考上面的三个连接 很详细  我大致说一下 常用的

LOCAL_PATH := $(call my-dir)

一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)

include $(CLEAR_VARS)

这个 反正你加上就是了
CLEAR_VARS 由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。

LOCAL_MODULE := helloworld
  LOCAL_MODULE 变量必须定义,以标识你在 Android.mk 文件中描述的每个模块。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。注意:如果把库命名为‘libhelloworld’,编译系统将不会添加任何的 lib 前缀,也会生成 libhelloworld.so

LOCAL_SRC_FILES := helloworld.c

LOCAL_SRC_FILES变量必须包含将要编译打包进模块中的C或C++源代码文件。注意,你不用在这里列出头文件和包含文件,因为编译系统将会自动为你找出依赖型的文件;仅仅列出直接传递给编译器的源代码文件就好。【注意,默认的C++源码文件的扩展名是’.cpp’. 指定一个不同的扩展名也是可能的,只要定义LOCAL_DEFAULT_CPP_EXTENSION变量,不要忘记开始的小圆点(也就是定义为‘.cxx’,而不是‘cxx’)(当然这一步我们一般不会去改它)】


LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib –llog
表示允许打印Log
编译模块时要使用的附加的链接器选项。这对于使用‘-l’前缀
传递指定库的名字是有用的。例如,下面将告诉链接器生成的模块要在加载时刻链接到
/system/lib/libz.so
LOCAL_LDLIBS := -lz

include $(BUILD_SHARED_LIBRARY)
这个是编译成动态库
BUILD_SHARED_LIBRARY是编译系统提供的变量,指向一个GNU Makefile脚本(应该就是在build/core目录下的shared_library.mk),负责收集自从上次调用'include $(CLEAR_VARS)'以来,定义在LOCAL_XXX变量中的所有信息,并且决定编译什么,如何正确地去做。

  • 大小: 21.8 KB
  • 大小: 132.1 KB
  • 大小: 168.9 KB
分享到:
评论

相关推荐

    android studio 配置gradle使用android.mk编译jni

    android studio 配置gradle 使用android.mk进行编译jni,简单的jni调用,使用android.mk进行编译,注意事项:app下的gradle,以及编译生成的 .h文件,复制修改为 .cpp时,里面的文件的宏逻辑,最好去掉这个宏(#...

    jni.rar_Android jni_Animation jni mk_jni_jni android

    本压缩包"jni.rar"包含了一系列关于Android平台下JNI使用的资料,尤其涉及到动画(Animation)的实现和mk文件的运用。 首先,我们来深入了解一下JNI。JNI是Java平台为了解决纯Java应用程序无法高效执行特定任务,如...

    Android--JNI-Device.zip_Android jni_android_jni_jni android

    这个“Android--JNI-Device.zip”文件显然是一个关于Android平台上使用JNI与硬件设备驱动进行交互的教程资料。通过分析描述和标签,我们可以深入探讨JNI在Android中的应用以及如何利用它来调用驱动代码。 1. **JNI...

    android JNI学习三实例

    在这个"android JNI学习三实例"中,我们将深入探讨如何在Android应用开发中使用JNI。 一、JNI简介 JNI是Java平台的一部分,提供了一套接口,让Java代码能够调用本地(native)代码,同时也允许本地代码调用Java对象...

    AndroidJNI.rar_Android jni_android

    本资料"AndroidJNI.rar_Android jni_android"可能包含一个简单的示例项目——HelloWorld,用于教学如何在Android应用中使用JNI。 首先,我们来理解JNI的基本概念。JNI是一套接口,使得Java虚拟机(JVM)能够调用...

    java读写注册表jar包,com.ice.jni.registry

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

    Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    这篇“Android学习笔记——利用JNI技术在Android中调用、调试C++代码”将带你深入理解如何在Android应用中使用JNI来调用C++代码,以及如何进行调试。以下是对这一主题的详细阐述。 1. **JNI简介** JNI是Java平台的...

    Java registry,com.ice.jni.registry

    com.ice.jni.registry.RegMultiStringValue.class com.ice.jni.registry.RegBinaryValue.class com.ice.jni.registry.RegistryException.class com.ice.jni.registry.NoSuchValueException.class ...

    ffmpeg移植android需要的android.mk

    4. **配置FFmpeg**:在创建`Android.mk`之前,需要先配置FFmpeg,选择需要的组件和编解码器。这通常通过执行`configure`脚本完成,设置参数如`--target-os=android`,`--arch=arm`(或对应的目标架构),`--enable-...

    android-jni.zip_Android jni_android_jni_jni android

    Android JNI(Java Native Interface)是Android系统中一个重要的技术,它允许Java代码和其他...提供的文档如"JNI.doc"、"JNIDocumentChinese.pdf"和"anroid native 开发.ppt"将进一步帮助初学者理解和掌握JNI的细节。

    AndroidStudio环境下的jni调用(NDK)

    AndroidStudio环境下的jni调用(NDK),这个教程可以让完全不会AndroidStudio的人学会jni调用。完全步骤话,非常简单。

    Android通过JNI调用.so动态库

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

    I2CJNI.rar_Android jni_android_android i2c_android i2c通信 JNI_i2c

    综上,"I2CJNI.rar"提供了一个使用Android JNI进行I2C通信的实践案例,对于学习如何在Android平台上通过JNI访问硬件资源,尤其是与I2C设备交互的开发者来说,这是一个宝贵的参考资料。通过研究这个项目,开发者可以...

    RFID.tar.gz_Android jni_android_android RFID_android rfid_rfid

    标题中的"RFID.tar.gz_Android jni_android_android RFID_android rfid_rfid"提到了几个关键概念:RFID(Radio Frequency Identification,射频识别技术)、Android JNI(Java Native Interface,Java本地接口)、...

    jni4net-0.8.8.0.zip

    jni4net是这个工具的名字,而“java”和“C#”表明它是关于两种不同编程语言的互操作。“dll”则指的是动态链接库,它是Windows操作系统下共享代码的一种方式,通常用于实现跨多个程序的功能。 在“jni4...

    jni.zip_Android jni_android_jni_jni android

    本资源“jni.zip_Android jni_android_jni_jni android”包含了一份关于Android环境下JNI使用的详细指南。 JNI的核心概念主要包括以下几个方面: 1. **本地方法接口**:JNI定义了一套API,使得Java代码可以调用C/...

    Android NDK——Hello JNI

    在`src/main/cpp`目录下,创建一个`hello-jni.cpp`文件,实现`stringFromJNI`方法: ```cpp #include <jni.h> #include "com_example_app_HelloJNI.h" JNIEXPORT jstring JNICALL Java_...

    andoid studio中JNI调用第三方库例子

    在这个例子中,你可能在`hello-libs`项目中找到`hello-jni.c`或`hello-jni.cpp`,里面包含了实际调用第三方库的代码。 4. **配置构建脚本**:在`build.gradle`文件中,添加NDK(Native Development Kit)配置,指定...

    ffmpeg 2.0 Android.mk file

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

Global site tag (gtag.js) - Google Analytics