当前位置: 首页 > 面试题库 >

为什么不应该用C / C ++编写Android应用程序,因为您“只喜欢用C / C ++编程”?

单于承
2023-03-14
问题内容

改善这个问题

更新 (为清楚起见,以减少歧义):

我将开始修补android应用程序。我打算使用NDK用C 编写C语言(因为我在C 方面有更多的经验,并且喜欢Java),但是在Android
NDK页面
上遇到了以下内容:

仅当NDK对您的应用 程序 至关重要时,才应使用NDK- 决不因为您只喜欢使用C / C ++进行编程。

我的印象是,只要适合您的工作,就应该使用自己喜欢的语言。有人可以解释为什么不建议在Android开发中使用C / C ++吗?

原版的:

我将开始研究移动应用程序,特别是android,这是我当前手机的操作系统,我想知道是否可以用C ++(或至少是核心,然后用Java封装)编写应用程序。

在某些背景下,我是一名计算机科学专业的人,修过3门C 课程(入门,中级,OOP,并在春季修读STL课程),而只修过1门Java课程(中级)。因此,我对C

更加满意,并且更喜欢Java。我在Android
NDK页面上遇到了以下内容:

通常,在Android上使用本机代码不会带来明显的html" target="_blank">性能改善,但始终会增加应用程序的复杂性。通常,仅应在对您的应用 程序
至关重要的情况下使用NDK, 决不能 使用NDK, 因为绝对不要只喜欢用C / C ++编程。

  • 我的印象是,您应该使用适合您的语言以及您熟悉的语言
  • 我可能想将应用程序移植到支持C ++但不支持Java的另一个移动平台(例如iOS)上
  • 尽管Java是一种高级语言,因此应该使开发速度更快,但我觉得开发速度会变慢,因为我将不得不重新学习几乎所有内容(因为我只学习了一种语言)

任何建议将不胜感激。

ps:关于这个问题的许多答案都来自几年前,并且很少有提及NDK的后续答案,因为它允许在android 2.3及更高版本上开发完整的本机应用程序。


问题答案:

这样想吧。您可以使用Java
SDK来构建可以正常使用的应用程序,该应用程序可以充分利用开发人员可用的API的100%。从SDK角度(从API角度来看),NDK不能做任何事情,而NDK只能提供更高的性能。

现在反过来看。如果您选择在NDK中100%编写应用程序,则仍然可以编写功能完整的应用程序,但是可以访问的框架API数量有限。并非所有Android框架都可以在本机层进行访问。大多数API仅是Java。这并不是说
可能需要的所有API 在NDK中都不可用,但是 所有 API都没有公开。

除此之外,NDK还引入了特定于平台的代码,从而扩大了发行规模。对于要支持的每种设备体系结构,必须将本机代码内置到.so文件中(一个用于armv5,armv7和x86的文件),并且都打包到同一个APK中。可执行代码的这种重复使您的应用程序变成3倍大小(即“胖二进制文件”),除非您在分发应用程序时承担为每种体系结构分别构建APK的任务。因此,如果您不希望APK的大小显着增加,则部署过程会变得更加繁琐。

再一次,尽管所有这些都不能阻止您做自己选择的事情,但它指出了Google为什么将Java描述为大多数代码和阻力最小的途径的“首选”方法。我希望它能阐明为什么文档的原样。



 类似资料:
  • 主要内容:安装C-Free 5.0,运行C语言代码安装C-Free 5.0 C-Free 是一款国产的Windows下的C/ C++ IDE,最新版本是 5.0,整个软件才 14M,非常轻巧,安装简单。 下载地址: C-Free 5.0下载 按照教程中的说明安装并  C-Free 5.0。 需要注意的是:C-Free 5.0 在 XP、Win7 下能够完美运行,在 Win8、Win10 下可能会存在兼容性问题,读者可以先尝试安装,不行的话再使用

  • 主要内容:1) 新建源文件,2) 生成可执行程序,4) 总结前面我们给出了一段完整的C语言代码,就是在显示器上输出“小牛知识库”,如下所示: 本节我们就来看看如何通过 Dev C++ 来运行这段代码。 Dev C++ 支持单个源文件的编译,如果你的程序只有一个源文件(初学者基本都是在单个源文件下编写代码),那么不用创建项目,直接运行就可以;如果有多个源文件,才需要创建项目。 1) 新建源文件 打开 Dev C++,在上方菜单栏中选择“文件 --> 新建 -

  • 主要内容:1) 新建源文件,编译,链接,运行,更加便捷的方式首先,我们给出一段完整的C语言代码: 本节我们来看看如何通过 Turbo C 来运行这段代码。 注意:Turbo C  本身不支持中文输入。 1) 新建源文件 打开 Turbo C,你看到的是 Turbo C 的初始操作界面,如下图所示: 直接按 “回车” 键,并由键盘方向键控制,选择 “New” 选项,如下图所示: 直接回车,此时编辑器中显示出一个文件 “NONAME.C”,同时可见光标在不停的

  • 本文向大家介绍在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?相关面试题,主要包含被问及在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?时的应答技巧和注意事项,需要的朋友参考一下 C++ 语言支持函数重载,C 语言不支持函数重载。函数被C++ 编译后在库中的名字与 C 语言的不同。假设某个函数的原型为:void foo(int x, in

  • 我正在用Redmine Api用C#编写一个程序,我只能通过 如果我使用简单的任务 但是在messageBox中,我只获得登录页面的字符串。

  • 主要内容:安装VC6.0,在VC6.0下运行C语言程序,工程文件说明Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。 VC6.0 确实有点老了,如果不是学校要求或者项目需要,建议使用 Visual Studio