Android libstlport_static.a:没有这样的文件:权限被拒绝

Android libstlport_static.a:没有这样的文件:权限被拒绝,android,android-ndk,Android,Android Ndk,在编译我的androidndk项目时,我添加了 APP_STL := stlport_static 到我的jni/Application.mk文件,该文件允许使用一些STL内容。然而,当我清理和构建时,我得到了一个错误 libstlport_static.a:没有这样的文件:权限被拒绝 我发现解决这个问题的办法是 STLPORT_FORCE_REBUILD := true 这是一个修复方法,但是每次重建stlport库显然非常耗时。这个问题有更好的解决方法吗?您还没有说要在哪个平台上开发,但

在编译我的androidndk项目时,我添加了

APP_STL := stlport_static
到我的jni/Application.mk文件,该文件允许使用一些STL内容。然而,当我清理和构建时,我得到了一个错误 libstlport_static.a:没有这样的文件:权限被拒绝 我发现解决这个问题的办法是

STLPORT_FORCE_REBUILD := true

这是一个修复方法,但是每次重建stlport库显然非常耗时。这个问题有更好的解决方法吗?

您还没有说要在哪个平台上开发,但我猜是Windows

如果您使用的是Vista或Windows 7,那么问题可能确实是libstlport_static.a文件的权限问题。请检查该文件的权限,或者尝试完全禁用用户帐户控制


请注意,NDK中提供了三个版本的libstlport_static.a。您应该能够通过参考application.mk文件中的APP_ABI设置来确定您的应用程序正在使用哪个应用程序。

如果您正在使用NDK r7c,另一种方法(而不是关闭UAC)是在Windows的命令提示符(cmd)中调用
NDK build
,而不是在cygwin下的bash


在NDKR7和更高版本中,
NDKbuild
不再依赖于cygwin,因此在cmd中直接调用它可以避免权限问题,因为工具现在拥有与您相同的权限。注意,如果要调试本机代码,您仍然需要cygwin。

我通过更改源文件的权限解决了这个问题。在这种情况下:

chmod 777 <ndk-dir>/sources/cxx-stl/stlport/libs/armeabi/libstlport_satic.a
chmod 777/sources/cxx stl/stlport/libs/armeabi/libstlport_satic.a

谢谢。是的,是Windows7。关闭UAC工作得很好!不幸的是,我不能投票支持你的答案,因为我还没有足够的代表:(嗨,我在Windows上运行时遇到了一个类似的问题。我通过给.so文件一个完全控制权限解决了这个问题。在我的情况下,问题是stlport_静态库有一些奇怪的权限,比如:---1 bobby None 1040014 Mar 3 10:33 libstlport_static。a所以我对它进行了chmod 755,它对我也起了作用。