如何更改指向已删除的android-ndk-r9安装的内置C / C ++路径?

时间:2015-01-12 08:45:59

标签: android eclipse android-ndk adt

我最近将我的NDK从android-ndk-r9升级到android-ndk-r10(确切地说是r10d)。 Eclipse是4.4 Luna(Luna Service Release 1(4.4.1); Build id:20140925-1800)。 Eclipse已完全修补它的发布。我更新了所有Eclipse插件(包括ADT),以便完全修补它们。我还将ANDROID_NDK_ROOT中的.bash_profile更改为指向新的NDK目录。

在Eclipse Preferences→Android→NDK下,Eclipse显示了新的android-ndk-r10路径(我必须手动设置)。

在Project Properties→C / C ++ General→Paths and Symbols下,Eclipse仍显示旧的android-ndk-r9路径。

enter image description here

Eclipse考虑内置路径,取消选中显示内置值复选框会使所有路径消失。此外,编辑... 按钮显示为灰色。

我已经找到了以下目录,我找不到字符串“android-ndk-r9”

  • 我的Eclipse工作区
  • ~/.eclipse
  • 项目目录
  • ~/Library
  • /Application/Eclipse
  • OS X计算机上的
  • /etc
  • OS X计算机上的
  • /Library

项目建设很好。错误的配置只会在 Problems选项卡的列表中创建数百个错误。 (要复制,您需要打开C或C ++文件):

enter image description here

设置来自哪里?我该如何改变呢?


这似乎是相关的:How to remove auto-discovered paths after compiling on Linux from Eclipse CDT project?。但我找不到发现选项→立即清除发现条目(它似乎是Eclipse 3.x功能)。同上Eclipse CDT Invalid Project Path


这似乎是关于该问题的Eclipse错误报告:Include path discovery doesn't discard obsolete paths on compiler upgrade

2 个答案:

答案 0 :(得分:2)

  

设置来自哪里?

看来信息保存在项目的pathInfo文件中。下面,该项目是一个名为AndroidPrng的示例JNI项目。

$ cat /Users/jww/Eclipse/.metadata/.plugins/com.android.ide.eclipse.ndk/AndroidPrng.pathInfo 
t,1421045575000
i,/opt/android-ndk-r9/sources/cxx-stl/stlport/stlport
i,/usr/local/cryptopp/android-armeabi/include
i,/opt/android-ndk-r9/sources/cxx-stl/system/include
i,/usr/local/cryptopp/android-armeabi/include/cryptopp
i,jni
i,/opt/android-ndk-r9/platforms/android-14/arch-arm/usr/include
i,/usr/local/cryptopp/android-x86/include
i,/usr/local/cryptopp/android-x86/include/cryptopp
i,/opt/android-ndk-r9/platforms/android-14/arch-x86/usr/include
i,/usr/local/cryptopp/android-mips/include
i,/usr/local/cryptopp/android-mips/include/cryptopp
i,/usr/local/cryptopp/android-armeabi-v7a/include
i,/usr/local/cryptopp/android-armeabi-v7a/include/cryptopp
i,/opt/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include
i,/opt/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include-fixed
i,/opt/android-ndk-r9/platforms/android-14/arch-mips/usr/include
d,__STDC__,1
d,__INT64_MAX__,9223372036854775807LL
d,__LDBL_HAS_QUIET_NAN__,1
d,__WINT_TYPE__,unsigned int
d,__ORDER_LITTLE_ENDIAN__,1234
d,__DEC64_MAX_EXP__,385
d,__UINT_LEAST32_TYPE__,unsigned int
d,__UINT_FAST64_TYPE__,long long unsigned int
d,__GXX_WEAK__,1
...

  

我已经浏览了以下目录...... "我的Eclipse工作区,〜/。eclipse," ......

这里有两个问题。首先,项目位于我的桌面上,而不是我的工作区目录。其次,org.eclipse.cdt.ui下的日志文件中的100个条目淹没了com.android.ide.eclipse.ndk的15个条目。

所以,在你grep之前,执行:

rm Users/jww/Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/*.log

这将产生可管理的grep结果。


  

我该如何改变呢?

练习留给读者。

您可以手动编辑;或者您可以删除它,Eclipse将使用新的NDK相关路径重新创建它。

答案 1 :(得分:2)

OP可能已经解决了这个问题,但在此处添加此内容仅供将来参考。

Eclipse(当前)存在r10d版本的问题(请参阅https://stackoverflow.com/a/28108753/1591421中的相关讨论)。首先,如果可能,应该回滚到早期版本的Android NDK(例如r10c似乎工作得很好),然后让Eclipse指向新安装的NDK版本:首选项 - > Android - > NDK - > NDK位置。为了让Eclipse获取这些更改,需要从工作区中删除项目,然后再添加回来(至少我必须这样做)。重新导入项目后,应该会看到NDK路径已更新:项目 - > 属性 - > C / C ++一般 - > 路径和符号。重建C / C ++索引(项目 - > C / C ++索引 - > 重建)也不会伤害:)