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

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

 

 

苹果CEO Tim Cook:我们是一家快速发展的公司 2014年美国大学生数学建模竞赛翻译及建模思路 围观龙虎斗:谷歌GCE vs. 亚马逊AWS,要做9件事 未来编程趋势的12个猜想 命令行永存... IBM发布SmartCloud数据虚拟化服务 嚓嚓嚓嚓:虐心的Flappy Bird今日终于下架 Flappy Bird不再“飞翔”后,还剩下什么? 索尼抛售PC业务:内忧外患导致全面退出 慧正通软技术副总裁:工作流引擎厂商的生存之道 TIOBE 2014年2月编程语言排行榜:VB.NET首次进入TOP 10 斯诺登仅用“网络爬虫”软件获取机密文件 全球开发者:iOS、Android、WP哪个最赚钱? 推荐15款响应式Web设计测试工具 开源世界应该致谢的五家公司 Square、LinkedIn、Google... 高薪利器:四大热门云计算认证推荐 陌生的编程任务,该拿你怎么办? 辟谣:网传Flappy Bird开发者已经自杀 Apple可穿戴倾向健康类,又一个即将被颠覆的行业 传诺基亚月底推Android手机 去除一切谷歌服务 响应式网站与原生移动应用,哪个更适合你的企业? HBuilder:最快的Web开发IDE 成功开发系统集成项目的六大建议 OS X平台上出现窃取比特币的木马 《近匠》第11期:Arrownock——移动社交构建师 面向企业:Google发布iOS版Google Admin应用 Github推出Education平台 师生免费享有微账号 平板的市场依然巨大:应用更丰富,Phablet设备存局限 免费的PCB数据3D转换工具 OBD++ XVL Converter Hadoop Namenode以regular方式启动代码流程分析 走进支撑过8亿用户的Yahoo!数据中心 Napier,一个引领Rackspace14年老兵功成身退 我的asp为什么不能发送EMAIL? 我太弱智了,居然希望能赢!!!郁闷,散100分 动态sql语句,用execute immediate 执行,为什么出错? 马上有韩国和日本的比赛 如何得到一个存储过程的的参数 请问对XP的更新也就是Windows Update,怎样才能不基于安装历史来更新(比如重装了操作系统但注册表还是用原来的)?就是说怎样再从头全部 唉,,为2:0放送200分........ ASP-interdev的问题 怎樣獲得上一頁的地址 在Datagrid中怎样实现RadioButton的单顶选定 项目协助 请问汇编支持递归吗? 编译环境是masm32 怎样将菜单放在TCoolBar上? 如何有效地调试程序?debug?? t d 中国队输了,用50分泄愤 弱智中国队 观中哥之战。 请问:Access2000中什么函数等同于SQL Server中的SubString? 各位水友请对中国队今天的表现发表意见。。。。 中国队第一场(对哥斯达黎加)输0:2,灌水啊~~~~ 各位水友来发表对中国对的看法。。。。 中国队本界比赛肯定不会进球了 MDI中,子窗口之间的切换如何响应,包括第一次打开或新建?立马结贴。 中国队完败,放分…………他妈的,输的一点理由都没有!! 中国队没有希望了,心情不好! 散分! 中国队意志力太差!!! 建模问题:pb源程序用什么工具转换成模型、状态图或是类结构? 救救我,如何同时打印两个数据集 日期型的字段如何附值? 中国队输了,估计很难翻身了。。。。不爽中。。。。。散分!!!!!!!!! 请问用VB开发。DLL,调试该怎么调试啊? 为什么不能编译成DLL了???? 我国损失多少钱啊 csdn上的高手请来开一下 帮帮我~~~! 各位大虾,求救!我想从"July 21 2002 12:30AM"这种时间格式中取出年(就是2002),不知道php中有没有这种直接取年的功能?需要的是能直 建模问题:pb源程序用什么工具转换成模型、状态图或是类结构? 巴西后防是铜墙铁壁???战士们,进一个吧!以慰国人!~! Win2000 开机时出现xmnt2000 program not found...的提示信息。是怎么回事? 如何实现类似联众的游戏大厅的游戏模块下载后,安装后能自动挂上大厅?? sql plus启动问题(ora-01034,27101) 建模问题:pb源程序用什么工具转换成模型、状态图或是类结构? 初学者的问题,在windows2000命令提示符下无法执行lgdt指令? 我想说我是他大爷 帮帮俺吧!!! 中国队输了,真他妈的郁闷。中国队因该发挥的更好 请大家给我推荐一些关天加密解密算法的书,好吗?谢谢 知道一控件的变量,怎么才能知道其ID号及CAPTION? 诸位高手帮帮忙,看看下面这段代码有什么办法解决。 sql语句查询问题!谢谢!!2000sever可以运行,但是98就不可以了!请看看! 多表同时分类保存问题 Al(OH)3+3HCl=AlCl3+3H2O中,Al(OH)3是溶液吗?HCl是稀是浓?说的时候,是说氢氧化铝胶体与稀盐酸反应,还是说氢氧化铝固体与稀盐酸反应? 毛细血管都是分布在小动脉和小静脉之间吗急如果在15分钟之内回答此问题者,我可以提高对他的悬赏分 fe(oh)3受热分解有离子方程式吗? HCL是否能鉴别NA2CO3和NA2SO3答案说可以的 我觉得不妥 小静脉与小静脉之间连通毛细血管吗 Fe(OH)3如何转变为Fe(Oh)2 人一死就是世界都不在了我们存在在这个世界上存在思想意识死后思想意识也不存在了 这不是莫大的痛苦吗?死亡后一切物质 思想都没有了 死亡又是不可避免的 每想到这里心里就有一种莫 升华凝华的运用 Fe(OH)3是什么 人死后去哪里?意识还存在吗? Fe(OH)2的氧化性举一些例子啦~ Fe(OH)3分解高温还是加热 人为什么会死,死后是不是会有另一个世界 升华和凝华 在生产方面的应用 求帮起个作文名我要写一篇关于坂田银时的作文,不过开头并不直接写出他的名字,而是先用“他”来代称,到后面才写出来,大家觉得这篇作文是用《他》作为题目好还是用《他是谁》作为题目 人死了意识海还会存在吗?是否还存在那些精神世界呢? Fe(OH)2氧化成Fe(OH)3方程 硫氰化铁在溶液中会电离吗 为什么呈血红色 9、衡量心脏泵血功能的主要指标是( ) A、心排出量 B、中心静脉压 C、心率 D、动脉血压 Fe(OH)2在空气中被氧化氧化成Fe(OH)3 问化学方程式 硫氰化铁在水中是否已离子形式存在 说说你们对死后人的意识还存在嘛?会不会有另一个世界 含有碳碳双键一定能让溴水褪色吗?一定能让酸性高锰酸钾溶液褪色吗? 东施效颦 文言文翻译简单一点(50字) 人的心脏每分钟大约要泵多少毫升的血?患者信息:男 62岁 河南 郑州 含有羟基的碳碳双键能使溴水或者酸性高锰酸钾褪色吗 英语翻译仆去月谢病,还觅薜萝.梅溪之西,有石门山者,森壁争峡,孤峰限日;幽岫含云,深溪蓄壁.蝉吟鹤唳,水响猿啼.英英相杂,绵绵承韵.既素重邮居,素葺宇其上.丰富菊花,偏绕竹实.山谷所资,于 入球小动脉中流的是什么血,出球小动脉流的是什么血assassin1031,你的答案似乎与别人不一样? 为什么除co2中的少量hcl不宜使用碳酸钠?不过为什么用饱和的碳酸氢钠就不会吸收呢?我的意思是不饱和的不行吗? 英语翻译 入球小动脉、出球小动脉、重吸收作用后的血管是什么血?我觉得都是动脉血, 10、对于摩擦力,下列叙述中错误的是()A.只要两个物体接触并相互挤压,且接触面不光滑,它们之间一定产生摩擦力B.运动的物体可能不受摩擦力的作用C.摩擦力的方向可能与物体运动的方向 英语翻译三楼的你很聪明 复制的,那还有翻译呢? 入球小动脉和出球小动脉都流动脉血吗如题.为什么啊 在一个与外界隔热的容器中,盛有0`C的水,如果用一个抽气机把容器内的空气迅速抽出,那么以下说法正确的是A一部分水结成冰,水和冰的总质量减小,冰和水的温度都是0`CB容器内仍是0`C的水,水 英语翻译习辱坐言字旁一个旨徒第一个且正确的有5分 发现有人溺水后,再给他做人工呼吸前,为什么? 溺水多久会死亡 生活 丰乐亭记中作者为什么要以丰乐亭来命名如题 在AL3+ →AL(OH)3 → ALO2- →(X)→ AL3+的系列变化中,判断X为——?在AL3+ →AL(OH)3 → ALO2- →(X)→ AL3+的系列变化中,判断X为——?A:HCL B :NAOH C :AL(OH)D:CO2 什么原因能造成溺水死亡 丰乐亭记 欧阳修为什么以丰乐亭命名 《丰乐亭记》欧阳修为什么快乐 不用任何试剂鉴别HCL溶液和Na2CO3溶液任取一未知溶液滴入另一未知溶液中,若立即有气泡放出,则滴加的试剂为碳酸钠溶液.若开始时并无气泡冒出,滴入一定量后,才有气泡冒出,则滴加的时HCL溶 如何鉴别CaCO3、Na2CO3、CaO?小明在实验室中找到了三包已经失落标签的白色粉末,已知是CaCO3、Na2CO3、CaO,请从下面的试剂或方法中选择一种来确定该三种物质 A、稀盐酸 B、水 C、 肾动脉,入球小动脉,出球小动脉中流动的是( )说明肾小球中的周围组织未从其内血液中吸收( ) 心泵防内漏是靠什么起作用的 帮起作文名写春天美景的最好带有些诗意 肾小球的出球小动脉与入球小动脉的血液中的大分子物质浓度相比,浓度为什么增加?肾小球的过滤作用,把大分子蛋白质过滤回来了,所以出球小动脉大分子物质浓度不应该减小吗? 三国志 武帝纪一 的全文译文是陈寿版裴松注的《三国志》里的 魏一 武帝纪一的译文 肺泡气,静脉血,动脉血,组织细胞中氧气和二氧化碳含量要解释和排序氧含量:二氧化碳含量:(不能解释的给个答案也好)(不会的不要答) Fe(OH)2和Fe(OH)3能与酸反应吗? 实验观察中,判断小动脉,小静脉和毛细血管这三类血管的依据是什么 科研人员检测了平静状态下人体肺泡气,动脉血,静脉血和组织等四处的氧气和二氧化碳29、科研人员检测了平静状态下人体肺泡气、动脉血、静脉血和组织等四处的O2和CO2含量(即气体分压),并 、写出Fe(OH)3、Co(OH)3与HCl反应的方程式,说明它们的不同点及造成这一不同的原因 有关静脉与动脉,毛细血管的所有知识谢 血液流经肺泡后其成分的主要变化是 1.由静脉血变为动脉血还是2.氧气增多二氧化碳减少umujytnkup2011/8/4 11:27:24, Fe与CO反应吗? 小动脉、小静脉和毛细血管有何不同如题,毛细血管是连接最小的动脉和最小的静脉之间的血管(苏教版七年级生物下册),但小动脉和小静脉与毛细血管之间不同在什么地方?希望给与简单正 Fe(OH)3分解温度
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘