android - 为什么这么多 Android 应用使用 NDK?

标签 android android-ndk

我今天浏览了一些应用程序(实际上是想看看有多少使用 ACRA),但注意到其中很多使用 NDK。我已经开发应用程序很长一段时间了,但还没有找到对 NDK 的需求,并且根据 Android Developer site你不应该真正使用它,除非你需要:

In general, you should only use the NDK if it is essential to your app—never because you simply prefer to program in C/C++.

所以这让我开始思考......我错过了什么吗?我的意思是这里只是一些使用 NDK 的应用程序,我真的看不出需要它:

  • WhatsApp
  • TuneIn Radio Pro
  • 文本加
  • 微软标签
  • 星图
  • spy 鼠标
  • 猎犬
  • 滚进洞里
  • Facebook
  • Skype(可能是加密库)
  • 怒雷
  • 二维码机器人
  • 掌上云
  • 相机变焦效果
  • 炸毁
  • 纸相机
  • 海洋高清屏保
  • 办公套件
  • Instagram
  • 跳转桌面
  • 领跑者
  • 愤怒的小鸟应用

我想我的想法可能是他们在其他平台上使用相同的代码,用 C 编写并在 iOS、Android 和其他平台上使用的库,但我只是不相信这是原因。这些应用程序可能会使用 NDK 来做其他事情吗?我猜其他的事情可能是:许可、隐私/安全(移动复杂的逆向工程)、设备 ID、游戏引擎等。

无论如何,问题是真的,你知道为什么这么多应用都在使用 NDK 吗?

最佳答案

不确定这个问题是否适合 StackOveflow,但作为使用 NDK 的开发人员,我可以从我的角度给你两个理由:

  • 非常大的 C++ 代码库,也用于 iPhone 和 Winrt 上的版本,以及 Windows CE/Desktop。它已经开发了多年,经过大量用户的修复和测试。

  • 黑客更难了解您的代码在做什么并破解它。但并非不可能。

关于android - 为什么这么多 Android 应用使用 NDK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910010/

相关文章:

java - 如何在不同的类中使用一个类的 String 数组,以免代码行数过多

android - 对 __android_log_print 的 undefined reference

android - 用于 Android NDK ECLIPSE 插件的 NVIDIA 调试管理器

android - Android 中的应用程序如何使用 SurfaceFlinger 实例?

build - NDK-Build如何重建项目?

android - 在辅助线程中接收传感器事件(Android native )

java - FirebaseRecyclerAdapter 问题。 Firebase 用户界面 1.2.0 与 4.3.1 相比

java - 错误: constructor in class cannot be applied to given types

java - createNewFile - 打开失败 : ENOENT (No such file or directory)

android - Proguard:已删除列表