Debug vs. Release builds w Android NDK

Pracuję nad dużym silnikiem gry, który musi być przeniesiony na Androida. Cały kod to C / C++, więc przenosimy go przez NDK. Mam wszystko, co buduję, ale po wielu przeszukaniach nadal Nie wiem, jaka jest najlepsza metoda budowania debugowania vs. wersje Release naszego pliku. so. Zmienianie rzeczy ręcznie za każdym razem się starzeje.

Czy masz inne Application.mk pliki dla każdego celu? Czy jest jakiś sposób, aby włączyć wiele celów w jednym Android.mk plik pod katalog jni/ A może trzecią opcją może być napisanie standardowego pliku makefile, który ustawia zmienne środowiskowe, które Android.mk plik używa do informowania procesu budowania?

Na koniec ostatnie pytanie dotyczące flagi Android: debuggable, która musi być ustawiona w AndroidManifest.plik xml. Co to właściwie ma wpływ na wygenerowany kod natywny, który jest kopiowany do urządzenia?

Best and thanks,

Kevin

Author: Kevin Depue, 2011-07-06

3 answers

Czy masz inne Application.mk pliki dla każdego celu?

Nie. Osobnych podkatalogach, wszystkie z własnymi Android.mk (biblioteki dzielone i statyczne), ale tylko jeden Application.mk dla mnie.

Mój Application.mk jest po prostu:

APP_STL := gnustl_static
APP_OPTIM := debug

Nadal nie jestem pewien, jaka jest najlepsza metoda budowania debugowania vs. Wydania naszego pliku.so. Zmienianie rzeczy ręcznie za każdym razem się starzeje.

Jest trochę rozłożona, przynajmniej dla mnie, używając jni / Android. mk + Application.mk układ.

Application.mk has APP_OPTIM := debug Następnie w elemencie aplikacji AndroidManifest.XML mam android:debuggable="true" Gdy budujesz za pomocą ndk-build, używa On tej flagi manifestu do określenia optymalizacji (która jest przydatna do wyłączania lub włączania, wyłączania dla profilowania itp.)

(trochę Off topic) ostatnio natknąłem się na

Https://code.google.com/p/android-ndk-profiler/

Które w połączeniu z http://code.google.com/p/jrfonseca/wiki/Gprof2Dot

Generuje kilka ładnych obrazów, aby pomóc mojemu małemu umysłowi zrozumieć, jak rzeczy przebiegają przez sam telefon.

 9
Author: dwerner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-08 06:02:08

Nie musisz używać Android.mk system do zbudowania .so. osobiście, używam własnego Makefile ' a z celami, których potrzebuję, a to pozwala na bardzo ustandaryzowaną specyfikację debug vs. release build.

 1
Author: mah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-05 22:05:27

Używam jednego pliku do budowania biblioteki dla różnych celów. W Application.mk dodaj ten "APP_ABI: = armeabi armeabi-v7a" to działa dla mnie.

 0
Author: frojas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-21 20:49:36