Код @ C Как да напиша C програма за 4 без Java

Не само в C++. Нови технологии, процеси и Agile.

Как да напиша C++ програма за Android. Част 4: Без Java.

В тази част няма да пишем на Java. Нека напишем програма за Android, използвайки само C++. Ще бъде лесно. Нуждаем се от поддръжка за функциите на NDK, които бяха въведени само в Android 2.3. Затова първо трябва да инсталирате SDK с поддръжка за Android 2.3:

програма

След това създаваме проекта, както е описано във втората част. Само Build Target вече имаме Android 2.3 и махнете отметката от елемента Create Activity, тъй като този път се съгласихме да направим без Java:

java

Накрая не забравяйте да извикате Add Native Support (щракнете с десния бутон върху проекта, след което изпада меню, в което избираме Android Tools > Add Native Support). В резултат на това получаваме почти празен проект, но той вече има AndroidManifest.xml, който трябва да бъде коригиран в съответствие със следния пример:

Вместо дейността, която създадохме в предишните примери, ние указваме NativeActivity, вградена в NDK. Внедряването му е в библиотеката android_native_app_glue, която трябва да бъде свързана. За да направите това, променяме Android.mk, като в същото време добавяме зареждането на библиотеки, които ще ни бъдат полезни. След това файлът ще изглежда така:

Проектът вече има cpp файл test_native.cpp, който е създаден автоматично при конвертирането на проекта. Към него добавяме функцията android_main, която използва android_native_app_glue. Той работи в отделна нишка със собствен цикъл за обработка на съобщения. Всичко е много подобно на WndProc на Windows. Но първо добавяме само няколко реда към test_native.cpp:

За да не се кълне парсерът на Eclipse, добавяме пътя към android_native_app_glue.h, както е описано във втората част. Получих този път:/home/user/Android/android-ndk-r6b/sources/android/native_app_glue.

Получаваме минимален пример, който може да бъде компилиран и стартиран. Няма да прави нищо и няма да отговаря на бутоните на устройството, тъй като тук все още няма цикъл за обработка на съобщения:

напиша

Сега нека добавим примитивен цикъл за обработка на съобщения. За да направите това, трябва да извикате функцията ALooper_pollAll в цикъл, който изважда всички съобщения от опашката. За да обработваме тези съобщения, ние дефинираме два почти празни метода: engine_handle_input и engine_handle_cmd. Получаваме следния код:

При отстраняване на грешки можете да видите съобщенията за начало и изход, които добавих към android_main:

програма

На този етап вече можете да видите сами в примерите на NDK как можете да използвате OpenGL, за да видите нещо различно от черен екран. Например, разгледайте samples/native-plasma.