Ich kann jede C/C++ - Anwendung kompilieren, Linux-Bibliotheken statisch verknüpfen und auf Android ausführen.Warum war die Notwendigkeit einer Android-ndk dann? Android-ndk beschränkt uns auf bionic, die eine kleine Untergruppe von gnu libc hat Ist es nicht eine bessere Idee, sofort Anwendungen kompilieren und sie über die Android-Shell ausführen zu lassen? Gibt es irgendwelche Einschränkungen bei Cross-Compiling, die ich nicht sehen kann? Diese URL: Can Linux apps be run in Android? beantwortet meine Frage zu einem gewissen Grad, aber schließlich lässt mich verwirrt und ohne Klarheit.Android-Ndk vs Cross-Compile? Beides funktioniert, was brauchte der Android NDK dann?
Antwort
Wie in dem Link http://developer.android.com/sdk/ndk/index.html erwähnt, ist NDK ein Begleiter für die Entwicklung von App-Dateien, um leistungsempfindlichen nativen Code zu erstellen. NDK stellt einige der nativen Implementierungen von Android zur Verfügung, die in den allgemeinen Linux-Umgebungen nicht zu finden sind. Einige von ihnen enthalten die Android/Bitmap, Android/nativeWindow usw. Mit diesen Android-Natives kann die Anwendung CPU-intensive Prozesse wie Komprimierung oder Dekomprimierung von Bildern beschleunigen.
Obwohl die extern kompilierten ausführbaren Dateien unter Android ausgeführt werden können, gibt es keine Garantie dafür, dass die Versionen der Standardbibliotheken dieselben sind. NDK bietet eine einfachere und Android-kompatible Toolchain und andere Ressourcen, mit denen Anwendungsentwickler viel einfacher umgehen können, als einen kompatiblen Cross-Compiler für ihren Anwendungsfall zu finden.
Ich denke, das für Android-NDK
genug ist, das Android NDK ein Begleiter Werkzeug zum Android SDK ist, dass Sie leistungskritische Teile Ihrer Anwendungen in nativen Code ermöglicht zu bauen. Es bietet Header und Bibliotheken, mit denen Sie Aktivitäten erstellen, Benutzereingaben verarbeiten, Hardware-Sensoren 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 sie werden weiterhin auf dem Gerät in einer virtuellen Maschine ausgeführt. Das grundlegende Android-Anwendungsmodell ändert sich nicht.
Das NDK bietet:
Eine Reihe von Tools und bauen verwendeten Dateien native Code-Bibliotheken von C und C++ Quellen erzeugen
Ein Weg, um die entsprechenden nativen Bibliotheken einbetten in eine Anwendung Paketdatei (.apk), die auf Android-Geräten bereitgestellt werden kann
Eine Reihe von nativen System-Header und Bibliotheken, die in allen zukünftigen Versionen der Android-Plattform unterstützt werden, beginnend mit Android 1.5. Anwendungen, die native Aktivitäten verwenden, müssen unter Android 2.3 oder höher ausgeführt werden.
Diese Sache, die Sie nicht in anderer Querübersetzbarkeit mit Arm Werkzeugkette finden ..
Vielen Dank für Ihre Antwort. Nach meinem Verständnis benötigen wir für eine eigenständige Shell-Anwendung u. U. keine ndk und eine Cross-Kompilierung könnte funktionieren, aber für eine Android-Anwendung mit GUI benötigen wir sie möglicherweise, um vorhandenen C/C++ - Code wiederzuverwenden oder um die Leistung zu verbessern. – dhara
- 1. Java JNI vs. Android NDK
- 2. Webflow vs. Angular oder beides?
- 3. NDK-Integration in Android-Studio
- 4. Fehler beim Crosscompile opencv
- 5. Wie funktioniert ndk-gdb unter Android?
- 6. Android Studio + NDK: C++ - Editor funktioniert nicht
- 7. Android Studio NDK Ausgabe
- 8. Design Dokumente vs UML oder beides?
- 9. Crosscompile Python bdist_wininst ausführbare Dateien
- 10. Android NDK #define Probleme
- 11. Verwendung von Android NDK
- 12. Android NDK inkrementelle Build
- 13. Android ndk statische zlib
- 14. Fehler in NDK-build-Befehl auf Terminal (Mac)
- 15. Android ndk verschachtelte Module
- 16. Android NDK Installationsprobleme
- 17. Android NDK schön Drucken
- 18. was ist der unterschied zwischen android ndk r9 legacy tool kette und android ndk r9 auf windows 64
- 19. Android NDK: keine Archivsymboltabelle
- 20. Android NDK Entwicklung
- 21. Android Ndk DuplicateFileException
- 22. Dateioperationen in Android NDK
- 23. Android C++ NDK
- 24. Android NDK ndkbuildFailed
- 25. Android NDK gebrochen enthält
- 26. Android ndk Multitouch?
- 27. Wie funktioniert das NDK-Debugging in Android Studio?
- 28. Eingabepfadbeschränkung für Android ndk Quelldatei
- 29. 'dann' vs 'und-dann' Z3 Kombinator
- 30. Android-Debugging ndk: Berechtigung verweigert
Dank Deepak für Ihre Antwort, die Antwort war helpful.But ich nicht verstanden, was Sie unter "Selbst gemeint obwohl Die extern kompilierten ausführbaren Dateien können in Android ausgeführt werden. Es gibt keine Garantie, dass die Versionen der Standard-Bibliotheksimplementierungen die gleichen sind. "Da die Anwendung statisch verknüpft ist, spielen die Bibliotheksversionen eine Rolle? – dhara
Sieht so aus, als hätte ich diesen statischen Teil nicht gelesen! – Deepak
Ok, ich denke dann ist mein Verständnis ziemlich klar. NDK bietet direkte und bessere/schnellere Schnittstellen als die Verwendung einer gebrauchten Linux-Implementierung. Außerdem ist es für einen Entwickler einfacher, den ndk zu verwenden, um den Cross-Compiler zu finden und zu konfigurieren.Danke, für die tolle Antwort :) – dhara