Изграждане на SurfaceFlinger от източник в Android NDK и използване на съдържанието на директорията за тестове

Нов съм в програмирането на Android NDK. Въпросът ми е как да създам библиотеката SurfaceFlinger (.so) в Android NDK? Изтеглих необходимите изходни файлове на sufaceflinger от github и се опитах да ги компилирам с помощта на командата ndk-build и тя иска някои заглавни файлове.

Може ли някой да ми помогне с това как да създам споделената библиотека на SurfaceFlinger и да включа необходимите заглавни файлове.

И също така каква е употребата на файловете от тестовата директория, присъстващи заедно с изходния файл и как да го използвате?

Целевото ми устройство работи с Android 4.0.4 и системата ми работи с Windows 7 (32-битова).

Благодаря


person Abilash    schedule 15.03.2014    source източник


Отговори (1)


SurfaceFlinger не е компонент за изграждане на NDK. Трябва да изтеглите пълното дърво на изходния код на Android и да го изградите. Изисква се Linux или Mac OS X.

В допълнение към различните заглавки и библиотеки, вие също се нуждаете от специфичните за целта дефиниции на хардуерната конфигурация. Ако погледнете в SurfaceFlinger makefile можете да го видите как проверява за omap и изтегля различни BoardConfig стойности. С други думи, трябва да изградите SurfaceFlinger за конкретно устройство; това не е обща библиотека, независима от устройството.

person fadden    schedule 15.03.2014
comment
здравейте сър @fadden, ако surfaceflinger не е ndk-buildable компонент, тогава има ли някакъв начин да се изгради LibSurfaceFlinger.so. По принцип се опитвам да създам файла libSurfaceFlinger.so с малки модификации, така че да мога да видя GUI на отдалечено Android устройство като във VNC приложения. Има ли друг начин за изграждане на библиотеката SurfaceFlinger, без да изтегляте целия AOSP. Насочвам това приложение към определено конкретно устройство, работещо на Android 4.0.4. Как да компилираме (*_test.cpp, Android.mk) файлове в папката с тестове (напр. libs/gui/tests/Surface_test.cpp). - person Abilash; 19.03.2014
comment
Не ви трябва цялото дърво, но е трудно да се каже от кои части имате нужда - нещата зависят от други неща. Най-лесният начин е просто да вземете цялото дърво и да го построите. Жалко е, че не можете да се насочите към 4.3/4.4, тъй като командата screenrecord, добавена там, демонстрира много по-лесен подход при използване на виртуални дисплеи. - person fadden; 19.03.2014
comment
здравейте, господине @fadden, приложението ми е насочено към Android 4.0.4(ICS), а не към 4.3/4.4, ако събера всички зависимости за surfaceflinger (заглавни файлове), тогава ще мога ли да създам libsurfaceflinger.so използвайки ndk-build или трябва ли да използвам друг инструмент? По принцип искам libgui от отдалечено устройство да взаимодейства с libsurfaceflinger на моето устройство, така че да мога да получа показване на приложения, работещи на сървър, с които мога да взаимодействам, сякаш това приложение е инсталирано на моето устройство. Възможно ли е да се направи така? - person Abilash; 19.03.2014
comment

$row трябва да бъде дефиниран преди оператора while. В момента съществува само в обхвата на оператора while и се унищожава преди връщане.

N.B. $row може да не съдържа стойностите, които очаквате да бъдат върнати. Но също така не работя често в PHP и може.

- person fadden; 19.03.2014
comment
Здравейте, господине @fadden, какво ще кажете за съдържанието (*_test.cpp, Android.mk) в директорията с тестове. Каква е тяхната употреба и как да ги използвате? - person Abilash; 20.03.2014
comment
Изглежда, че вече не се използват. Опитах се да създам няколко и те не успяха да компилират. Бих ги игнорирал. Тестовете в frameworks/native/libs/gui/tests вероятно са по-подходящи. - person fadden; 20.03.2014
comment
Здравейте, господине @fadden, каква е процедурата за компилирането им? - person Abilash; 21.03.2014