Android JNI HelloWorld实现

  1. 创建一个JNIDemo的Android工程

  2. 在项目下创建一个文件夹jni。(注意必须是jni目录)

  3. 在jni目录下创建两个文件:Android.mk 和 first_jni.c(.c文件的名字可以任意)

  4. 编写Android.mk文件:(参见Demo当中的Androd.mk文件)
    • LOCAL_MODULE := firstjni (决定编译出来的so文件的名字)

    • LOCAL_SRC_FILES := first_jni.c (指定需要编译的文件)

  5. 在src当中创建java文件,此为与so库对应的接口。(如当前Demo当中的FirstJNI.java)

注意:

  • 必须包含一个static的静态代码块。用于加载so库。

  • 通过natvie声明so当中定义的接口

  1. 在.c文件当中实现接口java中定义的方法
    注意:

    • .c文件当中需要包含jni.h头文件,否则一些JNIEXPORT 无法识别

    • .c文件中的方法名:JNIEXPORT jstring JNICALL
      Java_com_example_jnidemo_FirstJNI_sayHello(JNIEnv env, jobject
      thiz) 翻译为:JNIEXPORT 返回值类型 JNICALL Java_包名_类名_方法名(JNIEnv 
      env,
      jobject thiz)

  2. 代码编写完成后,需要编译.c文件为so库。在项目的根目录下.(jni,src等所在的目录),运行ndk-build编译

其他:

编写完接口java文件之后,可以通过javah工具生成一个对应的.h文件,用于JNI实现。

实现方法:在bin/classes 目录下执行javah -jni
com.example.jnidemo.FirstJNI 即可在当前目录下生成一个.h文件

ndk环境搭建请Google之。

例程:


时间: 2024-12-13 01:27:44

Android JNI HelloWorld实现的相关文章

Android jni helloworld

新建Android项目,设置布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

Android jni简便开发流程

<Android jni helloworld>中介绍了开发jni helloworld的步骤,本文将介绍jni简便开发流程 ① 写java代码 native 声明本地方法 ② 添加本地支持 右键单击项目->andorid tools->add native surport 如果发现 finish不能点击,需要给工作空间配置ndk目录的位置 window->preferences->左侧选择android->ndk 把ndk解压的目录指定进来 右键单击项目->

android JNI调用(转)

Android jni开发资料--NDK环境搭建 android开发人员注意了 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了.只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在

【转】android JNI

原文网址:http://jinguo.iteye.com/blog/696185 Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C.C++ 和汇编语言)编写的应用程序和库进行交互操作. 1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Java类编译为Dex型式的Byt

[转载]—— Android JNI知识点

Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C.C++ 和汇编语言)编写的应用程序和库进行交互操作. 1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Java类编译为Dex型式的Bytecode之后,必须靠Dalvik虚拟机(VM: Virtual Machine)

Android Jni层 创建 linux socket 出错问题解决

问题: 想在Jni层创建 udp socket 与服务端通信,但是没有成功,最后发现竟然是创建socket失败(代码如下) // create socket g_sd = socket(AF_INET, SOCK_DGRAM, 0); if (-1 == g_sd) { perror("socket()"); goto err_socket; } 解决办法: 在 AndroidManifest.xml 文件中,添加访问网络的权限: <uses-permission android

Android jni 编程入门

本文将介绍如何使用eclipse和ndk-build来编写一个基于Android4.4版本的包含有.so动态库的安卓程序. 前提是已经安装和配置好了诸如SDK,NDK等编译环境.下面开始编程! 1 程序逻辑 我们要编写的程序包含两部分:java部分--负责界面和调用JNI native函数:JNI native 部分--负责native函数的具体实现(本文使用C语言). native 函数伪代码如下: ? 1 2 3 4 5 6 7 8 /* funtion: 传入两个整形变量,计算他们之和 r

Android JNI programming demo with Eclipse

用Eclipse 建立 JNI 的專案, 示範如何在 JAVA 調用 cpp 的函數. 我們將建立一個名稱為 jnidemo的專案, 在主Activity 將調用一個名為libHello.so 的 cpp 函數庫的 getVersion() 的函數, 將其返回字串寫在主Activity 的TextView 上. 首先用Eclipse建立一個新的 Android Activity 專案.  其他選項都用預設值就可以. 1. 稍微修改主活動配置 layout/activity_main.xml, 

Ubuntu下编译Android JNI实例全过程

第一步:保证make和gcc可用 在shell中输入make-v,不报错就是对的.(可参考http://wenku.baidu.com/view/d87586c24028915f804dc24a.html.) 在shell中输入gcc-v,不报错就是对的. 第二步:安装NDK 下载NDK后,设置环境变量: 将android-ndk的路劲加到环境变量PATH中:sudogedit /etc/environment 然后再让这个更改的环境变量立即生效:source /etc/environment