最近需要用到android的ndk,但是在eclipse中,一直提示Method 'NewStringUTF' could not be resolved,诸如此类的错误。
可问题是,jni.h等一系列的依赖库,我都已经导入了,并且也能正常的使用build来编译出动态库文件。但是sb的就是eclipse的cdt,仍旧会不停的提示这类的错误,导致整个项目没办法编译过去。
后来,我先问了baidu,然后又问了google,最终折腾了两天也没办法很好解决这个问题,只好苦逼的使用code::block来写c的jni代码,然后关闭eclipse的code 检查功能,最终才使得项目可以完整编译过去。
后来我思考了一下,并做了一些实验,发现这个估计是adt本身的一个bug,或者说是一个信号??首先,我使用adt的add native support library 来使得jni可以合并到项目中。这时候我发现默认生成的是cpp文件。。c++??这个问题之前我一直忽略了,所以我干脆使用c++来写这个库,结果我发现在cpp文件中,无论你是按照c++语法来写,还是c语法来写,最终结果都是正常的。不会出现这种好似没有导入的错误。 这不得不让我感觉是否google下一步的ndk开发,主要是支持c++了???
可是更加苦逼的是,我仍旧没有好的解决办法,总不能之前的代码在用c++写一遍吧?要不就是继续关闭cdt的语法分析检查,委曲求全的来继续开发?这的确是一个苦逼的问题。
后来,我实在没办法只好去android的官网去看看是否又解决的办法,嘿,别说还真让我找到了。
android本身有一个定制的eclipse版本,我晚上的时候仅仅只是报着死马当活马医的想法下载下来了,结果却发现在这个定制eclipse版本中,居然不会在有问题了?这不得不说是一个非常好的事情,我可以继续在eclipse下工作了,毕竟这个ide是我最喜欢的ide。
可是另一方面,我仍旧是对这个问题感到困惑。我从eclipse的bug提交中发现早在2011年就有人反馈这个bug了,最终他自己关闭了这个bug,说已经解决了,但是如何解决却没有说。我想是否是从那时候开始就一直有这个问题呢?
最后说下我的开发环境:
ubuntu 12.04桌面版
eclipse 4.2.1/4.3(都不能用,或出现上文中我所说的问题)
Eclipse IDE with built-in ADT 21.01(正常,终于解决了使用ndk开发的问题了)
下载地址:
ps。不知道windows上开发的朋友,是否也会遇到类似的问题?李昱希望本文能对在linux下开发的朋友起到一定的帮助,毕竟我翻了baidu,google几百页了,也没有找到完美解决的方案。当然,如果您直接使用c++做jni的开发,那么这个问题应该不会影响到你的。
发帖于 3年前
回/9547阅
标签: Android
- |