Telephony. Messaging. Sending sms messages programmatically


Download 0.56 Mb.
Pdf ko'rish
Sana17.01.2023
Hajmi0.56 Mb.
#1097738
Bog'liq
Ma ruza-14



Android Native development kit 
(NDK). Андроид иловаларида 
С++ тилидан фойдаланиш
Маъруза-14


SDK ва NDK

Google компонияси Android амалиёт тизими учун 
дастурлар ишлаб чиқишда SDK (Software 
Development kit) ва NDK (Native development kit)ни 
таклиф қилади.


SDK бўйича кўплаб мақолалар, китоблар топиш 
мумкин. Google томонидан йўриқнома хам ишлаб 
чиқилган.


NDK бўйича хатто Googleнинг ўзида хам кам 
маълумотлар берилган. NDK бўйича яхши 
китоблардан бири
Cinar O. — Pro Android C++ with 
the NDK – 2012
.

Ушбу мавзуда NDK билан танишиб чиқамиз.


Android NDK нима?

Android NDK (native development kit) – бу 
инструментал воситалар тўплами бўлиб, дастурнинг 
маълум бир қисмини С/С++ каби тилларда ишлаб 
чиқишга имкон беради.
NDK нима учун керак?
Google NDK дан фақат хос холларда фойдаланишни 
маслахат беради

Тезликни ошириш (масалан, катта маълумотларни 
саралаш);

С/С++ да ёзилган функциялардан фойдаланиш. 
Масалан, OpenGL;

Қуйи даражали дастурлашда (масалан, хар хил 
драйверлар ёзиш, ёки қурилмаларни бошқаришда);


Android Software Development Kit 
(Android SDK)


Android Native Development Kit 
(Android NDK)


JNI нима?

Java Native Interface – С/С++ ёки
Assemblerда ёзилган кодни Java виртуал
машинаси
бошқаруви
остида
ишга
тушириш учун стандарт механизм.

Бу ерда функциялар динамик холда
ишлаб чиқилади. Бу ўз навбатида С/С++
да тузилган функцияни Java чақириш
имконини беради ва аксинча.


Преимущества JNI

Основное преимущество перед аналогами (Netscape Java Runtime
Interface или Microsoft’s Raw Native Interface and COM/Java Interface) 
является то что JNI изначально разрабатывался для обеспечения 
двоичной совместимости, для совместимости приложений, 
написанных на JNI, для любых виртуальных машин Java на 
конкретной платформе (когда я говорю о JNI, то я не привязываюсь к 
Dalvik машине, потому как JNI был написан Oracle для JVM который 
подходит для всех Java виртуальных машин). Поэтому 
скомпилированный код на С/С++ будет выполнятся в не зависимости 
от платформы. Более ранние версии не позволяли реализовывать 
двоичную совместимость.
Двоичная совместимость или же бинарная совместимость – вид 
совместимости программ, позволяющий программе работать в 
различных средах без изменения её исполняемых файлов.



Локальные и глобальные ссылки

JNI делит ссылки на три типа: локальные, глобальные и слабые 
глобальные ссылки. Локальные действительны пока не завершиться 
метод. Все Java объекты которые возвращает функции JNI являются 
локальными. Программист должен надеется на то что VM сама 
подчистит все локальные ссылки. Локальные ссылки доступны лишь 
в том потоке в котором были созданы. Однако если есть 
необходимость то их можно освобождать сразу методом JNI 
интерфейса DeleteLocalRef:

jclass clazz;

clazz = (*env)->FindClass(env, "java/lang/String");

//ваш код

(*env)->DeleteLocalRef(env, clazz);



Глобальные ссылки остаются пока они явно не будут освобождены. 
Что бы зарегистрировать глобальную ссылку следует вызвать метод 
NewGlobalRef. Если же глобальная ссылка уже не нужна, то её 
можно удалить методом DeleteGlobalRef:

jclass localClazz;

jclass globalClazz;

localClazz = (*env)->FindClass(env, "java/lang/String");

globalClazz = (*env)->NewGlobalRef(env, localClazz);

//ваш код

(*env)->DeleteLocalRef(env, localClazz);


Обработка ошибок

JNI не проверяет ошибки такие как NullPointerException, 
IllegalArgumentException. Причины:

снижение производительности;

в большинстве функций C библиотек очень и очень трудно 
защитится от ошибок.
JNI позволяет использовать Java Exception. Большинство JNI 
функций возвращают код ошибок а не сам Exception, и поэтому 
приходится обрабатывать сам код, а в Java уже выбрасывать 
Exception. В JNI следует проверять код ошибки вызываемых 
функций и после них следует вызвать ExceptionOccurred(), которая 
в свою очередь возвращает объект ошибки:

jthrowable ExceptionOccurred(JNIEnv *env);


Фойдаланилган адабиётлар

Beginning Android
TM
4 Application Development”, by Wei-
Meng Lee, printed at Radha Offset, Delhi in 2013, pages – 533.
Chapter-10. Networking

“Android
TM
Application Development Cookbook”, by Wei-
Meng Lee, printed at Sharda Offset Press, Delhi in 2013, 
Chapter-6. Network programming

http://www.tutorialspoint.com/android/android_netwo
rk_connection.htm

http://www.tutorialspoint.com/android/android_json_p
arser.htm

Download 0.56 Mb.

Do'stlaringiz bilan baham:




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