android-ndk Handledning
Komma igång med Android-ndk
Sök…
Anmärkningar
Vad är Android NDK?
Android Native Development Kit (NDK) är ett följeslagningsverktyg till Android SDK som gör att delar av appar kan byggas in i C / C ++. Detta är användbart för:
- Dela applikationskomponenter över plattformar (Android, iOS, Linux osv.)
- Förbättra prestanda för kritiska delar
- Återanvända befintliga C / C ++ -bibliotek
NDK tillhandahåller rubriker och bibliotek som gör det möjligt för utvecklaren att bygga aktiviteter, hantera användarinmatning, använda hårdvarusensorer, få åtkomst till applikationsresurser och mer - allt under programmering i C / C ++.
versioner
Komma igång med Android NDK med ett enkelt exempel
Med Android Studio 2.2 och högre NDK (Native Development Kit) kan du använda för att sammanställa C- och C ++ -kod.
Du kan använda NDK genom att manuellt ladda ner NDK och bygga det eller genom CMake.
Här kommer jag att ge processflöde för manuell installation av NDK och en exempelkod,
Baserat på ditt system OS kan du ladda ner NDK från den här platsen https://developer.android.com/ndk/downloads/index.html .
Efter nedladdning, ge sökvägen i Systemmiljövariabel som variabelnamn " NDK_PROJECT_PATH " och variabelt värde "plats för NDK lagrad sökväg".
Nästa, för att integrera NDK med Android Studio, efter att ha skapat ett nytt Android-projekt,
I gradle - lokala egenskaper lägg till plats för SDK-sökvägen som
sdk.dir=F\:\\gowtham\\Android\\sdkoch
android.useDeprecatedNdk = true
Tryck sedan på Build - Make Project (Ctrl + f9).
Ditt projekt kommer att byggas framgångsrikt och kommer att få BUILD SUCCESFUL i meddelandegradering, som visas nedan
Sedan i Terminal innehåller den initialt projektets väg
Lägg till cd app/src/main
Vägen kommer att sträcka sig från projektväg till huvud.
Därefter igen Build - Make Project (Ctrl + f9).
Nu hittar du under app-build – intermediates – classes – debug folder, som visas nedan.
Skapa nu en ny Java Class-fil under en app / src / main / java. Här skapade jag java-fil med namnet NativeClass
Skriv en enkel anropsfunktion med funktionsnamn och inmatning för funktionen, här skrev jag funktionen som exempel och gav två heltalsinmatningar till den,
Bygg igen projektet (Ctrl + f9) ,
När du bygger hittar du klassfilen som skapats under build som denna,
Then,in terminal
`-Javah -d jni –classpath ../../build/intermediates/classes/debug`application.com.ndkapplication.NativeClass
där, - d - för utgångskatalog - jni -Generera rubrikfil för JNI-stil (standard) - klassbana - för vilka klasser ska laddas
Bygg nu projektet (Ctrl + f9), du hittar jni- mappen skapad och en rubrikfil skapas med namnet du angav i terminalen innan som visas nedan
Kopiera nu rubrikfil och spara som .cpp- eller .c- fil med samma namn på rubrikfil i mappen jni.
Jag skapade en cpp-fil som visas nedan
Delete everything before **JNIEXPORT line** in this file and **add header file name** alone.
Here I am for simple example just adding two numbers and returning value to android java.
Application_com_ndkapplication_NativeClass.cpp
#include <application_com_ndkapplication_NativeClass.h>
JNIEXPORT jint JNICALL Java_application_com_ndkapplication_NativeClass_example
(JNIEnv *, jclass , jint as , jint bs){
return (as + bs);
}
Och för detta exempel behöver du inte lägga till någon funktion i dess rubrikfil.
Skapa en ny fil med namnet Android.mk och Application.mk i mappen Jni
Android.mk-filen är att beskriva dina källor till build-systemet.
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := application_com_ndkapplication_NativeClass.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := exp-jni
include $(BUILD_SHARED_LIBRARY)
för att veta detaljer om den här filen läs från denna länk https://developer.android.com/ndk/guides/android_mk.html
Application.mk som beskriver de ursprungliga modulerna som din app kräver.
Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti –fexceptions
APP_ABI := armeabi-v7a armeabi arm64-v8a mips mips64 x86 x86_64
APP_PLATFORM := android-16
för att veta detaljer om den här filen läs från denna länk https://developer.android.com/ndk/guides/application_mk.html
Now build the project again **(Ctrl + f9)**, you will find the **armeabi-v7a, armeabi, arm64-v8a ,mips, mips64, x86 and x86_64** folder created inside jniLibs.
Sedan, i huvudsaklig aktivitet passera inmatningen och få utdata för infödda klassfil.
int a = 5, b = 5, res ;
res = NativeClass.example(((int) a),((int) b));
TextView textView = (TextView) this.findViewById(R.id.tv);
textView.setText(new Integer(res).toString());
här gav jag två heltal som matats in via a, b och får utdata från variabel res.
Och erhållen utgång visas på skärmen genom att gå till TextView.
Och glöm inte att lägga till biblioteket som du angav i Android.mk-filen som LOCAL_MODULE så här,
static {
System.loadLibrary("exp-jni");
}
Bygg slutligen projektet igen (Ctrl + f9), hittar du .so-filer som skapats under varje mapp armeabi-v7a, armeabi, arm64-v8a, mips, mips64, x86 och x86_64.
Kör nu applikationen, du kommer att få output för detta exempel som 10.
Detta är ett grundläggande program för NDK-nybörjare, OpenCV-bibliotek kan importeras här och du kan också göra bildbehandlingsapplikationer.










