Was ist das Android Native Development Kit (NDK)?

Antworten:

93

Das NDK (Native Development Kit) ist ein Tool, mit dem Sie in C / C ++ für Android-Geräte programmieren können. Es soll in das SDK integriert werden (es wird als "Begleittool" bezeichnet) und nur für leistungskritische Teile eines Projekts verwendet. Sehen Sie hier für weitere Informationen.

Ted Hopp
quelle
11
@YoushaAleayoub - Auf einem Android-Gerät wird in Java geschriebener Code in der Java Virtual Machine ausgeführt, einem vom System bereitgestellten Programm, das Java-Bytecodes interpretiert. In C / C ++ geschriebener Code wird in Maschinenanweisungen kompiliert, die direkt von der CPU ausgeführt werden. Dieser letztere Code wird als "nativer" Code bezeichnet, da er in der CPU nativ ist. Beachten Sie, dass unterschiedliche CPUs unterschiedliche Anweisungen für nativen Code erfordern. Wenn Sie das NDK verwenden, haben Sie daher die Möglichkeit, Code für einen einzelnen Hardwaretyp oder für eine Vielzahl von CPUs zu generieren, die alle in der APK-Datei für Ihre Anwendung enthalten sind.
Ted Hopp
Wenn ich OpenCV unter Android verwenden möchte, ist es dann besser, die C ++ - Version davon zu verwenden?
user8663682
@ user8663682 - Ich würde empfehlen, die Android-Version zu verwenden . Es erfordert weiterhin die Verwendung von NDK, aber die gesamte Arbeit, die Funktionen für Android-Apps verfügbar zu machen, wurde bereits durchgeführt.
Ted Hopp
56

NDK kann die Anwendungsleistung verbessern. Dies gilt normalerweise für viele prozessorgebundene Anwendungen. Viele Multimedia-Anwendungen und Videospiele verwenden nativen Code für prozessorintensive Aufgaben. Die Leistungsverbesserungen können aus drei Quellen stammen. Zunächst wird der native Code zu einem Binärcode kompiliert und direkt unter dem Betriebssystem ausgeführt, während Java-Code in Java-Bytecode übersetzt und von Dalvik Virtual Machine (VM) interpretiert wird . Ab Android 2.2 wird Dalvik VM ein Just-In-Time- Compiler (JIT) hinzugefügt, um den Java-Bytecode zu analysieren und zu optimieren, während das Programm ausgeführt wird (z. B. kann JIT einen Teil des Bytecodes kompilieren Binärcode vor seiner Ausführung). In vielen Fällen wird nativer Code jedoch immer noch schneller ausgeführt als Java-Code.

Java-Code wird von Dalvik VM auf Android ausgeführt. Dalvik VM wurde speziell für Systeme mit eingeschränkten Hardwareressourcen (Speicherplatz, Prozessorgeschwindigkeit usw.) entwickelt.

Die zweite Quelle für Leistungsverbesserungen bei NDK ist, dass Entwickler mit nativem Code einige Prozessorfunktionen nutzen können, auf die im Android SDK nicht zugegriffen werden kann, z. B. NEON, eine SIMD- Technologie (Single Instruction Multiple Data) , mit der mehrere Datenelemente verarbeitet werden können parallel zu. Ein spezielles Beispiel für eine Codierungsaufgabe ist die Farbkonvertierung für einen Videorahmen oder ein Foto. Angenommen, wir konvertieren ein Foto mit 1920 x 1280 Pixel aus dem RGB-Farbraum in den YCbCr-Farbraum. Der naive Ansatz besteht darin, auf jedes Pixel (dh über zwei Millionen Pixel) eine Konvertierungsformel anzuwenden. Mit NEON können wir mehrere Pixel gleichzeitig verarbeiten, um die Verarbeitungszeit zu verkürzen.

Der dritte Aspekt ist, dass wir den kritischen Code auf Baugruppenebene optimieren können, was in der Desktop-Softwareentwicklung üblich ist.

Nachteil

NDK kann nicht direkt auf viele im Android SDK verfügbare APIs zugreifen, und die Entwicklung in NDK führt immer zu einer zusätzlichen Komplexität Ihrer Anwendung.

sujith s
quelle
19

Das Android NDK ist ein Begleittool, das nur in Verbindung mit dem Android SDK verwendet wird und es Anwendungsentwicklern ermöglicht, leistungskritische Teile ihrer Apps mithilfe von nativem (C / C ++) Code zu erstellen.

Dies bietet Vorteile in Form der Wiederverwendung von vorhandenem Code und einer höheren Geschwindigkeit.

Bitte gehen Sie durch die folgenden Links.

Link-1

Link-2

Link-3

Chirag
quelle
8

Das Android NDK ist ein Begleittool zum Android SDK , mit dem Sie leistungskritische Teile Ihrer Apps in nativem Code erstellen können. Es bietet Header und Bibliotheken , mit denen Sie Aktivitäten erstellen, Benutzereingaben verarbeiten, Hardwaresensoren verwenden, auf Anwendungsressourcen zugreifen und vieles mehr, wenn Sie in C oder C ++ programmieren . Wenn Sie nativen Code schreiben, werden Ihre Anwendungen weiterhin in eine APK-Datei gepackt und in einer virtuellen Maschine auf dem Gerät ausgeführt. Das grundlegende Android-Anwendungsmodell ändert sich nicht.

Die folgenden Links beantworten auch Ihre Frage:

Was ist NDK?

Wann in nativem Code zu entwickeln ist

NDK herunterladen

So erstellen Sie eine NDK-App

wie man mit NDK arbeitet

10 Tipps für Android NDK

Hussain
quelle
3

Das Android NDK ist ein Toolset, mit dem Sie Komponenten einbetten können, die nativen Code in Ihre Android-Anwendungen verwenden.

Android-Anwendungen werden in der virtuellen Dalvik-Maschine ausgeführt. Mit dem NDK können Sie Teile Ihrer Anwendungen mit systemeigenen Codesprachen wie C und C ++ implementieren. Dies kann bestimmten Anwendungsklassen Vorteile in Form der Wiederverwendung vorhandenen Codes und in einigen Fällen einer höheren Geschwindigkeit bieten.

Quelle: http://developer.android.com/sdk/ndk/overview.html

Das Android NDK ist ein Begleittool zum Android SDK, mit dem Sie leistungskritische Teile Ihrer Apps in nativem Code erstellen können. Es bietet Header und Bibliotheken, mit denen Sie beim Programmieren in C oder C ++ Aktivitäten erstellen, Benutzereingaben verarbeiten, Hardwaresensoren verwenden, auf Anwendungsressourcen zugreifen und vieles mehr können. Wenn Sie nativen Code schreiben, werden Ihre Anwendungen weiterhin in eine APK-Datei gepackt und in einer virtuellen Maschine auf dem Gerät ausgeführt. Das grundlegende Android-Anwendungsmodell ändert sich nicht.

Quelle: http://developer.android.com/sdk/ndk/index.html

Daniel Kutik
quelle
3

NDK ist nur eine Reihe von Tools, mit denen Sie C / C ++ - Codes für Ihre Anwendung schreiben können. Angenommen, Sie möchten Ihrer App eine wichtige Funktion hinzufügen und sie in C / C ++ schreiben und dann in Eclipse oder eine andere Form umwandeln Mit IDE können Sie Ihr C / C ++ nicht schreiben. In diesem Fall müssen Sie NDK verwenden und in Ihre App integrieren.

Tanmay hart
quelle
2

NDK ist ein Toolset, mit dem Sie Teile Ihrer App in systemeigenen Codesprachen wie C und C ++ implementieren können. Überprüfen Sie diese https://developer.android.com/tools/sdk/ndk/index.html

RNR123
quelle
3
Dieses Detail ist bereits in der akzeptierten Antwort enthalten. Wie sollte es Ihrer Meinung nach eine separate Antwort sein?
Paresh Mayani
Ich denke, ich versuche mehr Punkte zu erzielen :)
Daksh Gargas
2

Android NDK (natives Entwicklungskit)

Mit Android Native Development Kit (NDK) können Entwickler Code in C / C ++ schreiben, der zu nativem Code kompiliert wird

Warum sollte man es benutzen?

Der Quellcode wird direkt in Maschinencode für die CPU kompiliert (und nicht in eine Zwischensprache wie bei Java), damit Entwickler die beste Leistung erzielen können

Wie kann man es benutzen?

Hier die besten Tutorials

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
quelle