我最近将我的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路径。
Eclipse考虑内置路径,取消选中显示内置值复选框会使所有路径消失。此外,编辑... 按钮显示为灰色。
我已经找到了以下目录,我找不到字符串“android-ndk-r9”:
~/.eclipse
~/Library
/Application/Eclipse
/etc
/Library
项目建设很好。错误的配置只会在 Problems选项卡的列表中创建数百个错误。 (要复制,您需要打开C或C ++文件):
设置来自哪里?我该如何改变呢?
这似乎是相关的: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。
答案 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 ++索引 - > 重建)也不会伤害:)