Почему так много приложений для 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?
Ответы
Ответ 1
Не уверен, что этот вопрос подходит для StackOveflow, но как разработчик, использующий NDK, я могу дать вам две причины с моей точки зрения:
-
очень большая база кода в C++, которая также используется для версий на iPhone и Winrt, а также Windows CE/Desktop. Это был разработчик на протяжении многих лет, исправлен, протестирован множеством пользователей.
-
тем труднее для хакеров узнать, что делает ваш код, и сломать его. Но не невозможно.
Ответ 2
Я предполагаю, что первая причина, указанная марцином, является основной причиной.
Для моего случая, поскольку было несколько библиотек C++, используемых IPhone, и они не хотят переносить их на java impl, поэтому просто продолжайте использовать их в Android.
Поскольку я разработчик Android, я совершенно не согласен с этим. Из официального документа, как вы подчеркнули:
В общем, вы должны использовать только NDK, если это важно для вашего приложения, - никогда, потому что вы просто предпочитаете программировать на C/C++.
Но, просто сложно подтолкнуть все решение к java... Болезненность в отладке, проблемах при съемке, что-то выходит из-под контроля.