例如,我想创建一个基于GPS的简单应用程序,制作航点,在地图上显示它们等等。那么,是否可以使用C ++制作这样的应用程序,而不使用任何Java源代码?是否比在Java上制作相同更难?
答案 0 :(得分:2)
是的,搜索Android NDK。显然这有点麻烦,你会经常使用SO!
答案 1 :(得分:1)
那么,是否有可能只使用C ++创建这样的应用程序,而不是任何 Java资源?
没有。如果你想接收GPS坐标,没有任何Java代码就无法做到这一点。
你可以编写一个应用程序,其中Java被用作本机代码的瘦包装,使用JNI在Java和C ++之间交换数据。然而...
在Java上制作相同内容会不会更困难?
是的!此外,该应用可能最终成为:
对于Android开发,Java只是一种自然的,普通的默认语言,C ++适用于奇特的特殊任务,通常涉及真正密集的计算。你在需要时使用它,而不是因为你不想"想要"用Java编写或因为" Java很慢"。
编写正确的JNI代码也不是一件容易的事。例如,如果您没有阅读文档,那么很容易让本地引用和全局引用错误,因为编译器无法检测到它们的错误用法。
正如official documentation of the Android Native Development Kit所说:
在下载NDK之前,您应该了解 NDK会 不会使大多数应用受益。作为开发人员,您需要平衡它 有利于它的缺点。值得注意的是,在Android上使用本机代码 通常不会导致显着的性能提升,但是 它总是会增加您的应用复杂性。一般来说,你应该只 使用NDK,如果它对您的应用程序至关重要 - 绝不会因为您的原因 更喜欢用C / C ++编程。
它还说:
您无法访问服务和内容提供商等功能 本地,所以如果你想使用它们或任何其他框架API,你 仍然可以编写JNI代码来执行此操作。