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