【问题标题】:How does this Android newbie use the Android NDK and C++ code in an Android app?这个 Android 新手如何在 Android 应用程序中使用 Android NDK 和 C++ 代码?
【发布时间】:2015-09-25 20:12:37
【问题描述】:

我是一名 Java Web 开发人员;我本质上是编写 JSP 应用程序。我最舒服的环境是 Linux,但我在 Windows 上还行。我对Android应用开发知之甚少,对C++一无所知。

我最近的任务是编写一个 Android 应用程序。 Android应用程序本身并没有那么令人生畏,但这就是它变得复杂的地方。该公司有几个预先存在的用 C++ 编写的小部件,他们希望我将它们包含到 Android 应用程序中。目前它们是独立的 Windows 应用程序,但我有源代码。

我需要知道的是,我可以使用 Android NDK 在我的 Android 应用程序中使用 C++ 代码吗?我可以在我的 Android 应用程序中使用这个预先存在的 C++ 代码并像在 java 中调用类一样调用函数吗?然后,我可以将整个套件和 caboodle 编译成一个 Android 应用程序,其中包含我的原始代码的所有功能以及预先存在的小部件吗?

就像我说的,我对 C++ 一无所知,所以我什至不知道从哪里开始。我已经阅读了一些有关 Android NDK 的资料,但由于我没有 C++ 经验,并且 非常 很少有 Android 经验(只是 http://developer.google.com/ 上的一些教程),我什至不知道我应该使用哪些文件导入到项目中。

谢谢

【问题讨论】:

  • 标记为题外话,因为问题过于宽泛,不太可能收到任何非主观的高质量答案。开始做某事的最好方法是找到一个教程并按照,回来提出问题并要求澄清您可能遇到的任何困难。

标签: java android c++ android-ndk


【解决方案1】:

您没有提到您的 C++ 代码使用哪个框架,这很重要。在一般情况下,它可能是从裸 Win32 API 到 Qt 的任何东西。

Android NDK 只为您提供纯 C++(实际上是精简的,没有例如 std::string),没有 Windows 上可用的 UI 库/框架。如果那个 C 代码在不访问 UI 的情况下做了一些复杂的事情,那么移植它是有意义的;如果它控制用户界面,恕我直言,它没用。 您不能只在框架之间移植 MVC 控制器,您必须重写所有内容。

有一个 Qt 移植到 Android,但我认为它不适合你(你首先没有提到 Qt)。 Qt 庞大而复杂,一次性学习的内容太多。

有适用于 Android 的 Xamarin/Mono,但据我所知是 C#。

您必须确定项目中使用的框架是否已移植到 Android。如果是,你可能会使用端口,如果不是,你将不得不重写 UI。

即使框架已被移植,与尝试学习和配置第 3 方的东西相比,您从头开始重新创建 UI 和使用 C++ 东西作为参考模型所花费的时间也可能更少。 (这取决于代码量。)用户界面很可能不适合手机。

您不必使用 Windows 进行 Android 开发,一切都可以在 Linux 下运行。 (而且Linux更友好,特别是对于一个Linux人:在Linux下你可以grep logcat输出,Linux终端比Windows命令行框更友好(可以用鼠标调整大小,字体大小用a改变)键盘快捷键),并且 .sh 优于 .bat)。

【讨论】:

  • 这个答案是非常主观的“Linux 更友好”等,这甚至与所提出的问题无关,此外,它并不试图回答所提出的问题,即“如何”可以做到这一点,而不是“可以”做到这一点。
  • @o0rebelious0o "friendly" -- you 在 windows 和 Linux 下都使用命令行 adb logcat 吗?哪里更容易使窗口更宽,字体更小?复制一部分日志在哪里更容易?又是从哪里发现输出没有了,因为超过了预设的行数?
猜你喜欢
  • 2016-07-02
  • 2013-05-27
  • 2019-07-06
  • 2021-05-03
  • 2019-07-23
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多