使用Visual Studio进行Android NDK开发

19
我想使用NDK(本地开发工具包)为Android构建一些本地库,但我想使用Visual Studio 2010来完成。我已经做了一些谷歌搜索,但没有找到任何相关信息。是否有人有这方面的经验并知道使其发生所需的步骤?我已经安装了CYGWin,并确保按照NDK说明获得Make,但我不确定在设置项目、编译器和Visual Studio等方面的下一步是什么。

如果有人知道任何关于此主题的写作、教程或示例项目链接,那就太棒了,因为谷歌上还没有太多相关信息。

谢谢!


我不确定你能否做到这一点。然而,VS使用nmake(或其他构建工具)。我猜你有机会在Makefile中调用ndk-build? - qrtt1
6个回答

17

这是另一种解决方案,可以在Visual Studio中完全集成NDK,无需使用makefile。它的行为类似于一个正常的Win32项目:


是的,我尝试过了,它非常好用。它可以编译和链接到.apk文件,并且您可以配置一些选项。您还可以使用WinGDC for Android插件添加调试功能,请参见下面的Bellinghammers链接。 - Erwin Coumans
什么是解决方案?网站已经迁移。 - Ace Caserya

6

以下是一篇精彩的博客文章,介绍如何使用Visual Studio配置环境来调试Android NDK代码。

博客文章链接


1
博客链接已失效。 - Dib

3

Visual Studio官方不支持此功能。

一些问题(但不限于以下):

  • MSVS无法创建适当的ARM二进制文件
  • Android makefiles(.mk)不受MSVS支持

然而,有第三方解决方案:

您可能还想查看DS-5,但它不是Visual Studio。


我们已经部分地实现了它,我们使用Visual Studio进行构建,使用适当的Android头文件等,然后调用NDK构建脚本。我们目前正在努力将第二个步骤自动化为后期构建步骤。在某个时候,我会记录下来并将其作为答案发布在这里。 - bryan costanich
我下投了你的答案,因为有其他选择......除了在你上面提到的vs-android之外,还有VisualGDB。 - Justin
谢谢,我已经更新了我的答案。有时候我也会在其他地方推荐vs-android。 - NuSkooler

2
答案取决于您需要什么样的集成。
如果您只想从Visual Studio构建原生Android代码,您可以创建一个新的Makefile项目,并在按“构建”时运行ndk-build.cmd。 如果您还希望将错误消息映射到Visual Studio可以理解的格式,您需要解析ndk-build.cmd的输出并将其转换为该格式。
如果您想从Visual Studio调试本机Android代码,则需要第三方工具来代表Visual Studio控制ndk-gdb并提供几个错误的解决方法(例如重新绑定断点库加载时)。 您可以尝试我们的VisualGDB for Android工具,它正是这样做的-创建包装ndk-build并代表Visual Studio控制NDK调试器的项目。 如果需要更多信息,请参阅逐步教程

它们需要花费一定的金钱,但这是事实 - VisualGDB非常适合将Android NDK构建集成到Visual Studio中。 - Mark Mullin

0

除了上述的方式外,在使用VS开发Android应用程序时,还有其他一些第三方替代方案。其中有开源的dot42,位于http://www.dot42.com,以及Remobjects,http://www.remobjects.com,它可以让你使用C#、Pascal和Swift进行编程。我曾试用过Remobjects的试用版,现在开始尝试使用dot42。

使用remobjects试用版,我能够在C#中重现我所学Android课程教材前五章的项目。到目前为止,我没有在dot42上取得同样的成功,但我需要找些时间来真正尝试一下它。


0

我没有找到直接的干净解决方案,这是我的解决方法。

我在VS上开发我的本地代码作为静态库,并使用一些测试项目将其尝试为控制台应用程序。当它正常时,我使用一个小的bash脚本从cygwin复制所有需要的文件到jni文件夹并启动标准的Android NDK make命令(也在需要时将一些文件复制到资产文件夹),生成正确文件夹中的可执行文件。

为了使用pthread,我已将我的项目链接到pthread-win32。

我不在VS中编译的唯一文件是jni代码。

希望这可以帮助你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接