Android ndk против sdk - если функции касаются
Я собираюсь начать разработку приложений для Android.
Из чего стоит НДК? документацию я не смог извлечь следующую информацию:
Действительно ли использование NDK вводит новые функции по сравнению с SDK?
Я заинтересован в этом, потому что использование NDK значительно увеличивает сложность приложения, поэтому, если я не заинтересован в повышении производительности, есть ли другие причины для перехода на NDK?
Я имею в виду, например:
перезапустить телефон
- (Я знаю, что ни SDK, ни NDK не позволяют этого, я просто использую это как пример того, что я имею в виду) Допустим, java SDK не позволяет этого, но некоторые нативные библиотеки делают это - тогда ответ на мой вопрос был бы да, NDK действительно добавляет некоторые функциональные возможности.
Спасибо заранее за любые полезные ответы.
5 ответов
Насколько я знаю, единственные причины использовать NDK - это выжать из вашего приложения дополнительную производительность и приблизиться к "голому металлу". Если вам не нужно делать ни одну из этих вещей, вам, вероятно, следует держаться подальше от NDK.
Также обратите внимание, что Dalvik VM уже имеет довольно удивительную производительность и сравнительно проще.
Вы действительно должны использовать SDK, если у вас нет веских причин использовать NDK. Уважительные причины могут отличаться, но, например, вы можете использовать NDK:
Если вы хотите использовать OpenGL ES 2.0 для Android 2.1 (Eclair), он доступен только через NDK. Поддержка SDK для OpenGL ES 2.0 началась с версии Froyo.
Если вы хотите использовать Renderscript
Если у вас есть большая часть логики вашего приложения, написанная на C/C++
NDK намного более ограничен с точки зрения функциональности.
Что вы получаете от NDK, так это возможность писать свое приложение на C++ и компилировать его в собственный код ARM. Если вам нравится C++ лучше, чем Java, если у вас есть существующее приложение C++, которое вы хотите портировать на Android, или если вам просто нужна дополнительная производительность, которую может предложить только нативный код, то вы обязательно должны использовать NDK.
Я сам этого не делал, но другой альтернативой является написание гибридного приложения, где приложение написано в основном на Java, с выбранными функциями, написанными на C++, которые вызываются из кода Java.
Для меня, я думаю, важно знать NDK, который является мощным инструментом в разработке мобильных приложений. Особенно, если вы хотите разработать мультиплатформенное приложение, NDK непобедим в этой области. Поскольку один и тот же код, написанный на C + + для Android, можно легко перенести и запустить аналогичным образом на iOS, Windows или любой другой платформе без изменения исходного кода. Которые на самом деле экономят много времени при разработке приложений, разработанных для работы на нескольких платформах; как игры и другие классические приложения. То, что вы не можете сделать с SDK.
Нативные методы являются платформо-зависимым кодом. Они обычно пишутся на таких языках, как C или C++ и содержатся в библиотеках (DLL). Можно создать гибридное приложение Java, которое использует такие библиотеки.
Причины использования нативных методов
- Получение доступа к специальным возможностям вашего устройства или ОС Android
- Получение дополнительной скорости
- Получение доступа к большому объему существующего унаследованного кода
Как правило, хорошими примерами использования NDK являются приложения с интенсивным использованием процессора, такие как игровые движки, обработка сигналов и физическое моделирование.
Основным недостатком нативных методов является то, что у вас не будет кроссплатформенных возможностей.
Теперь, если вы не знаете, что такое нативный код, то, вероятно, вам не нужно использовать нативный код. Документация Android NDK объясняет это хорошо:
... вы должны понимать, что NDK не принесет пользы большинству приложений. Как разработчик, вы должны сбалансировать его преимущества с его недостатками. Примечательно, что использование нативного кода на Android обычно не приводит к заметному улучшению производительности, но всегда увеличивает сложность вашего приложения. В общем, вы должны использовать NDK только в том случае, если это необходимо для вашего приложения - никогда, потому что вы просто предпочитаете программировать на C/C++. При рассмотрении вопроса о том, следует ли разрабатывать в собственном коде, подумайте о своих требованиях и посмотрите, предоставляют ли API-интерфейсы платформы Android необходимые вам функции.