Akbarova Mohigul Laboratoriya ishi №26


Android NDK dan qachon foydalanish kerak?


Download 0.55 Mb.
bet9/10
Sana24.01.2023
Hajmi0.55 Mb.
#1116801
1   2   3   4   5   6   7   8   9   10
Bog'liq
612-19 guruh Akbarova Mohigul 6-dedline

Android NDK dan qachon foydalanish kerak?
Odatda, ishlab chiquvchilar ikki holatda mahalliy koddan foydalanishga qaror qilishadi: ular o‘z ilovalarining ish faoliyatini oshirishni xohlashadi yoki ularda Android-ga minimal xarajat bilan ko‘chirilishi kerak bo‘lgan tayyor C / C ++ loyihasi mavjud. Keling, vaqt ajratamiz va NDK dan qachon foydalanish maqsadga muvofiqligini va qachon buni qilish kerak emasligini aniqlaymiz.
Dasturchilar tomonidan eng ko‘p aytilgan fikr NDK dan dastur protsessorni juda ko‘p talab qilganda foydalanish kerak. DalvikVM orqali protsessorni to‘liq yuklash imkonini beruvchi algoritmlar mavjud, bu holda mahalliy koddan foydalanish haqiqatan ham unumdorlikni oshirishga olib keladi. Ammo shuni unutmasligimiz kerakki, JIT kompilyatoridan foydalanish java kodining ishlashini ham yaxshilaydi. Ko‘pchilik dasturda mahalliy koddan foydalanish avtomatik ravishda dastur tezligini oshirishni anglatadi, deb o‘ylaydi. Aslida unday emas. Java kodini ishga tushirishdan mashina kodiga va orqaga o‘tish qo‘shimcha xarajatlar bilan ta'minlanadi, shuning uchun agar siz butunlay C tilida yozilgan uzoq murakkab hisob-kitoblarni amalga oshirayotgan bo‘lsangiz, NDK dan foydalanishga arziydi.
NDK dan foydalanishni rag‘batlantiradigan yana bir sabab - bu tayyor dasturni portga o‘tkazish zarurati. Java-da sinovdan o‘tgan va tuzatilgan kod qismlarini qayta yozish emas, balki NDK-dan foydalanish mantiqan to‘g‘ri. Ushbu yondashuv, shuningdek, kelajakda ko‘p xarajat qilmasdan, original va Android ilovasiga ko‘chirilgan parallel o‘zgarishlarni amalga oshirishga imkon beradi. Xususan, ushbu yondashuv foydalanadigan ilovalarga nisbatan oqlanadi


Laboratoriyaning amaliy qismi.
OpenGL ES. 1-qadam: Android NDK-ni o‘rnating va ishlab chiqish muhitini sozlang

Avvalo, siz yuklab olishingiz kerakAndroid NDK. To‘g‘ri o‘rnatish va ishga tushirish uchun bizga Cygwin 1.7 yoki undan keyingi versiyalari, eng so‘nggi awk va GNU Make 3.81 yoki undan keyingi versiyalari kerak bo‘ladi.

NDK arxivini yuklab olgandan so‘ng, uni papkaga oching. Siz ushbu arxivni Android SDK joylashgan joyga ochishingiz mumkin. Ushbu jildga yo‘l PATH tizim o‘zgaruvchisida ko‘rsatilishi kerak. Windows tizimida buning uchun Cygwin konfiguratsiyasini o‘rnatgan ma'qul.2-qadam: Yangi loyiha yarating
Yangi Android loyihasini yarating. Kelajakda muammolarni oldini olish uchun loyihani unga boradigan yo‘lda bo‘sh joy bo‘lmasligi uchun saqlang. Misol sifatida, loyiha yarating, paket nomini "com.mamlambo.sample.ndk1" va Faoliyatni "AndroidNDK1SampleActivity" ga o‘rnating.

Loyihaning ildizida "jni" nomli papka yarating. Bu erda mahalliy kodli fayllar saqlanadi. Agar siz JNI bilan tanish bo‘lsangiz, Android NDK aslida C kodini kompilyatsiya qilish uchun cheklangan sarlavhali fayllar to‘plamiga ega JNI ekanligini bilishdan mamnun bo‘lasiz.


3-qadam: Android loyihasiga C kodini qo‘shish


jni jildida native.c nomli fayl yarating va unga quyidagi kodni qo‘shing
#o‘z ichiga
#include
#include


#define DEBUG_TAG "NDK_AndroidNDK1SampleActivity"

void Java_com_mamlambo_sample_ndk1_AndroidNDK1SampleActivity_helloLog(JNIEnv* env,


jobject this, jstring logThis)
{
jboolean isCopy;
constchar* szLogThis=(*env)->GetStringUTFChars(env, logThis,&isCopy);

__android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [%s]", szLogThis);


(*env)->ReleaseStringUTFChars(env, logThis, szLogThis);


}

Funktsiyaning dastlabki ikkita parametri alohida ma'noga ega. Birinchi parametr JNI muhitini belgilaydi va ko‘pincha yordamchi funktsiyalar bilan ishlatiladi. Ikkinchi parametr funksiya qismi bo‘lgan Java ob'ektidir.


helloLog("Bu mahalliy qo‘ng‘iroq orqali LogCat-ga kiradi.");

Shuningdek, helloLog funktsiyasini u chaqirilgan sinfda e'lon qilishingiz kerak. Buni chiziq bilan qilishingiz mumkin
xususiymahalliy void helloLog(String logThis);

Shunday qilib, biz kompilyator va bog‘lovchiga ushbu funktsiyani amalga oshirishni mahalliy kodli papkada izlash kerakligini ma'lum qilamiz.



Nihoyat, kod oxir-oqibat kompilyatsiya qilinadigan kutubxonani yuklashimiz kerak. Faoliyat sinfiga quyidagi ishga tushirishni qo‘shing.
statik{
System.loadLibrary("ndk1");
}
System.loadLibrary() kutubxona nomi bilan yuklanishini ta'minlaydi. Siz har qanday nomdan foydalanishingiz mumkin.

Download 0.55 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling