Почему так много приложений для Android используют NDK?

Я просматривал несколько приложений сегодня (на самом деле смотрел, как много используют ACRA), но заметил, что многие из них используют NDK. Я занимаюсь разработкой приложений в течение довольно долгого времени и до сих пор не нуждаюсь в NDK, и на сайте разработчика Android вы не должны его использовать, если вам не нужно:

В общем, вы должны использовать NDK, если это важно для вашего приложения, – никогда, потому что вы просто предпочитаете программировать на C / C ++.

Так что это заставило меня задуматься … Я что-то упустил? Я имею в виду, что это всего лишь несколько приложений, использующих NDK, где я не вижу в этом необходимости:

  • WhatsApp
  • TuneIn Radio Pro
  • textPlus
  • Теги Microsoft
  • Звездная карта
  • SPYMouse
  • SoundHound
  • Ролл в дыру
  • facebook
  • Skype (Вероятно, криптовые библиотеки)
  • Грозный Гром
  • QR Droid
  • PocketCloud
  • Камера Zoom FX
  • Взрывать
  • Бумажная камера
  • Ocean HD Screen Saver
  • Офисная одежда
  • Instagram
  • Перейти на рабочий стол
  • Fieldrunners
  • Приложения Angry Birds

Думаю, я думаю, что, возможно, они используют один и тот же код на других платформах, библиотеки, написанные на C и используемые на iOS, Android и других платформах, но я просто не уверен, что это причина. Есть ли другие вещи, которые, вероятно, будут использовать эти приложения для NDK? Другие вещи, которые, я думаю, могут быть: лицензирование, конфиденциальность / безопасность (перемещение сложной обратной инженерии), идентификаторы устройств, игровые движки и т. Д.

Во всяком случае, вопрос в том, действительно ли у вас есть идеи о том, почему так много приложений используют NDK?

Solutions Collecting From Web of "Почему так много приложений для Android используют NDK?"

Не уверен, что этот вопрос подходит для StackOveflow, но как разработчик, использующий NDK, я могу дать вам две причины с моей точки зрения:

  • Очень большая база кода в C ++, которая также используется для версий на iPhone и Winrt, а также Windows CE / Desktop. Он был разработчиком уже много лет, исправлен, проверен множеством пользователей.

  • Его труднее для хакеров узнать, что делает ваш код, и сломать его. Но не невозможно.

Я думаю, первая причина, указанная марцином, является основной причиной.

Для моего случая, так как было несколько библиотек C ++, используемых IPhone, и они не хотят переносить их на java impl, поэтому просто продолжайте использовать его в Android.

Поскольку я разработчик Android, я полностью не согласен с этим. Из официального документа, как вы подчеркнули:

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++. 

Но, просто трудно подтолкнуть все решение к java … Болезненность в отладке, проблемах при съемке, все вышло из-под контроля.