平方X

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3503|回复: 2

[Android] android jni ndk

[复制链接]

414

主题

709

帖子

3603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3603
QQ
发表于 2016-3-12 15:51:19 | 显示全部楼层 |阅读模式
字面理解:JNI表示Java Native Inteface,是Java中定义的一种用于连接Java和C/C++接口的一种实现方式。
NDK表示Native Development Kit,是Google在Android开发中提供的一套用于快速创建native工程的一个工具。使用这个工具可以很方便的编写,调试JNI的代码。
不知道为什么,可能是我跟不上技术发展,搜索的时候都不太好找。
最好学的http://www.cnblogs.com/yejiurui/p/3476565.html
http://jingyan.baidu.com/article/5d6edee22d908799eadeec9f.html
第一篇(以下简称①)照着做有问题不知道为什么。
后来第二篇(以下简称②),我找不到ndk的设置,最后换了adt目录下的eclipse可以了。
总结①中的,用javac和javah生成文件很不错,可以学习。
(1)用cmd命令定位到JniClient.class 所在目录,输入“javac JniClient.java“后回车,生成JniClinet.class文件(如果是用的Eclipse建的工程,在TestNdk\bin\classes\com\ndk\test目录下就已经有JniClinet.class文件了)。
(2)将JniClinet.class拷贝到TestNdk\bin\classes\com\ndk\test目录,将cmd命令定位到TestNdk\bin\classes目录,输入”javah com.ndk.test.JniClient“后回车,在TestNdk\bin\classes目录下就生成了C++头文件com_ndk_test_JniClient.h
然后再在c中引入头文件继续写,但是有点麻烦。
②中,有了ndk tool后,输入so名字就生成了。
另外在ndk的sample中也是有很多例子的,很简法,这也可能是网上没有太多介绍的原因,这些年都是要自学啊。
我是平方X~
回复

使用道具 举报

414

主题

709

帖子

3603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3603
QQ
 楼主| 发表于 2016-3-14 13:47:41 | 显示全部楼层
今天发生了一个问题,就是调用自己的方法总是出错,用debug虽然可以看到一点错误,但是很模糊,而NDK的调试我弄了之后总是出不来。
总结一下今天的问题
http://www.cnblogs.com/luxiaofen ... /08/17/2142000.html所说
①获取方法有两个方法GetMethodID和GetStaticMethodID
②调用方法也是有多个CallObjectMethod和CallStaticObjectMethod
我今天试的时候,传int,返回int就有效,传String返回String就不行,原因是,String不能直接用作参数,
要用jstring param=(env)->NewStringUTF("2");转一下。
我是平方X~
回复 支持 反对

使用道具 举报

414

主题

709

帖子

3603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3603
QQ
 楼主| 发表于 2016-3-15 18:57:00 | 显示全部楼层
昨天的问题是,一直不相等。
犯的错误是,我在控制台输出,完全一样,其实是因为控制台只输入了1024个字符。
而我没有限制输出,可能是eclipse的限制或是NewStringUTF的问题,我也不知道。
后来我还写了一个字节一个字节的比较,然而我并没有取对字符串的长度。
后来我根据-99去找c,发现果然是第14个字符串以c开头的我没有加上。
对了,还要记得释放啊。
我是平方X~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|平方X ( 冀ICP备14018164号 )

GMT+8, 2024-5-4 21:58 , Processed in 0.145310 second(s), 21 queries .

技术支持:Powered by Discuz!X3.4  © 2001-2013 Comsenz Inc.

版权所有:Copyright © 2014-2018 平方X www.pingfangx.com All rights reserved.

快速回复 返回顶部 返回列表