C++ NDK不能用来做什么?

C++ NDK不能用来做什么?,c++,android,android-ndk,C++,Android,Android Ndk,从: 安卓NDK。。。提供 允许您 要构建活动,请处理用户 输入,使用硬件传感器,访问 应用程序资源等, 在C或C++编程时。如果你 编写本机代码,您的应用程序 仍打包到.apk文件中 它们仍然在一个虚拟世界里运行 设备上的机器。根本 Android应用程序模型没有 改变 但是,它总是被描述为Android SDK的配套工具,并且是一个工具集,允许使用本地代码语言如C和C++来实现应用程序的部分。 我的理解是,与基于Java的SDK不同,NDK不是为实现Android应用程序的某些部分而设计的

从:

安卓NDK。。。提供 允许您 要构建活动,请处理用户 输入,使用硬件传感器,访问 应用程序资源等, 在C或C++编程时。如果你 编写本机代码,您的应用程序 仍打包到.apk文件中 它们仍然在一个虚拟世界里运行 设备上的机器。根本 Android应用程序模型没有 改变

但是,它总是被描述为Android SDK的配套工具,并且是一个工具集,允许使用本地代码语言如C和C++来实现应用程序的部分。 我的理解是,与基于Java的SDK不同,NDK不是为实现Android应用程序的某些部分而设计的

这是正确的吗


如果是这样,NDK不允许实现哪些部分?

需要注意的是,您所指的文档在NDK真正能够处理诸如活动之类的事情之前就已经存在了。因此,当时您需要做的是使用sdk创建一个android应用程序,并且至少需要为活动生命周期事件创建一个java包装类,称为本机代码。此外,如果您需要声音或与用户的其他交互,通常也必须使用sdk


不过,现在看来,你可能会在整个应用程序中使用NDK,尽管我还没有尝试过,但如果你想使用标准的UI元素,比如列表来选择游戏文件,我仍然会使用SDK。查看2010年12月发布的NDK r5。他们为本地C++代码增加了很多支持,包括本地活动。

@列夫感谢和+1解释这个好。那么,从您的回答中,我是否理解您实际上可以使用NDK对整个应用程序进行编程?TTS应用程序怎么样?NDK不支持非开箱即用的垃圾收集,就像Java一样:您必须编写大量繁琐、难以阅读的Java反射代码。或者创建/查找并学习包装器库。可以说,实例化java类并调用方法是C++中的6行,这并不意味着错误处理。java异常不会传播到C++之外,无论如何,这个平台的95%接口是在java中。它可以从C++调用,但是非常迂回。没有本地C++接口是一种更好的方式。当使用Android设备开始运行在比两个版本的ARM更多的架构时,你应该意识到的另一个问题是,尽管我并不完全相信ARM,但NDK支持。您必须为这些体系结构重新编译代码。好消息是,基于gnu工具链的ndk可以改装为针对其他体系结构进行编译,但坏消息是您可能没有所需的库。@Seva是正确的,如果您经常使用标准api,那么sdk就会容易得多。