1

我有一个带有本机代码的 Android 项目。当我从我的 repo 结帐并构建干净的版本时,它可以构建并在设备上启动,但是在我运行project->cleaneclipse 命令后,我得到了一个错误:

...
Install        : libgnustl_shared.so => libs/armeabi/libgnustl_shared.so

D:/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-strip: unable to rename './libs/armeabi/libgnustl_shared.so'; reason: File exists
make: *** [libs/armeabi/libgnustl_shared.so] Error 1
make: *** Deleting file `libs/armeabi/libgnustl_shared.so'

**** Build Finished ****

这个错误可以在 Cygwin 控制台中以相同的输出重现(是的,我在 MS Windows Vista 下工作)。

我在初始化项目时遇到了同样的错误。通过在管理员下运行的cygwin控制台将libgnustl_shared.so文件放入obj/local/armeabi/libgnustl_shared.so并设置所有项目文件的777权限来解决它。但现在这无济于事。

你可以在 github 上找到我的项目 https://github.com/aboritskiy/pacman
我还没有设置任何项目许可证,我希望这个教育项目没有违反任何其他项目许可证。

支持 JNI 的功能位于jni-powered分支中。

编辑: 似乎我libgnustl_shared.so以错误的方式包括在内。

4

3 回答 3

1

您已经https://github.com/aboritskiy/pacman/blob/jni-powered/libs/armeabi/libgnustl_shared.so在您的存储库中,但 NDK 认为它应该在构建期间创建。

于 2012-11-25T13:14:09.950 回答
1

当我安装了 Tortoise Git 并且 TGitCache.exe 在后台运行时,我观察到了这个问题,而且我正在构建的代码是存储库代码。

尝试在任务管理器中杀死 TGitCache.exe 并重新构建。

于 2014-07-22T07:35:26.940 回答
0

总结:

我想将其添加libgnustl_shared.so到项目中。我正在使用带有 Android 开发者工具插件和 Android 原生开发者工具插件的 Eclipse。但是我有编译错误,这个错误可以通过 eclipse 和 Cygwin 控制台重现。

问题在于配置错误Android.mk:要包括libgnustl_shared.so我必须添加

  1. LOCAL_C_INCLUDES := sources/cxx-stl/gnu-libstdc++/include/Android.mk,

  2. APP_STL := gnustl_sharedApplication.mk文件。

但最初我只有第二种选择。

非常感谢Alex Cohn在此调试期间提供的有用建议。

于 2012-11-27T14:05:45.493 回答