Chinaunix首页 | 论坛 | 博客
  • 博客访问: 446605
  • 博文数量: 145
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1060
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-22 11:52
个人简介

专注计算机技术: Linux Android 云计算 虚拟化 网络

文章分类

全部博文(145)

文章存档

2016年(3)

2015年(21)

2014年(75)

2013年(46)

我的朋友

分类: Android平台

2016-02-10 14:51:29

  

最近需要用到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
  • |

按默认排序    共有7个评论 

    0
  • cut
    估计是你项目里既有*.c文件也有*.cpp文件,一般这样的项目会概率性出问题,有时清理下再重新生成下就行,jni给java的接口100%是c的,用cpp的话要加extern c上去修饰那个接口函数
    --- 共有 1 条评论 ---
    • 正解,测试可以解决问题 (1年前)  
    | |  (2013-02-05 10:16)
  • 0
  • 跟这个没关系的哦,在ubuntu下,的确会有这个问题,这个是cdt的bug,官方已经回复了。


    | |  (2013-02-06 22:27)
  • 0
  • cdt的bug,用3.7的eclipse就没问题
    | |  (2013-02-06 23:19)
  • 0
  • windows里面也是一样....
    | |  (2013-03-25 18:00)
  • 1
  • Go to the project's Properties -> C/C++ General -> Code Analysis. Click the "Use project settings" radio button (or "Configure Workspace Settings..." button). Disable (uncheck) the "Method cannot be resolved" checkbox. 

    在这里找到的

    --- 共有 1 条评论 ---
    • 这个方法能解决!完美 (2年前)  
    | |  (2013-05-20 20:45)
  • 0
  • 这个的确是一个问题
    | |  (2014-05-27 13:07)
  • 0
  • 我的环境是ubuntu14.04 + eclipse .后来我发现是include 文件不全导致的吧~~因为%JAVA_HOME/include下面还有一个linux/include,这个也要包含进去,因为 jni.h里面 : 

    #include "jni_md.h"

阅读(1007) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~