android-ndk Tutorial
Iniziare con Android-ndk
Ricerca…
Osservazioni
Cos'è l'NDK di Android?
Android Native Development Kit (NDK) è uno strumento complementare per Android SDK che consente di integrare porzioni di app in C / C ++. Questo è utile per:
- Condivisione dei componenti delle applicazioni su più piattaforme (Android, iOS, Linux, ecc.)
- Miglioramento delle prestazioni per le parti critiche
- Riutilizzare le librerie C / C ++ esistenti
NDK fornisce intestazioni e librerie che consentono allo sviluppatore di creare attività, gestire l'input dell'utente, utilizzare sensori hardware, accedere alle risorse dell'applicazione e altro ancora: tutto durante la programmazione in C / C ++.
Versioni
Iniziare con Android NDK con un semplice esempio
Utilizzando Android Studio 2.2 e superiore Native Development Kit (NDK) è possibile utilizzare per compilare codice C e C ++.
Puoi utilizzare NDK scaricando manualmente NDK e costruilo o tramite CMake.
Qui fornirò il flusso di processo per l'installazione manuale di NDK e un codice di esempio,
In base al sistema operativo del sistema, è possibile scaricare NDK da questa posizione https://developer.android.com/ndk/downloads/index.html .
Dopo il download, fornire il percorso nella variabile di ambiente di sistema come nome variabile " NDK_PROJECT_PATH " e il valore variabile "percorso del percorso memorizzato NDK".
Successivamente, per integrare NDK con Android Studio, dopo aver creato un nuovo progetto Android,
In gradle - le proprietà locali aggiungono la posizione del percorso sdk come
sdk.dir=F\:\\gowtham\\Android\\sdke
android.useDeprecatedNdk = true
Quindi, premi Costruisci - Crea progetto (Ctrl + f9).
Il tuo progetto sarà costruito con successo e riceverà BUILD SUCCESFUL nel messaggio gradle build, come mostrato di seguito
Quindi in Terminal, inizialmente conterrà il percorso del progetto
Vi aggiungo cd app/src/main
Il percorso si estenderà dal percorso del progetto al principale.
Quindi, ancora Build - Crea progetto (Ctrl + f9).
Ora troverai sotto la cartella app-build-intermediate-intermediate-classes-debug , come mostrato sotto.
Ora crea un nuovo file di classe Java sotto un'app / src / main / java, qui ho creato il file java denominato NativeClass
Scrivi una semplice funzione di chiamata con il nome della funzione e l'input per la funzione, Qui ho scritto la funzione come esempio e gli ho dato due interi,
Costruisci di nuovo il progetto (Ctrl + F9) ,
Quando costruisci, troverai il file di classe creato sotto build come questo,
Then,in terminal
`-Javah -d jni –classpath ../../build/intermediates/classes/debug`application.com.ndkapplication.NativeClass
dove, - d - per la directory di output - jni -Generate File di intestazione in stile JNI (predefinito) - classpath - per il quale caricare le classi
Ora crea il progetto (Ctrl + f9), troverai la cartella jni creata e un file di intestazione verrà creato con il nome che hai specificato nel terminale, come mostrato sotto
Ora copia il file di intestazione e salva come file .cpp o .c con lo stesso nome del file di intestazione nella cartella jni.
Ho creato un file cpp come mostrato di seguito
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);
}
E per questo esempio non è necessario aggiungere alcuna funzione nel suo file di intestazione.
Crea un nuovo file denominato Android.mk e Application.mk nella cartella Jni
Il file Android.mk descrive i tuoi sorgenti nel sistema di generazione.
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)
per conoscere i dettagli di questo file leggere da questo link https://developer.android.com/ndk/guides/android_mk.html
Application.mk che descrive i moduli nativi richiesti dalla tua app.
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
per conoscere i dettagli di questo file leggere da questo link 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.
Quindi, nell'attività principale passare l'input e ottenere l'output per il file di classe nativo.
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());
qui ho dato due interi input attraverso a, b e ottenuto l'output dalla variabile res.
E l'output ottenuto viene visualizzato sullo schermo passando a TextView.
E non dimenticare di aggiungere la libreria che hai specificato nel file Android.mk come LOCAL_MODULE come questo,
static {
System.loadLibrary("exp-jni");
}
Infine ricostruisci il progetto (Ctrl + F9), troverai i file .so creati sotto ogni cartella armeabi-v7a, armeabi, arm64-v8a, mips, mips64, x86 e x86_64.
Quindi ora esegui l'applicazione, riceverai output per questo esempio come 10.
Questo è un programma di base per principianti NDK, la libreria OpenCV può essere importata qui e puoi anche fare applicazioni di elaborazione delle immagini.










