Android的jni的调用C,C++的几个应用(基本类型,数组,类(结构体))
来源:互联网 发布:军工加人工智能的股票 编辑:程序博客网 时间:2024/05/29 03:23
今天是母亲节,首先祝愿全天下的母亲健康长寿!永远年轻!天天快乐!
慈母手中线,游子身上衣,临行密密缝,意恐迟迟归,谁言寸草心,报得三春晖。
谢谢妈妈--jernymy
------------------------------------------------------------------------------------------------------------------------
开始正题啦,前些天在研究Andorid中Jni(Java Native Interface)的使用,
主要是在android中调用C、C++的方法,在网上也搜集了一些文档,源码等资料,非常感谢网友的提供的宝贵经验。
也是写下这个文章,希望可以帮助正在做这方面应用网友们,jni使用c语言。
一、首先软件环境要搭配好,本人使用的环境是
Android2.2的SDK+NDK4b,linux下的编译环境
1. Windows XP
2. VMware 7.1.3 build-324285 + Ubuntu 9.04中文版
3. Android SDK 2.2
4. Android NDK r4b Linux版(crystax),加入支持C++ exceptions, RTTI and Standard C++ Library
http://www.crystax.net/android/ndk-r4.php
http://www.crystax.net/data/android-ndk-r4-linux-x86-crystax-4.tar.bz2
5. Eclipse Version: 3.5.2
eclipse3.5.2官方下载地址
http://archive.eclipse.org/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-win32.zip
6.
二、配置好eclipse,并加入androiddSDK,然后通过eclipse建立一个android工程,搭建android的jni框架
1. Eclipse
File->New->Android Project
如果此地没有Android Project,可以通过File->New->Project...,在弹出的对话框中,选择(Android)
以下几项填写,其他的默认即可
Project name: AndroidJni
Build Target: Android 2.2
Application name: AndroidJni
Package name: com.jni
Create Activity: AndroidJni
Min SDK Version: 8
点击Finish即可
此时,我们就可以看到我们的项目了
在src->com.jni下自动生成的AndroidJni.java内容如下
我们在这里新建立一个class,比如命名jernymyjni,
这个作为我们的Jni的所有接口处,作为测试设计了基本类型,数组,和类(结构体),结构体数组等。
代码如下
通过eclipse的生成对应的class文件,会在AndroidJni/bin下生成所有的文件
然后进入windowsXP的command模式
开始->运行->cmd
到我们的项目的所在目录,我的目录为
运行javah,得到对应的jni的头文件
E:/work/jave/workspace/AndroidJni>javah -classpath bin com.jni.jernymyjni
E:/work/jave/workspace/AndroidJni>
此时会在当前目录下生成一个com_jni_jernymyjni.h,好了,就是它了,接下来开始编写它对应的c文件了。
为了符合android的文档规范,我们需要在当前目录(AndroidJni)下先建立一个jni目录,然后再建立一个Android.mk
然后把com_jni_jernymyjni.h文件copy到jni目录下。
E:/work/jave/workspace/AndroidJni>cd jni
E:/work/jave/workspace/AndroidJni/jni>dir
驱动器 E 中的卷是 work
卷的序列号是 1C8F-CA73
E:/work/jave/workspace/AndroidJni/jni 的目录
2011-05-08 23:09 <DIR> .
2011-05-08 23:09 <DIR> ..
2011-05-08 23:08 0 Android.mk
2011-05-08 22:58 3,802 com_jni_jernymyjni.h
2 个文件 3,802 字节
2 个目录 10,864,427,008 可用字节
E:/work/jave/workspace/AndroidJni/jni>
com_jni_jernymyjni.h的文件内容
com_jni_jernymyjni.c的文件内容
编写Android.mk,内容如下
在VMware的ubuntu9.04下编译, NDK r4b的路径在../bld/android-ndk-r4-crystax,使用该ndkbuild
root@jernymy-desktop:/mnt/hgfs/workspace/AndroidJni# ../bld/android-ndk-r4-crystax/ndk-build
Compile thumb : jernymyjni <= /mnt/hgfs/workspace/AndroidJni/jni/com_jni_jernymyjni.c
SharedLibrary : libjernymyjni.so
Install : libjernymyjni.so => /mnt/hgfs/workspace/AndroidJni/libs/armeabi
root@jernymy-desktop:/mnt/hgfs/workspace/AndroidJni#
接下来编写我们的java的测试代码AndroidJni.java,目前为了方便调试,暂且用System.out输出,
可以通过android在界面上摆放一些button,然后把信息显示到button上,就可以看到效果了
现在可以先通过调试的方式,查看debug的信息。
好了,基本差不多了,因为俺暂时使用的类型已经足够了,至于其他的在继续研究中,如果错误的地方也请您指出,谢谢啦。
jernymy 20110508
jernymy@163.com
- Android的jni的调用C,C++的几个应用(基本类型,数组,类(结构体))
- Android的jni的调用C,C++的几个应用(基本类型,数组,类(结构体))文档-源码
- Android NDK环境搭建及JNI开发java和C的相互调用的基本介绍
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- android JNI基本库(jsting转string和C多线程调用java方法的说明)
- 建立Android SDK下的JNI、JAVA应用完整步骤---Android JAVA调用C+
- c语言结构体数组的应用问题
- Objective-C常用的几个结构体
- C结构的应用
- 黑马程序员-C语言的几个基本数组
- Android绕过JNi 调用C语言的方法
- android调用本地C/C++代码,jni的实现
- Android调用C++OpenCV程序的方法(NDK+JNI)
- Android上,使用JNI调用C的函数,hellojni
- 关于使用Ext.Ajax.request()异步提交中form参数的问题
- 动态加载js文件
- 激活administrator账户方法
- Subversion的安装和配置
- com.mysql.jdbc.driver 和 org.jgt.mm.mysql.driver 有什么区别
- Android的jni的调用C,C++的几个应用(基本类型,数组,类(结构体))
- SVN
- 经典迷宫问题—BFS
- 傅里叶变换和拉普拉斯变换的意义(转)
- DDE在vb.net中的应用
- 强制提交注释--SVN
- 笔记2-bochs安装及测试
- a链接触发javascript函数导致innerHTML里的图片无法加载
- 为什么井盖是圆的?--揭开面试题的神秘面目!