2014-01-03 2 views
14

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

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

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

  • WhatsApp
  • TuneIn Radio Pro
  • textPlus
  • Microsoft Tag
  • Star Chart
  • SPYMouse
  • SoundHound
  • Ролл в Hole
  • Facebook
  • Skype (Вероятные криптографические ЛИЭС)
  • Raging Thunder
  • QR Droid
  • PocketCloud
  • камеры Увеличить FX
  • Blow Up
  • Paper Camera
  • Ocean HD Screen Saver
  • Офисный люкс
  • Instagram
  • Перейти Desktop
  • Fieldrunners
  • Angry Birds приложений

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

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

+0

Многие хорошие вопросы порождают определенное мнение, основанное на опыте экспертов, но ответы на этот вопрос будут иметь тенденцию почти полностью основываться на мнениях, а не на фактах, ссылках или конкретном опыте. Вместо того, чтобы спрашивать, почему * другие * хотят использовать NDK, спросите, почему * вы хотели бы использовать NDK. – CommonsWare

+1

@CommonsWare На самом деле, у меня нет причин использовать его, но, будучи любознательным типом, мне интересно узнать, что и почему другие делают то, что они делают, чтобы улучшить мои вещи. На самом деле, вы, вероятно, правы, это в основном будет субъективным и упрямым ответом, и, вероятно, SO не для этого. Возможно, мне лучше закрыть его, пока я не получу слишком много голосов :) –

+1

Ваша любознательность в порядке, но ваш конкретный вопрос просто не подходит для структуры SO. Сожалею! – CommonsWare

ответ

7

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

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

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

3

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

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

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

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

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

Смежные вопросы