Eelmises osas valmistasime Eclipse projekti ette native koodi lisamiseks. Asume siis nüüd kõige põnevama juurde.
Lisa klass NativeCodeInterface samasse kohta, kus asub MainActivity.java.
package ee.infokiir.androidndkdemo; public class NativeCodeInterface { static { System.loadLibrary("NativeCode"); } public native int get_int(int param); public native String get_string(); }
Avame käsurea ja käivitame:
cd C:\Users\tiit\workspace-android\AndroidNdkDemo\bin\classes
"C:\Program Files\Java\jdk1.8.0_25\bin\javah.exe" -jni ee.infokiir.androidndkdemo.NativeCodeInterface

Tee kaust jni ja tõsta vastloodud .h fail sinna.
Käsurealt käib see nii:
mkdir ..\..\jni
move *.h ..\..\jni

Värskenda failide nimekirja F5 klahviga.

Lisa fail NativeCode.C
#include "ee_infokiir_androidndkdemo_NativeCodeInterface.h"
JNIEXPORT jint JNICALL Java_ee_infokiir_androidndkdemo_NativeCodeInterface_get_1int
(JNIEnv *, jobject, jint)
{
int result = param + 1;
return result;
}
JNIEXPORT jstring JNICALL Java_ee_infokiir_androidndkdemo_NativeCodeInterface_get_1string
(JNIEnv *, jobject)
{
return (*jenv)->NewStringUTF(jenv, "String from native code");
}
Lisa fail Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NativeCode
LOCAL_SRC_FILES := NativeCode.c
include $(BUILD_SHARED_LIBRARY)

Nüüd konverteeri projekt: File->New->Other


Pane paika NDK asukoht. See on oluline Debuggeri töölesaamiseks.
C:\ProgramData\Microsoft\AndroidNDK\android-ndk-r10d
Pane paika build käsklus:
C:\ProgramData\Microsoft\AndroidNDK\android-ndk-r10d\ndk-build.cmd NDK_DEBUG=1
Kui soovime deguggerit kasutada, siis on vajalik lisada lõppu NDK_DEBUG=1.

Võtmame linnukese „Clean“ eest.

Lisa include teekond: C:\ProgramData\Microsoft\AndroidNDK\android-ndk-r10d\platforms\android-21\arch-arm\usr\include

Lisa faili MainActivity.java klassi algusesse rida:
NativeCodeInterface NativeCode = new NativeCodeInterface();
Muuda funktsioone:
public void btnGetStringClick(View view) { TextView tv = (TextView) findViewById(R.id.textView1); //tv.setText("Get string clicked"); String nativeCodeStr = NativeCode.get_string(); tv.setText(nativeCodeStr); } public void btnGetIntClick(View view) { TextView tv = (TextView) findViewById(R.id.textView1); //tv.setText("Get int clicked"); int result = NativeCode.get_int(123); String resultString = "GetInt result:"+result; tv.setText(resultString); }
Nüüd võid käivitada ja vaadata, kas töötab.
Proovi ka debuggerit valides Debug As -> Android Native Application.
Mõnikord ilmub viga:
Unknown Application ABI:
Sellisel juhul muuda failis /AndroidNdkDemo/AndroidManifest.xml minSdkVersion="8" asemel minSdkVersion="21":
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="21" />
Proovi ka seada breakpoint failis NativeCode.C reale nr 5:
int result = param + 1;
Vajuta F5 või F6. Nüüd on näha, kuidas muutuja result sai endale õige väärtuse.

Sellega on siis peaaegu kõik. Järgmises osas vaatame veel, kuidas kasutada Visual Studio Android emulaator-t ning kuidas tööd veidi mugavamaks teha.
Vahepeal on Android Studio 1.3 preview saanud hea NDK toe. Edaspidi vaatame ehk ka seda, mida sellega teha saab.