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, которое использует такие библиотеки.

Причины использования нативных методов

  1. Получение доступа к специальным возможностям вашего устройства или ОС Android
  2. Получение дополнительной скорости
  3. Получение доступа к большому объему существующего унаследованного кода

Как правило, хорошими примерами использования NDK являются приложения с интенсивным использованием процессора, такие как игровые движки, обработка сигналов и физическое моделирование.

Основным недостатком нативных методов является то, что у вас не будет кроссплатформенных возможностей.

Теперь, если вы не знаете, что такое нативный код, то, вероятно, вам не нужно использовать нативный код. Документация Android NDK объясняет это хорошо:

... вы должны понимать, что NDK не принесет пользы большинству приложений. Как разработчик, вы должны сбалансировать его преимущества с его недостатками. Примечательно, что использование нативного кода на Android обычно не приводит к заметному улучшению производительности, но всегда увеличивает сложность вашего приложения. В общем, вы должны использовать NDK только в том случае, если это необходимо для вашего приложения - никогда, потому что вы просто предпочитаете программировать на C/C++. При рассмотрении вопроса о том, следует ли разрабатывать в собственном коде, подумайте о своих требованиях и посмотрите, предоставляют ли API-интерфейсы платформы Android необходимые вам функции.

Другие вопросы по тегам