Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么不应该';Android应用程序不能用C/C++;因为你",;只需选择C/C++&引用;?_Java_Android_C++ - Fatal编程技术网

Java 为什么不应该';Android应用程序不能用C/C++;因为你",;只需选择C/C++&引用;?

Java 为什么不应该';Android应用程序不能用C/C++;因为你",;只需选择C/C++&引用;?,java,android,c++,Java,Android,C++,更新了(为了清晰和减少歧义): 我将开始修补android应用程序。我正计划用NDK编写C++(因为我有更多的C++经验,喜欢java),但是在下面的内容中遇到了: 只有当NDK对您的工作至关重要时,您才应该使用它 应用程序-永远不要,因为你只是喜欢用C/C++编程。 我的印象是,只要适合这份工作,你就应该使用你喜欢的语言。有人能解释一下为什么人们强烈建议不要在android开发中使用C/C++吗 原件: 我将开始用移动应用程序来修饰,特别是Android,它是我目前手机的操作系统,我想知道在

更新了(为了清晰和减少歧义):

我将开始修补android应用程序。我正计划用NDK编写C++(因为我有更多的C++经验,喜欢java),但是在下面的内容中遇到了:

只有当NDK对您的工作至关重要时,您才应该使用它 应用程序-永远不要,因为你只是喜欢用C/C++编程。

我的印象是,只要适合这份工作,你就应该使用你喜欢的语言。有人能解释一下为什么人们强烈建议不要在android开发中使用C/C++吗


原件:

我将开始用移动应用程序来修饰,特别是Android,它是我目前手机的操作系统,我想知道在C++中写应用程序(或者至少是核心,然后在爪哇中包装)是一个可以接受的选项。p> 有些背景,我是计算机科学专业,已经学习了3门C++课程(简介、中级、OOP、AM在春季学习STL课程),只有1门java课程(中级)。正因为如此,我更喜欢C++,更喜欢java。我在网上遇到了以下情况:

在Android上使用本机代码通常不会导致明显的错误 性能提高,但它总是会增加应用程序的复杂性。 一般来说,只有在NDK对您的业务至关重要时,才应该使用它 应用程序-永远不要,因为你只是喜欢用C/C++编程。

  • 我的印象是你应该使用最适合的语言 这份工作和你熟悉的一样好
  • 我可能想将应用程序移植到另一个移动平台,例如 作为iOS,它支持C++但不支持java < /LI>
  • 而Java是一种高级语言,因此应该进行开发 更快,我觉得开发会更慢,因为我会 重新学习几乎所有的东西(因为我只上过一堂课) (语言)
任何建议都将不胜感激


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

如果你一生只打算开发一个应用程序,请使用NDK


如果你打算在有生之年开发多个应用程序来学习Android开发,并且希望能够正确地支持所有应用程序,那么从长远来看,如果你学习Java并使用Android的Java SDK,你很可能会做得更好。

最重要的考虑是Java代码将在所有android设备上运行,而本地代码将需要为所有目标平台编译

Java和Android的总体意图是,如果不是所有的应用程序都是用Java编写的,那么大部分应用程序都是用Java编写的,只有在没有其他选择的情况下才使用本机应用程序。。。因此,有关编写应用程序的所有内容都可以在Java中实现

通过使用Java编写代码,您可以在本机和Java世界之间架起一座桥梁,省去很多麻烦

同样,如果你冒险学习Java,你会帮自己一个大忙。你的Android应用程序不仅会变得更好,而且你会接触到一种截然不同的OO方法,你会成为一个更好的程序员

此外,您还可以通过使用Java编写来规避一系列安全风险


在我看来,这是一个不用动脑筋就能使用的Java。

这样想吧。您可以使用JavaSDK构建一个完整的工作应用程序,该应用程序利用了开发人员100%可用的API。使用NDK没有什么是SDK所不能做到的(从API的角度来看),NDK只提供了更高的性能

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

除此之外,NDK还引入了特定于平台的代码,扩展了发行版的规模。对于您打算支持的每个设备体系结构,您的本机代码都必须内置到.so文件中(一个用于armv5、armv7和x86),所有这些文件都打包到同一个APK中。这种可执行代码的复制使您的应用程序的大小增加了3倍(即“胖二进制”),除非您在分发应用程序时承担为每个体系结构构建单独APK的任务。因此,如果您不希望APK的大小显著增长,那么部署过程将变得更加复杂


同样,尽管所有这些都不妨碍您做您选择的事情,但它指出了为什么Google将Java描述为大多数代码的“首选”方法,并且阻力最小。我希望它能解释为什么文档的措辞是这样的。

我想说的是,在主应用程序中使用java。但是如果你有一些C++代码需要端口或一些库,你需要在C++中有效地实现,那么对于那些比特

< p>使用NDK,如果你在C++中工作的经验丰富,并且有类似Windows或其他任何复杂的OS,那么我不认为有任何理由不使用C++来进行正常的Android开发。这样你就可以快速掌握安卓系统,而不像其他操作系统那么复杂。在学习java或不学习java的情况下工作会更加令人沮丧和复杂

>程序员使用C++来实现游戏逻辑。从营业额来看,他们似乎做得很好

在我的脑海里