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

How to change built-in C/C++ paths pointing to a deleted android-ndk-r9 installation?

我最近将我的 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),因此它们已完全修补。而且我还在 .bash_profile 中更改了我的 ANDROID_NDK_ROOT 以指向新的 NDK 目录。

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

在项目属性 → C/C++ 常规 → 路径和符号下,Eclipse 仍然显示旧的 android-ndk-r9 路径。

Eclipse 考虑路径 built-in,取消选中 Show built-in values 复选框会使所有路径消失。此外,编辑... 按钮是灰色的。

我搜索了以下目录,但找不到字符串 "android-ndk-r9":

项目构建良好。错误的配置只会在 问题选项卡 的列表中造成数百个错误。 (复制需要打开C或C++文件):

设置来自哪里?我该如何更改它?


这似乎是相关的:How to remove auto-discovered paths after compiling on Linux from Eclipse CDT project?. But I can't find Discovery Options → Clear discovery entries now (it appears to be a Eclipse 3.x feature). Ditto for Eclipse CDT Invalid Project Path


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

Where is the setting coming from?

信息似乎保存在项目的 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
...

I've grepped the following directories ... "My Eclipse workspace, ~/.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 结果。


And how do I change it?

向左运动 reader。

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

OP 可能已经想到了这一点,但在这里添加它只是为了将来参考。

Eclipse(当前)在 r10d 版本中存在问题(请参阅 中的相关讨论)。首先,如果可能,应该回滚到 Android NDK 的早期版本(例如 r10c 似乎工作得很好),然后使 Eclipse 指向新安装的 NDK 版本:Preferences -> Android -> NDK -> NDK 位置。为了让 Eclipse 接受这些更改,项目需要从工作区中删除,然后再添加回去(至少我必须这样做)。重新导入项目后,应该会看到更新的 NDK 路径:Project -> Properties -> C/C++ 常规 -> 路径和符号。重建 C/C++ 索引 (Project -> C/C++ Index -> Rebuild ) 也不会伤害:)