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

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

 

 

MathWorks程邺:机器人时代未来已来 Swift编程规范:保持代码优美的10个方法 中国第二届CSS开发者大会视频&amp;PPT全部免费观看 如何基于Vert.x实现远程调用? Go 1.5如期发布,完全告别C代码 Rust一周集锦(三):关闭3个RFC并为1.4版本做准备 【CTO讲堂】多备份创始人陈元强:在线灾备革命背后的事 探索React:组件间通信过程解析 机智云完成2亿元B轮融资 将围绕信息安全与机器学习创建“机智云联合实验室” 【CTO讲堂】深度?广度?浅析技术人员的职业发展之路 详解React Flux架构工作方式 专访Tiny框架创始人悠然:好的软件设计是“品”出来的 开发移动应用的7大设计要点 历时一年半 现代Web框架Phoenix 1.0正式发布 【七问七答】对话Erlang核心成员Eric Merritt 分布式文档数据库MongoDB开发版本3.1.7发布 年末巨献!SDCC 2015中国软件开发者嘉年华全面开启 Qualcomm中国2015高峰论坛:新品牌与5G技术展望 福利!MDCC 2015 免费展位等你来申请! 《近匠》Gamegou:多些坚持,瞄准海外的小团队也有春天 细说JavaScript异步函数发展历程 YoMail创始人Albert Yang:我与Email交织的程序人生 TIOBE 2015年9月编程语言排行榜:时髦语言Rust进前50 50张999元限量特惠票!SDCC2015软件开发嘉年华 首批讲师名单公布 百度安全:XcodeGhost大爆发可能只是冰山一角 北京市计算中心云计算转型:缘定OpenStack MDCC 2015移动开发者大会 八大技术专场首批议题剧透 Apple TV指南:从零开始用Swift开发个tvOS应用 React Native、开源:MDCC平台与技术Android专场全揭秘! 相约MDCC 2015 首批免费展位破茧而出 MDCC 2015召开在即,平台与技术iOS专场大咖来了! 如何定义IOCTL代码: 谁能推荐一本有关网络与通信的入门书? 看官们注意HttpURLConnection!!! 如何获得Edit控件中当前输入的是第几个字符? 大家是如何调试WDM程序的 在游标中如何更新数据表的当前行 哪里有内幕新闻看? 怎么突然不能解析了,不只是什么原因,昨天我的asp.net都配好了,今天.aspx怎么又不能解释了? 好奇怪!为何不执行Page_Load()函数? 简单问题:关于一个控件,50个大洋。 广州的科友听过没有?听说是搞网络安全的,挺牛B的。全是C,unix高手。。。 如何使用vbs,javas,修改注册表??? 睡不着觉的快来数绵羊啊——什么?你要数星星呀?那也行啊;-p 我只使用了一个MScomctLib里面的listview,我不想把整个dll包进去,怎么办?。。。 谁知道Microsoft的CAB文件用什么工具可以解开? 我对ADO访问MDB比较菜. 这是我的做的练习请大家帮我看一看 有关针对特定人的邮件用特殊格式显示的可行性探讨 SQL SERVER中的怪问题 几年下来,我们一直用着英文版的VC,不知道VS.NET中有没有中文版的VC? 还没有睡觉的兄弟过来帮我看看这段代码,为什么有错?? ADO最新版哪儿有下载啊? 捆饶很久的问题!!! 急,明天就要交程序了,请问怎么才能知道产生的异常的名称,并拦截? 上午56、下午68,散分先 jsp站点的web服务器需要什么都??怎么设置??那里有说明文档没有啊 怎样在窗口没有显示出来之前将数个小位图“拼成”一个大位图并可以保存,急! win2000的怪问题 快救救我!!!!!!!!!!!!!!! 一个关于c++builder的ado的问题! PACK6是不是有问题? MFC程序的结构问题? 一个酷似chinaasp的社区,需要你的支持。嘿……实在做得很好,送分!!!随便给朋友做做广告 7:30之前一定要交。。。。急。。。。!!!! 文件改名用哪个函数啊? 为什么我的windows2000pro共享文件不能访问????? 在VB.Net中的TabControl有一个OwnerDraw的功能,但不知到如何才能将上面的Item画成有曲线的 一个程序员的路是怎样开始的?我该选择VB还是C语言? 那里有动态加载控件的文章??? 哪位高手告知学习C++/VC++的步骤和各阶段应看的书。 湖北的有查到分数的没有,怎么查,我天天晚上做恶梦,救救我! 能否请高手指教关于开在开机时屏蔽热键的问题(del+alt+ctrl)?高分送上! 请教语音卡高手:并线录音和串线录音有何不同?电压驱动和话音驱动有什么不同? 一个时钟周期是多长时间? 请问各位谁做过(正在做)用MODEM来录电话语音的?进来打个招呼,探讨探讨。 有人用过CIPAddressCtrl这个控件吗?怎么用?为什么MSDN上说它有一个GetAddress的方法,但我在使用中却找不到这个方法? 请问广东省的高程成绩在哪儿查询,怎样才可以查询到呀???? 运行时的这个异常提示,什么意思?如何解决 关于数据库的一个问题 tmd.江西的软考办的人吃虱去了。 各位大哥:如果在使用的时候,字体变大,是什么原因?有什么办法跟踪吗? 救命啊。。。。。。。高手该出手拉。。 活性炭净化塔的活性炭用量怎么计算 人类文明时期有多少个,现在处于第几个时期? 电流源自身的电流和电压参考方向怎么看呢?假如电流源标注的是左正右负,那电压是左高右低还是左低右高为关联参考方向呢? 清风活性炭的用量, 国庆见闻这篇作文怎么写啊我的国庆在家里呆了7天不知怎么写啊,我本人哪里都没去! 电压源与电流源串并联关系为什么说在电路等效的过程中,与理想电流源相串联的电压源不起作用;与理想电压源并联的电流源不起作用.希望能详细说明. 关于5月1日的作文 国庆节见闻的作文关于阅兵式不超过300字 1.甲冷库的温度是-7℃,乙冷库的温度比它低3℃,则乙冷库的温度是____. 有关月亮的作文 国庆见闻 作文怎么写 若甲冷库的温度是-12°C,乙冷库比甲冷库低5°C,则乙冷库的温度是?/、/?-17°C? 人类文明有多长历史?我想知道世界的文明有多长时间 文字出现了人类文明的曙光出现了,你怎样理解这句话 冷库效果不好,冷库温度降不下来-18度的冷库25平方,安装2台3匹冷库机组,温度只能降到-10度,没有货也到不了-18度,什么原因啊.1,压缩机的冷凝器只有上半部分1/3是热的,另2/3是常温.2,膨胀阀不是 谁有以月亮为话题的作文啊? 一个入门问题:一个有感抗的电路,如果用万用表测得了某一频率的电压和电流,那么电压/电流是否等于这个频率的阻抗? 从封建社会到资本主义社会是人类文明的进步.资本主义时代的曙光最早出现在( )A.英国 B.法国 C.意大利 D.美国 为什么煤沥青的防腐效果是所有沥青里最好的呢?沥青的防腐是指防酸碱吗? 共集极放大电路为什么不能放大电压,既然能放大电流,为什么不能放大电压呢?有谁做过实验吗?现在共射极放大电路我已经搞明白了,但共集极大电路中放大电压同相这个很好明白,但它能放大 传说时代的文明曙光1.怎样看待那些与 荷马史诗 类似的古老作品2.分析原始农业兴起的原因3.神农业为什么被后人尊为神 做生物柴油有多大率润空间? 有一电路如下图所示,分别求电流、电压有一电路如下图所示,已和U=20V、R1=10KΩ,当R2为下列三种情况下:30KΩ、0、∞时,分别求电流、电压U1和U2.麻烦知道的说一下,考试用的, 温度传感器的精度一般多少? 关于''月球''的话题的作文怎么写虽是这么说.但我新里还是想写我们国家这次月球地面行走.但心中总没数不知道该怎么写/谁能提点素材,不局呢我要好的答按. 机械加工需要用油进行润滑以减小摩擦,某企业加工一台大型机械设备需要润滑用油90千克,用油重复利用率为60,按次计算,加工一台大型设备实际用油36千克,为了建设节约型社会,减少油耗,该企 测试准确度在±0.1℃应该选择什么温度传感器我想测试一个温度,要求准确度是±0.1℃,应该选用什么温度传感器?选用PT100A级的应该做不到吧?什么温度传感器的准确度最高?我想问一下测试准确 描写月亮作文描写月亮的作文,别弄太假 中秋节的 我要购买润滑油的制造机械设备 以月亮为话题的作文题目~ 关于月亮的想象作文怎么写 机械设备如何选用润滑油 关于月亮的作文题目可以起哪些名字? 月亮的作文要怎么写 机械加工一定需要乳化液和机油吗一般机械加工过程使用车床、切割机等设备,请问这些设备在使用中是否一定使用乳化液和机油 月我要这样的作文, 有哪些观点解释人类历史上一些文明的消失? 混凝土标准养护的温度条件是多少?混凝土标准养护的温度条件是多少?建筑质量室外工程可划分为( )和室外安装工程进行验收.A附属建筑 B室外建筑环境 C室外环境 D室外场坪绿化在陕西省 是苏教版的,明天月考! 精度为0.1的数字温度传感器有哪些设计一个温度测量系统,要求显示的精度为0.1°C 混凝土同条件养护一天中的温度有正有负,平均值怎么算,是只加正值平均还是正负相加再平均? 五年级月亮想象作文题目快快快快快快快快快快快急急急急好的追加悬赏分 哪款数字温度传感器能测量-20到100摄氏度的范围同时保持精度至少0.本来想用18B20,我同学说不好,只能测量-10至85摄氏度 混凝土同条件养护试件日累计养护温度记录表,日累计气温怎么算出来填 急 谁能告诉我关于描写"晨曦"的诗句 文章 我要设计的是数字体温计 要求 温度检测分辨率0.01度,精度+/-0.1度; 请问有什么温度传感器符合要求 混凝土同条件养护试件日累计养护温度记录表 ,表中的“有效温度判定”是啥意思呢? 关於晨曦的诗句古诗 哪个集成温度传感器测量范围0-800℃精度0.5 人类现在属于哪个文明? 什么词语或成语带“晨曦”这个词?除了晨曦初露这个词之外多多益善吖、 有机废气,想用活性炭处理.想知道活性炭的用量大概需要多少,或者要知道什么数据才能计算活性炭的用量 国庆见闻的作文怎么写?400字 带“晨曦”二字谐音的诗句我要参加比赛,需要用这两个字.最好是两句诗,一句里面带一个字.谐音就行.一定要健康向上,突出个人种种优秀的地方. 活性炭的用量是怎么确定的? 人类现在处在什么文明状态?如题 谢谢了 含有“二”字的诗句上下句;只要两首;要题目和作者,最好还有出处 活性炭的铁含量怎么降低? 国庆见闻作文 写事的 什么是电流,电压的关联参考方向?如题.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn