Что такое Android Native Development Kit (NDK)?

Ответы:

93

NDK (Native Development Kit) - это инструмент, позволяющий программировать на C / C ++ для устройств Android. Он предназначен для интеграции с SDK (он описывается как «вспомогательный инструмент») и используется только для критически важных для производительности частей проекта. См. Здесь для получения дополнительной информации.

Тед Хопп
источник
11
@YoushaAleayoub - на устройстве Android код, написанный на Java, выполняется в виртуальной машине Java, системной программе, которая интерпретирует байтовые коды Java. Код, написанный на C / C ++, компилируется в машинные инструкции, которые запускаются непосредственно процессором. Этот последний код называется «родным» кодом, потому что он является «родным» для ЦП. Обратите внимание, что для разных процессоров требуются разные инструкции в машинном коде. Следовательно, когда вы используете NDK, у вас есть возможность сгенерировать код для одного типа оборудования или для широкого диапазона процессоров, все из которых в конечном итоге упакованы в файл .apk для вашего приложения.
Тед Хопп
Итак, если я хочу использовать OpenCV на Android, лучше ли использовать его версию на C ++?
user8663682
@ user8663682 - Я бы рекомендовал использовать версию Android . Он по-прежнему требует использования NDK, но вся работа по раскрытию возможностей приложений Android уже выполнена.
Тед Хопп
56

NDK может улучшить производительность приложений. Обычно это верно для многих приложений с привязкой к процессору. Многие мультимедийные приложения и видеоигры используют собственный код для ресурсоемких задач. Улучшение производительности может быть получено из трех источников. Во-первых, собственный код компилируется в двоичный код и запускается непосредственно в ОС, а код Java транслируется в байт-код Java и интерпретируется виртуальной машиной Dalvik (VM) . В Android 2.2 или выше к Dalvik VM добавляется компилятор Just-In-Time (JIT) для анализа и оптимизации байт-кода Java во время работы программы (например, JIT может скомпилировать часть байт-кода для двоичный код перед его выполнением). Но во многих случаях собственный код по-прежнему работает быстрее, чем код Java.

Код Java выполняется Dalvik VM на Android. Dalvik VM специально разработана для систем с ограниченными аппаратными ресурсами (объем памяти, скорость процессора и т. Д.).

Второй источник повышения производительности в NDK заключается в том, что собственный код позволяет разработчикам использовать некоторые функции процессора, недоступные в Android SDK, такие как NEON, технология Single Instruction Multiple Data (SIMD) , позволяющая обрабатывать несколько элементов данных. в параллели. Одним из конкретных примеров задачи кодирования является преобразование цвета для видеокадра или фотографии. Предположим, мы должны преобразовать фотографию размером 1920x1280 пикселей из цветового пространства RGB в цветовое пространство YCbCr. Наивный подход состоит в применении формулы преобразования к каждому пикселю (то есть более двух миллионов пикселей). С NEON мы можем обрабатывать несколько пикселей одновременно, чтобы сократить время обработки.

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

Недостаток

NDK не может напрямую обращаться к множеству API, доступных в Android SDK, и разработка в NDK всегда будет вносить дополнительную сложность в ваше приложение.

Суджит с
источник
19

Android NDK - это вспомогательный инструмент, используемый только в сочетании с Android SDK, который позволяет разработчикам приложений создавать критически важные для производительности части своих приложений с использованием собственного кода (C / C ++).

Это дает преимущества в виде повторного использования существующего кода и увеличения скорости.

Пожалуйста, пройдите по ссылкам ниже.

Ссылка-1

Ссылка-2

Ссылка-3

Чираг
источник
8

Android NDK является инструментом компаньона для Android SDK , который позволяет строить производительности критически важные части своих приложений в машинном коде. Он предоставляет заголовки и библиотеки, которые позволяют создавать действия, обрабатывать ввод данных пользователем, использовать аппаратные датчики, получать доступ к ресурсам приложения и многое другое при программировании на C или C ++ . Если вы пишете собственный код, ваши приложения по-прежнему упаковываются в файл .apk, и они по-прежнему работают внутри виртуальной машины на устройстве. Основная модель приложения Android не меняется.

Следующие ссылки также отвечают на ваш вопрос:

Что такое НДК?

Когда следует разрабатывать собственный код

NDK Скачать

Как создать приложение NDK

как работать с NDK

10 советов по Android NDK

Хуссейн
источник
3

Android NDK - это набор инструментов, который позволяет вам встраивать компоненты, использующие собственный код, в ваши приложения Android.

Приложения Android запускаются на виртуальной машине Dalvik. NDK позволяет вам реализовывать части ваших приложений с использованием языков с собственным кодом, таких как C и C ++. Это может обеспечить преимущества для определенных классов приложений в виде повторного использования существующего кода и в некоторых случаях увеличения скорости.

Источник: http://developer.android.com/sdk/ndk/overview.html

Android NDK - это дополнительный инструмент к Android SDK, который позволяет создавать критически важные для производительности части ваших приложений в собственном коде. Он предоставляет заголовки и библиотеки, которые позволяют создавать действия, обрабатывать ввод данных пользователем, использовать аппаратные датчики, получать доступ к ресурсам приложения и многое другое при программировании на C или C ++. Если вы пишете собственный код, ваши приложения по-прежнему упаковываются в файл .apk, и они по-прежнему работают внутри виртуальной машины на устройстве. Основная модель приложения Android не меняется.

Источник: http://developer.android.com/sdk/ndk/index.html

Даниэль Кутик
источник
3

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

Танмай суровый
источник
2

NDK - это набор инструментов, который позволяет вам реализовать части вашего приложения с использованием языков с собственным кодом, таких как C и C ++ .... Ознакомьтесь с https://developer.android.com/tools/sdk/ndk/index.html

RNR123
источник
3
Эта деталь уже есть в принятом ответе. Как вы думаете, это должен быть отдельный ответ?
Пареш Майани,
Думаю,
Дакш Гаргас
2

Android NDK (собственный комплект для разработки)

Android Native Development Kit (NDK) - это разработчики для написания кода на C / C ++, который компилируется в собственный код.

Зачем его использовать?

Исходный код компилируется непосредственно в машинный код для ЦП (а не на промежуточный язык, как в случае с Java), тогда разработчики могут получить максимальную производительность.

Как его использовать?

Здесь лучшие уроки

https://developer.android.com/ndk/index.html

https://www.androidauthority.com/android-ndk-everything-need-know-677642/

https://www.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html

Рамеш самбу
источник