Amaliy qism.
2 - qadam: yangi loyiha yaratish
Yangi Android loyihasini yarating. Kelgusida muammolarga yo'l qo'ymaslik uchun loyihani saqlang, shunda uning yo'lida bo'sh joy belgilari bo'lmasligi kerak. Masalan, loyiha yarating, paket nomi sifatida "com.mamlambo.sample.ndk1" ni va "AndroidNDK1SampleActivity" ni Faoliyat sifatida ko'rsating.
Loyihaning ildizida "jni" nomli papkani yarating. Bu erda mahalliy kodli fayllar bo'ladi. Agar siz JNI bilan yaxshi tanish bo'lsangiz, Android NDK aslida C kodini kompilyatsiya qilish uchun sarlavhali fayllar to'plami cheklangan JNI ekanligini bilishdan mamnun bo'lasiz.
3 - qadam: Android loyihasiga C kodini qo'shing
jni papkasida native.c deb nomlangan fayl yarating va unga quyidagi kodni qo'shing
#include
#include
#include
#define DEBUG_TAG "NDK_AndroidNDK1SampleActivity"
void Java_com_mamlambo_sample_ndk1_AndroidNDK1SampleActivity_helloLog(JNIEnv* env,
jobject this, jstring logThis)
{
jboolean isCopy;
const char* szLogThis=(*env)->GetStringUTFChars(env, logThis,&isCopy);
__android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG,"NDK:LC: [%s]", szLogThis);
(*env)->ReleaseStringUTFChars(env, logThis, szLogThis);
}
Shu tarzda yaratilgan funksiya java ob'ektidan String parametrini oladi, uni C-stringga aylantiradi va LogCat-ga yozadi. Funktsiyaning o'tkir qirrali nomi tasodifan tanlanmagan, u muhim ma'lumotlarni o'z ichiga oladi: birinchi navbatda naqsh nomi ("Java"), keyin paket nomi, sinf nomi va nomi ko'rsatiladi. usul. Ismning har bir qismi pastki chiziq bilan ajratilgan.
Funktsiyaning dastlabki ikkita parametri alohida ma'noga ega. Birinchi parametr JNI muhitini belgilaydi va ko'pincha yordamchi funktsiyalar bilan ishlatiladi. Ikkinchi parametr - bu Java qismi bo'lib, uning funktsiyasi uning bir qismi hisoblanadi.
4 -qadam: Java -dan mahalliy kodni chaqirish
Loyihamizda tugma yarataylik, siz bosganingizda biz quyidagi kodni chaqiramiz:
helloLog("This will log to LogCat via the native call.");
Shuningdek, siz helloLog funktsiyasini chaqiriladigan sinfda e'lon qilishingiz kerak. Buni chiziq yordamida qilishingiz mumkin
private native void helloLog(String logThis);
Shunday qilib, biz kompilyatorga va bog'lovchiga bu funktsiyani bajarilishini mahalliy kodli papkada izlash kerakligini ma'lum qilamiz.
Nihoyat, kutubxonani yuklash kerak, u erda kod oxir -oqibat tuziladi. Faoliyat sinfiga quyidagi boshlang'ichni qo'shing.
static{
System.loadLibrary("ndk1");
}
System.loadLibrary () kutubxonaning nomi bilan yuklanishini ta'minlaydi. Siz har qanday nomdan foydalanishingiz mumkin.
Labarotoriya ishlari uchun topshiriqlar.
1. Belgilangan massivni siz bilgan usulda o'sish tartibida saralaydigan usul yarating.
2. Belgilangan massivni ekranda satrda ko'rsatadigan usul yarating. Yaratilgan usul va oldingi topshiriq usulidan foydalanib, har biri tasodifiy sonlar bilan 10 ta elementdan iborat 5 ta massivni to'ldiring va 5 ta massivni ekranda, har biri alohida satrda aks ettiring.
3. A va b ikkita tamsayıli parametrlarga ega bo'lgan statik usul yarating va [a; b] segmentidan tasodifiy butun sonni uning qiymati sifatida qaytaring. Bu usul yordamida 20 ta butun sonli massivni to'ldiring va uni ekranda aks ettiring.
Do'stlaringiz bilan baham: |