`

Android JNI学习之第一个入门实例(确实花了不少功夫,也遇到了很多阻碍,不过还好,最终解决,记录下)

阅读更多

关于如何安装配置Cygwin,如何安装ndk网上搜搜一大片,这里不再赘述。下面主要对这个简单的JNI实例的实现,做一个记录。

注意:使用的是ndk-1.6.r1,在ndk_r4版本后和这有点区别,这里说明下。

1、在ndk安装目录的apps下建立一个工程文件夹JniDemo,在该文件夹下建立一个project文件夹,和一个Application.mk文件。

2、在eclipse创建一个Android项目,指定项目路径为project路径

3、在包demo.jni下创建一个类,命名为Jni.java。并保存,这样eclipse自动编译生成class文件,在bin文件夹下对应的包路径下

4、进入Cygwin,cd到bin下(cd的时候如果文件夹或文件名称有空格时,在空格前加反斜杠),然后注意了:

使用set classpath=当前bin的完整路径(这步是关键,否则用javah时,会报找不到类的错)

然后 javah -jni demo.jni.Jni,执行成功在bin文件夹下生成一个demo_jni_Jni.h头文件。

5、在项目根目录(project)下建立一个jni文件夹,然后将上面生成的头文件复制到该文件夹下。

6、在jni下建立一个普通c文件,实现头文件中的方法。这里不再赘述。

7、在jni下建立一个Android.mk文件,该文件主要是用来编译上面c文件,生成.so本地库。

8、在ndk根目录下,运行make APP=项目名称,编译生成本地库文件,这样在项目根路径下生成一个libs\armeabi\*.so文件。该文件的命名是

lib+库名称(在Android.mk中LOCAL_MODULES :=tt中的tt)+.so 。

这里编译的时候,可能会报Android NDK: Application JniDemo targets platform 'android-8'类似的错误,这时,只需要将default.properties中android的版本信息改成3或者4就可以了,然后再make命令,之后再改回来。

9、在java文件中调用时,需要静态引入该库,使用System.loadLibrary(库名称);

这里先跑起来第一个Demo,然后慢慢研究其原理性之类的东东。累了,歇歇喽!

分享到:
评论

相关推荐

    android JNI学习三实例

    Android JNI(Java Native Interface)是Android平台上的一个关键特性,它允许Java代码和其他语言写的代码进行交互,通常用于提升性能、调用系统底层库或利用C/C++的库。在这个"android JNI学习三实例"中,我们将...

    Android Studio JNI编程入门实例

    在Android Studio中配置JNI开发环境,首先需要创建一个项目,选择"New Project",然后在模板选择中找到"Empty Activity"。创建完成后,为了引入C/C++支持,我们需要修改项目的build.gradle文件。在app模块的build....

    Android NDK JNI 经典实例

    Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例

    Android jni 编程实例

    在这个"Android jni 编程实例"中,我们将探讨如何在Android Studio环境下进行JNI开发,通过一个简单的入门demo来学习这个过程。 首先,我们需要了解JNI的基本概念。JNI是Java平台提供的一种接口,它允许Java代码...

    第一个JNI实例学习

    在这个"第一个JNI实例学习"中,我们将探讨如何创建并运行一个基本的JNI程序。 首先,我们需要理解JNI的核心概念。JNI提供了一套接口,让Java代码能够声明本地方法,这些方法在运行时由本地(非Java)代码实现。本地...

    android驱动JNI的USB2串口的参考实例

    "android驱动JNI的USB2串口的参考实例"是一个关于如何在Android系统中利用JNI(Java Native Interface)技术来实现USB到串口通信的实践案例,主要涉及到FTDI(Future Technology Devices International)公司的FT23X...

    android调用jni实例

    在Android开发中,JNI(Java Native Interface)是一个关键的组件,它允许Java代码与其他语言编写的代码进行交互,特别是C和C++。本教程将深入探讨如何在Android应用中使用JNI进行跨语言通信,以实现特定功能或提高...

    Android Studio JNI开发入门教程

    Android Studio的JNI(Java Native Interface)开发入门教程 JNI,全称为Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在Android开发中扮演着重要角色,尤其当...

    android JNI学习四实例

    本教程将通过四个实例来深入探讨Android JNI的使用。 **实例一:Hello JNI** 这个基础实例旨在介绍JNI的基本用法。首先,我们需要在Java层创建一个native方法,并使用`System.loadLibrary()`加载本地库。然后,在C/...

    Android JNI 实例

    Android JNI(Java Native Interface)是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。...通过学习这个实例,开发者能够更好地掌握Android应用中Java和C/C++的混合编程,提升应用的性能和功能。

    android studio 下jni学习

    1. 创建一个新的Android工程或选择一个现有的工程。 2. 在工程目录下创建`jni`目录,这是存放本地源代码的地方,通常会有`Android.mk`和`Application.mk`两个Makefile文件,用于编译C/C++代码。 3. 在Java代码中,...

    serial_jni_largestgle_Androidjni_Android串口操作JNI代码_android_

    总结来说,`serial_jni_largestgle_Androidjni_Android串口操作JNI代码_android_`项目是一个Android应用使用JNI进行串口通信的实例。它涵盖了JNI编程、Android NDK开发、原生代码与Java代码的交互、串口通信协议以及...

    Android Studio jni开发之经典入门demo

    以下是一个基础的Android Studio JNI入门教程: 1. **环境配置**: 在Android Studio中,首先确保已经安装了NDK(Native Development Kit),它是Android平台提供用来开发C/C++原生代码的工具集。在项目级的`build...

    android jni实用demo

    这个"android jni实用demo"提供了一个很好的学习平台,帮助开发者深入理解如何在Android应用中使用JNI进行跨语言编程。 JNI允许Android应用在Java代码中调用C/C++函数,反之亦然,这对于性能优化、利用硬件加速、接...

    android jni 中文字符传递demo

    在Android应用开发中,JNI(Java Native Interface)是一种让Java代码和本地(C/C++)代码交互的技术...通过深入学习和实践这个示例,开发者可以更好地理解字符编码和JNI的工作原理,避免在处理多语言内容时出现错误。

    Android JNI应用实例

    在"JNI02"这个文件中,可能包含了一个或者多个具体的JNI应用实例,可能涉及到更复杂的数据类型传递,如结构体、数组,或者是多线程处理、文件操作等。学习这个实例可以帮助开发者理解JNI的实际应用,提升在Android...

    Android studio jni简单编程实例

    Android Studio是一款专为Android应用开发设计的集成开发环境(IDE),它支持使用Java、Kotlin等语言编写应用程序。JNI(Java Native Interface)是Java平台的一部分,允许Java代码和其他语言写的代码进行交互。JNI...

    android jni获取 Mac地址

    在Android开发中,JNI(Java Native Interface)是一种技术,允许Java代码和其他语言写的代码进行交互。当需要执行一些性能敏感或者Java无法直接处理的任务时,开发者通常会利用JNI调用C/C++原生代码。本话题关注的...

    android JNI串口驱动支持多串口同时收发

    实现这一功能的第一步是创建一个C/C++库,该库包含处理串口操作的函数。这些函数可能包括`open`(打开串口)、`write`(发送数据)、`read`(接收数据)、`close`(关闭串口)等。为了支持多串口,我们需要在C/C++库...

Global site tag (gtag.js) - Google Analytics