android通过jni接口与c、c++互调
来源:互联网 发布:excel数据汇总 编辑:程序博客网 时间:2024/05/22 09:42
都知道java和c的互相调用是通过jni接口,这里我也来说一下在andorid里面如果调用c和c++代码。
废话不多说这里我们的任务是在ADT里面能编译c/c++的源文件为.so的链接库。
工欲善其事必先利其器:
这里我们需要的器就是:
1:ndk 下载地址 http://developer.android.com/tools/sdk/ndk/index.html
2:ADT 就是android开发的eclipse开发环境
3: 安装一下CDT这样看c和c++的代码感觉舒服点
好了就这几个就够了,以前很多质料上面都说要用到cygwin但是我没有用到.
第一步:
下载好ndk解压到任何的一个地方。
第二步:
然后用ADT新建一个andorid工程我这里随便新建一个就叫androidndktest
第三部:
进入解压的ndk目录找到E:\android-ndk-r9c\samples\hello-jni这里面的jni东西拷贝到ADT的工程目录里面现在的样子一般就是这样
好了我们继续:打开jni里面的hello-jni.c文件修改如下
#include <string.h>#include <jni.h>/* This is a trivial JNI example where we use a native method * to return a new VM String. See the corresponding Java source * file located at: * * apps/samples/hello-jni/project/src/com/example/hellojni/HelloJni.java */jstringJava_com_example_ndktest_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz ){ return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI ");}
这里我有必要解释一下,这个是我们的c代码,它的函数名字可能有点长,但是没关系,其实这是jni规定的最开始的Java反正你照着写就对了com_example_ndktest这一串就是包名字了,后面的就是java的哪个类要调用它还有它的名字就这么简单,返回的是一个String的字符串,然后我们来看看在java里面怎么调用它
//声明c的接口public native String stringFromJNI();static {System.loadLibrary("hello-jni");}
最总要的就是这两句话 第一句是声明,第二句是加载编译好的so库,但是现在我们还没有编译,这里我们来配置好所有东西然后跑起来看看效果
在项目上右键properties然后出现这个界面选择builders新建一个然后看图配置
配置完毕过后编译器就会自动编译了,编译完成过后点击run这样就可以在android上跑起来了。
这里是我的java代码
public class MainActivity extends Activity {//声明c的接口public native String stringFromJNI();static {System.loadLibrary("hello-jni");}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView textView = (TextView) findViewById(R.id.hello);textView.setText(stringFromJNI());}}
0 0
- android通过jni接口与c、c++互调
- 通过JNI接口在Android中调用C/C++代码
- Android C 通过JNI 调用JAVA
- android使用c通过jni回调java
- Java调用本地接口jni与C通信----------------JNI
- JNI C与JAVA互调
- jni c++/android互调 示例
- Android通过JNI实现与C语言的串口通讯操作蓝牙硬件模块
- Android开发 通过JNI实现JAVA与C/C++程序间的调用和回调
- JNI,C++,终于调试通过
- 通过JNI在JAVA与C程序中传递参数
- java与C/C++之间通过jni相互调用
- Java与C之间通过JNI传递中文字符串
- Java与C之间通过JNI传递中文字符串
- Java与C通过JNI指针相互传递
- android中如何通过jni调用c,c++代码
- android通过jni调用C代码socket出错问题
- android 通过JNI调用C/C++代码(linux)
- Hibernate的joinfecth用法【一不懂用法,二不懂目的】[后面还有四个实例不做熬述](二十九)
- Ant on a Chessboard
- iOS开发之UICollectionView使用
- java制作序列号
- JRTPLIB3.5.0中文简要翻译
- android通过jni接口与c、c++互调
- ISE布线时避免优化buf的方法_/*synthesis syn_keep = 1*/
- IOS UI--UILabel
- Windows平台下Qt5.1 for Android的安卓开发环境
- linux和windows之间的文件传输
- Brad Cox and his Object-C
- RabbitMQ API
- C/C++使用Lu脚本中的动态对象lu
- java定义二维数组的几种写法(转)