更新(为清晰起见并减少歧义):
我将开始修补Android应用程序.我计划使用NDK编写C++(因为我有更多的C++经验,更喜欢Java),但在Android NDK页面上遇到了以下内容:
你应该只使用NDK,如果它对你的应用程序至关重要,因为你只是喜欢用C/C++编程.
我的印象是你应该使用你喜欢的语言,只要它适合这项工作.有人可以解释为什么不建议不使用C/C++进行Android开发吗?
原版的:
我将开始修改移动应用程序,特别是android,这是我当前手机的操作系统,我想知道用C++(或至少核心,然后用Java包装)编写应用程序是一个可接受的选择.
有些背景,我是计算机科学专业的学生,已经修了3门C++课程(介绍,中级,OOP,并且在春季参加STL课程),只有1门Java课程(中级).因此,我对C++更熟悉,更喜欢Java.我在Android NDK页面上看到了以下内容:
在Android上使用本机代码通常不会带来明显的性能提升,但它总会增加您的应用复杂性.一般情况下,如果它对您的应用程序至关重要,您应该只使用NDK,因为您只是喜欢用C/C++编程.
任何建议都会非常感激.
ps:关于这个主题的许多答案来自几年前,并且很少有后续答案提到NDK允许在android 2.3及更新版本上开发完整的原生应用程序.
Dev*_*red 99
这样想吧.您可以使用Java SDK构建一个完整的工作应用程序,该应用程序利用开发人员可用的100%API.NDK无法通过SDK完成任何操作(从API角度来看),NDK只提供更高的性能.
现在反过来看一下.如果您选择在NDK中100%编写应用程序,您仍然可以编写功能齐全的应用程序,但是您可以访问的框架API数量有限.并非所有的Android框架都可以在本机层访问; 大多数API仅限Java.这并不是说您可能需要的所有API 在NDK中都不可用,但是所有 API都无法接近.
除此之外,NDK还引入了特定于平台的代码,扩展了分发的大小.对于您打算支持的每个设备体系结构,您的本机代码必须内置到.so文件中(一个用于armv5,armv7和x86),这些文件都打包到同一个APK中.这种可执行代码的重复使您的应用程序大小(即"胖二进制"),除非您在分发应用程序时承担为每个体系结构构建单独的APK的任务.因此,如果您不希望APK显着增长,则部署过程会变得更加有效.
同样,虽然这一切都没有阻止你做你选择的事情,但它指出了为什么谷歌将Java描述为大多数代码的"首选"方法和阻力最小的路径.我希望它能说明为什么文档的措辞方式如此.
Isa*_*aac 24
如果您只想在生活中开发一个应用程序,请使用NDK.
如果你的目标是学习Android开发,意图在你的一生中开发多个应用程序 - 并希望能够正确地支持它们 - 如果你学习Java和Java,那么从长远来看,你很可能做得更好请改用Android的Java SDK.
小智 9
King的程序员使用C++来实现他们的游戏逻辑.从他们的营业额来看,他们似乎做得很好.
根据我的经验,C++用于解决问题,而Java则用于避免问题.我喜欢这两种语言,但是当你编写好的代码时,C++是非常有益的.然而,到达那里可能需要花费几分钟的时间.
您也可以为数据科学家推荐C++,他们通常可以通过Python或者R来完成他们的工作.C++可以做同样好的或不好的性能,但它只是成为语言的天才.这就是为什么我永远不会向想要这样做的人推荐C++ - 我只是提出他们所处的待遇.