Co to jest Android Native Development Kit (NDK)?

Odpowiedzi:

93

NDK (Native Development Kit) to narzędzie umożliwiające programowanie w języku C / C ++ na urządzenia z systemem Android. Jest przeznaczony do integracji z SDK (jest opisywany jako „narzędzie towarzyszące”) i jest używany tylko w przypadku części projektu o krytycznym znaczeniu dla wydajności. Więcej informacji znajdziesz tutaj .

Ted Hopp
źródło
11
@YoushaAleayoub - na urządzeniu z Androidem kod napisany w języku Java działa w Java Virtual Machine, programie systemowym, który interpretuje kody bajtów Java. Kod napisany w C / C ++ jest kompilowany do instrukcji maszynowych uruchamianych bezpośrednio przez procesor. Ten ostatni kod nazywany jest kodem „rodzimym”, ponieważ jest rodzimy dla procesora. Należy pamiętać, że różne procesory wymagają różnych instrukcji kodu natywnego. W związku z tym, gdy używasz NDK, masz możliwość wygenerowania kodu dla jednego typu sprzętu lub dla szerokiej gamy procesorów, z których wszystkie są pakowane w plik .apk dla twojej aplikacji.
Ted Hopp
Jeśli więc chcę używać OpenCV na Androidzie, czy lepiej jest użyć wersji C ++?
user8663682
@ user8663682 - Polecam korzystanie z wersji na Androida . Nadal wymaga użycia NDK, ale cała praca nad udostępnieniem możliwości aplikacjom na Androida została już wykonana.
Ted Hopp
56

NDK może poprawić wydajność aplikacji. Zwykle dotyczy to wielu aplikacji związanych z procesorem. Wiele aplikacji multimedialnych i gier wideo używa natywnego kodu do zadań intensywnie wykorzystujących procesor. Poprawa wydajności może pochodzić z trzech źródeł. Po pierwsze, kod natywny jest kompilowany do kodu binarnego i uruchamiany bezpośrednio w systemie operacyjnym, podczas gdy kod Java jest tłumaczony na kod bajtowy Java i interpretowany przez maszynę wirtualną Dalvik (VM) . W systemie Android 2.2 lub nowszym kompilator Just-In-Time (JIT) jest dodawany do maszyny wirtualnej Dalvik w celu analizy i optymalizacji kodu bajtowego Java podczas działania programu (na przykład JIT może skompilować część kodu bajtowego do kod binarny przed jego wykonaniem). Jednak w wielu przypadkach kod natywny nadal działa szybciej niż kod Java.

Kod Java jest uruchamiany przez maszynę wirtualną Dalvik na Androida. Dalvik VM jest specjalnie zaprojektowany dla systemów z ograniczonymi zasobami sprzętowymi (przestrzeń pamięci, szybkość procesora itp.).

Drugim źródłem ulepszeń wydajności w NDK jest to, że kod natywny umożliwia programistom korzystanie z niektórych funkcji procesora, które nie są dostępne w Android SDK, takich jak NEON, technologia Single Instruction Multiple Data (SIMD) , umożliwiająca przetwarzanie wielu elementów danych równolegle. Jednym z przykładów zadania kodowania jest konwersja kolorów klatki wideo lub zdjęcia. Załóżmy, że mamy przekonwertować zdjęcie 1920x1280 pikseli z przestrzeni kolorów RGB na przestrzeń kolorów YCbCr. Naiwnym podejściem jest zastosowanie formuły konwersji do każdego piksela (czyli ponad dwóch milionów pikseli). Dzięki NEONowi możemy jednocześnie przetwarzać wiele pikseli, aby skrócić czas przetwarzania.

Trzeci aspekt polega na tym, że możemy zoptymalizować krytyczny kod na poziomie zespołu, co jest powszechną praktyką w tworzeniu oprogramowania komputerowego.

Niekorzyść

NDK nie ma bezpośredniego dostępu do wielu interfejsów API dostępnych w Android SDK, a programowanie w NDK zawsze wprowadzi dodatkową złożoność do Twojej aplikacji.

sujith s
źródło
19

Android NDK to narzędzie towarzyszące używane tylko w połączeniu z Android SDK, które umożliwia programistom aplikacji tworzenie fragmentów aplikacji o krytycznym znaczeniu dla wydajności przy użyciu kodu natywnego (C / C ++).

Zapewnia to korzyści w postaci ponownego wykorzystania istniejącego kodu i zwiększonej szybkości.

Przejdź przez poniższe linki.

Link-1

Link-2

Link-3

Chirag
źródło
8

Android NDK jest narzędziem towarzysz do Android SDK , który pozwala budować wydajności krytycznych części swoich aplikacji w natywnym kodzie. Udostępnia nagłówki i biblioteki, które umożliwiają tworzenie działań, obsługę danych wejściowych użytkownika, używanie czujników sprzętowych, dostęp do zasobów aplikacji i nie tylko, podczas programowania w C lub C ++ . Jeśli piszesz kod natywny, Twoje aplikacje są nadal spakowane do pliku .apk i nadal działają wewnątrz maszyny wirtualnej na urządzeniu. Podstawowy model aplikacji na Androida się nie zmienia.

Poniższe linki również odpowiadają na Twoje pytanie:

Co to jest NDK?

Kiedy programować w kodzie natywnym

Pobieranie NDK

Jak zbudować aplikację NDK

jak pracować z NDK

10 wskazówek dotyczących Androida NDK

Hussain
źródło
3

Android NDK to zestaw narzędzi, który umożliwia osadzanie komponentów korzystających z kodu natywnego w aplikacjach na Androida.

Aplikacje na Androida działają na maszynie wirtualnej Dalvik. NDK umożliwia implementowanie części aplikacji przy użyciu języków z kodem natywnym, takich jak C i C ++. Może to przynieść korzyści niektórym klasom aplikacji w postaci ponownego wykorzystania istniejącego kodu, aw niektórych przypadkach zwiększonej szybkości.

Źródło: http://developer.android.com/sdk/ndk/overview.html

Android NDK to narzędzie towarzyszące Android SDK, które umożliwia tworzenie krytycznych dla wydajności części aplikacji w kodzie natywnym. Udostępnia nagłówki i biblioteki, które umożliwiają tworzenie działań, obsługę danych wejściowych użytkownika, używanie czujników sprzętowych, dostęp do zasobów aplikacji i nie tylko, podczas programowania w C lub C ++. Jeśli piszesz kod natywny, Twoje aplikacje są nadal spakowane do pliku .apk i nadal działają wewnątrz maszyny wirtualnej na urządzeniu. Podstawowy model aplikacji na Androida się nie zmienia.

Źródło: http://developer.android.com/sdk/ndk/index.html

Daniel Kutik
źródło
3

NDK to po prostu zestaw narzędzi, który pozwala pisać kody C / C ++ dla Twojej aplikacji, na przykład załóżmy, że chcesz dodać krytyczną funkcję / wydajność do swojej aplikacji i chcesz napisać ją w C / C ++, a następnie zaćmienie lub jakikolwiek inny IDE nie pozwoli ci napisać twojego C / C ++ iw takim przypadku musisz użyć NDK i zintegrować go ze swoją aplikacją.

Tanmay ostry
źródło
2

NDK to zestaw narzędzi, który umożliwia implementację części aplikacji przy użyciu języków z natywnym kodem, takich jak C i C ++ .... Sprawdź to https://developer.android.com/tools/sdk/ndk/index.html

RNR123
źródło
3
Ten szczegół jest już w zaakceptowanej odpowiedzi. Jak myślisz, jak powinna to być oddzielna odpowiedź?
Paresh Mayani
Chyba
próbuję
2

Android NDK (natywny zestaw deweloperski)

Android Native Development Kit (NDK) to programiści do pisania kodu w C / C ++, który kompiluje się do kodu natywnego

Po co go używać?

Kod źródłowy jest kompilowany bezpośrednio do kodu maszynowego procesora (a nie do języka pośredniego, jak w przypadku Javy), a następnie programiści mogą uzyskać najlepszą wydajność

Jak można tego używać?

Tutaj najlepsze tutoriale

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

Ramesh sambu
źródło