【发布时间】:2012-12-08 01:57:53
【问题描述】:
更新(为了清晰和减少歧义):
我将开始修补 Android 应用程序。我计划使用 NDK 编写 C++(因为我在 C++ 方面有更多经验并且更喜欢它而不是 Java),但在 Android NDK page 上遇到了以下内容:
您应该仅在对您至关重要的情况下使用 NDK 应用程序——绝不是因为您只是更喜欢用 C/C++ 编程。
我的印象是你应该使用你喜欢的语言,只要它适合工作。有人可以解释为什么强烈建议不要使用 C/C++ 进行 android 开发吗?
原文:
我将开始修改移动应用程序,特别是 android,它是我当前手机的操作系统,我想知道是否用 C++(或至少是核心,然后用 Java 包装)编写应用程序是一个可接受的选项。
一些背景知识,我是一名计算机科学专业的学生,已经学习了 3 门 C++ 课程(入门、中级、OOP,并且我在春季学习了 STL 课程)和只有 1 门 Java 课程(中级)。正因为如此,我更喜欢 C++ 并且更喜欢它而不是 Java。我在Android NDK page 上看到了以下内容:
在 Android 上使用本机代码通常不会导致明显的 性能改进,但它总是会增加您的应用程序复杂性。 一般而言,您应该只在对您的系统必不可少的情况下使用 NDK 应用程序——绝不是因为您只是更喜欢用 C/C++ 编程。
- 我的印象是您应该使用合适的语言 这份工作以及您熟悉的工作
- 我可能想将应用程序移植到另一个移动平台,例如 作为 iOS,支持 C++ 但不支持 java
- 虽然 Java 是一种高级语言,因此应该进行开发 更快,我觉得开发会更慢,因为我会 重新学习几乎所有东西(因为我只上过一门课 语言)
任何建议将不胜感激。
ps:关于这个主题的许多答案都是几年前的,很少有后续答案提到 NDK 允许在 android 2.3 和更高版本上开发完整的原生应用程序。
【问题讨论】:
-
“可接受”是一个奇怪的词——它肯定是可能的,来自the NDK...
-
你最好还是硬着头皮学习 Java。 Android 工具包确实是打算从 Java 中使用的,而您从已经知道 C++ 中节省的时间将被花费,然后一些人试图弄清楚如何使所有 Android 的东西在 C++ 中工作。将此视为学习机会:)
-
就我个人而言,正如 Jeremy 所说,我会咬紧牙关,简单地学习 Java 所需的知识。实际上,相对较快地学习它对您来说那么没什么大不了的。
-
首先,无论熟悉程度如何,C++ 都不像 Java 那样适合这项工作(为 Android 开发)。对于第二点,尽管 Android 是 Linux,但 Android 和桌面应用程序之间存在巨大差异;生命周期不同,您必须处理活动而不是流程,与普通桌面开发相比,这是一种完全不同的开发方式。对于您的第三点,在 C++ 中学习 Android SDK 将比在 Java 中学习它(在学习 Java 之后)然后切换到 C++ 花费的时间要长得多。
-
太多人使用“C/C++”这个词,就好像只有一种语言一样。我希望您知道 C 和 C++ 是两种不同(尽管密切相关)的语言——您要问的似乎是 C++,而不是 C。