说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android NDK之JNI使用例子

HTML文档下载 WORD文档下载 PDF文档下载
目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。

 

作者:Android开发网
  目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。整个例子分Java和Native C两个部分。首先是我们常用的Java端调用部分。

 

作者:Android开发网

 

  目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。整个例子分Java和Native C两个部分。首先是我们常用的Java端调用部分。

package com.example.hellojni;import android.app.Activity;import android.widget.TextView;import android.os.Bundle;public class HelloJni extends Activity{    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        TextView  tv = new TextView(this);        tv.setText( stringFromJNI() ); //如果调用失败将会抛出 java.lang.UnsatisfiedLinkError异常        setContentView(tv);    } //注意下面的native关键字    public native String  stringFromJNI();     public native String  unimplementedStringFromJNI();     static {        System.loadLibrary("hello-jni"); //载入hello-jni库    }  }
需要注意的是这里必须设置SDK版本为1.5或以上版本即在androidmanifest.xml文件中指明<uses-sdk android:minSdkVersion="3" /> 这里我们看到JNI调用无需特殊的权限。
 而在Native C/C++中我们可以直接使用C++库,不过这里包含了jni这个头文件。
#include <string.h>#include <jni.h>
其中下面的返回类型jstring是VM String,在jni.h头文件中有定义
jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ){    return (*env)->NewStringUTF(env, "Hello from JNI, Android123 Test!");}
其实很好理解的,仅仅是换个了别名而以,定义如下
typedef uint8_t         jboolean;       /* unsigned 8 bits */typedef int8_t          jbyte;          /* signed 8 bits */typedef uint16_t        jchar;          /* unsigned 16 bits */typedef int16_t         jshort;         /* signed 16 bits */typedef int32_t         jint;           /* signed 32 bits */typedef int64_t         jlong;          /* signed 64 bits */typedef float           jfloat;         /* 32-bit IEEE 754 */typedef double          jdouble;        /* 64-bit IEEE 754 */#elsetypedef unsigned char   jboolean;       /* unsigned 8 bits */typedef signed char     jbyte;          /* signed 8 bits */typedef unsigned short  jchar;          /* unsigned 16 bits */typedef short           jshort;         /* signed 16 bits */typedef int             jint;           /* signed 32 bits */typedef long long       jlong;          /* signed 64 bits */typedef float           jfloat;         /* 32-bit IEEE 754 */typedef double          jdouble;        /* 64-bit IEEE 754 */#endiftypedef jint            jsize;
还有一些调用平时注意的声明
#define JNI_FALSE   0#define JNI_TRUE    1#define JNI_VERSION_1_1 0x00010001#define JNI_VERSION_1_2 0x00010002#define JNI_VERSION_1_4 0x00010004#define JNI_VERSION_1_6 0x00010006#define JNI_OK          (0)         /* no error */#define JNI_ERR         (-1)        /* generic error */#define JNI_EDETACHED   (-2)        /* thread detached from the VM */#define JNI_EVERSION    (-3)        /* JNI version error */#define JNI_COMMIT      1           /* copy content, do not free buffer */#define JNI_ABORT       2           /* free buffer w/o copying back */#define JNIIMPORT#define JNIEXPORT#define JNICALL

 

 

APSys 2014,AMD将发表基于异构体系的DNN实现与评估 PagerDuty实战分析:将MySQL迁移至XtraDB并成功运行EC2 Molecule:自食其力的免费HTML5游戏框架 智能家居升级:Nest启动开发者计划,并开放API Docker,从这里做起! 《近匠》云巴创始人张虎:低门槛云服务为小团队创造更多机会 Oculus公司同意收购Xbox 360手柄设计团队 公有云VS私有云 哪个数据更安全? 调查:开发者越老越吃香吗? Facebook在线支付:取代虚拟货币的终极边界 Google I/O前析:关于新一代设计框架Quantum Paper的猜想 Google I/O 2014前瞻:“令人发指”的Android产品线 福昕熊雨前:PDFium开源项目的背后 Dropbox无法登陆,国内企业网盘横向评测! 如果编程语言是超级英雄…… 谷歌发布Material Design设计语言 系统、功能与设计,Android L究竟新在哪儿? 《近匠》游道易副总裁孙可:发行商眼中的手游市场 布道师徐立:Docker是标准化IT结构的新方式 解读全新Google Play Games:多屏游戏时代终于来了! 设计神器PaintCode 2.1发布,完全支持Swift 一周消息树:天河二号以每秒3.3亿亿次的速度再居世界超算榜首 传闻微软计划用Lumia品牌取代Surface 【CTO俱乐部读书会】杨立东:技术团队留人“三板斧” 蓝港在线王世颖:浅谈手机游戏发行的成功基因 美国高通公司执行董事长Paul E. Jacobs:移动科技——精彩现在,辉煌未来 告别公用云,Instagram已将服务迁至Facebook数据中心 华为助力凤凰实现全媒体战略 跨平台2D/3D游戏开发框架libGDX发布1.2.0更新 Docker CEO Ben Golub:Docker借助开源、天时走向成功 社交网络先驱、服役十年的Orkut被谷歌关闭 只为试一下新下的放分机,10钟后结贴 急急急!!!!!!!!!如何用ADO连接Sybase数据库? 这是广告,不知道是不是真的,没兴趣不要看啊 求购工程设计院信息管理集成系统的设计文档与源代码 想通了过问题,散分 那位大哥做过网络规划,系统集成方面的,我想电话求教,能帮个忙吗??? how to get chinese type method? 如何响应键盘事件? (7)今夜狂放1000分,8:15结帐:)需要分的来吧:)前600分已经放出。。 小问题,恳请帮忙,在线等候! 如何实现两个数据库之间的实时通讯? 高分请教,如何用JAVA实现浏览局域网里的其他机子的目录。在线等待 主板上是USB1。0的接口用USB2。0标准的移动硬盘,有办法安装使用吗?(在线等候) 探讨一下JSP的多国语言实现 这样一个功能怎么实现(在线等待) 调用COM时出错~~~ 问答:仅知类D是由类B按某种形式派生得到的,举一例说明,D不一定是B的子类型。 小问题,帮个忙 刚用C#开发了一个游戏,大家多提意见!有分 关于插入数据的问题 请问:谁有Delphi 5.x分布式多层应用电子商务篇的下载地址, pdf格式 Applet嵌入HTML中的问题!急!急!急! 小小问题,散分100!!!!!!!!!!!!你心动了吗? 如何在程序运行时让用户选择按照哪一列进行分组? 文件合并问题? 帮帮忙 请教如何删除控件 圈点“英雄”,针砭实弊 谁能帮我解决IMail不能外发邮件的毛病? vb请教 如何设置remote_login_passwordfile为exclusive TScrollBox在隐藏滚动条情况下,如何用按钮控制其上下滚动?(在线) 高分请教:用VC怎样编写群发mail的程序? jsp 连 oracle 问题? 请教:ASA7.0安装后启动Sybase Central 4.0时出错".....内存错,该内存不能为read" 请教一个关于Javascript的变量能否在Asp中使用? 高分求解(有类似源代码都行)-处理桌面一个台球运动轨迹问题,方向,球速碰到桌边后速度减慢!进去就结束。 如何在SOAP中发布EJB? 请教各位高手:怎样在状态栏中加进度条? 散分! 关于progress control的小问题 如何传递文件名 求深入浅出MFC2附书源码。 大家帮个忙!! 明天过生日,散分! 使用内存查看 [分享]你的精神年龄是多少?进来测试一下! 以后的路给点意见 刚做的游戏,大家来看看 请问如何在一个窗体中引用另外一个窗体的对象? 挨T的都进来灌水聊天吧 曝宋慧乔密会中性女作家 网友:女神千网曝陆贞赵丽颖曾当三陪 整容前有张甩赵本山第二任妻子罕见照曝光 长相美艳王菲为小女李嫣做佣人 窦靖童否认参加58岁林青霞名店扫货似激凸 狄龙老婆谢霆锋大儿子Lucas上课顽皮 骚扰大美女关之琳近照曝光 尽显老态范冰冰墨镜潮范开赴戛纳 红毯造型引期名校毕业生下海卖菜 为创业放弃万元月徐静蕾乱世佳人写真曝光 黑白映画演绎娱乐圈利益潜规则 女星九成陪吃陪睡谭维维否认有千万豪宅 启动首个家装指熊黛林自曝天王嫂不易做 改打麻将消遣范玮琪独自现身捞金 高领礼服显保守奶茶妹妹章泽天首本写真 甜笑嘟嘴迷倒张根硕新专辑庆功改版豪华升级 幕后花湖北惊现四只腿的小鸡 基因突变?刘嘉玲独自赴台捞金 淡定看待戛纳封后林峰与19岁新欢闪婚 揭秘闪婚闪离的文章蒙面全副武装现身机场 苦等火柴点多角度直击香港小黄鸭倒下过程 漏气侧清理非法小广告 维护市容环境实行安全生产党政同责 市委书记访谈(晋中 向三个开发区下放14项权限临汾举办小微企业专题培训天津:大学生骑行被撞众人紧急救护推动标准化与社会需求相向而行不执行物业新规 太原华源泰等14家公岭东西红柿 百亩赚百万阳高 大力发展清洁能源伦敦市长称当地极端人员“数以千计”美国民众示威抗议警察暴力执法襄垣三农民因盗伐珍贵树木获刑川藏联网工程有望10月中下旬带电试运垣曲县西石村农民刘战红剪纸受乡邻青睐水利部:灌溉用水定额每5年左右一修全省供销社农副产品收购大幅增长《深山腊梅》登陆省城普京确认参加G20综改攻坚年 项目见效年动态与亮点:全太原华源泰等14家公司被通报中央机关2015年将招录2.2万余公
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘