19 ноября 2012

Новый NDK 8c. Проблемы.

Новый, невероятно классный NDK для android от Google с поддержкой clang3.1 оказался не без изъяна. Что очень меня опечалило. Но к счастью это Open Source и большинство проблем можно поправить в уже установленном NDK.

Скажу об этом сразу, если что-то у вас поломалось другое, то поищите ответ тут. Все что меня беспокоило уже было решено именно там.

Все исходники постоянно компилируются: решение было найдено тут.

Патч изменяет единственную строчку 289 в build/core/definitions.mk с

$1: $$(__ndk_file_dir)

на 

$1: | $$(__ndk_file_dir)

Команда ndk-build выдает странную ошибку:

Invalid attribute name: android:name
/home/plambir/.android/android-ndk/build/gmsl/__gmsl:512: *** non-numeric second
 argument to `wordlist' function: ''.  Stop.
Решение простое, нужно переместить строчку <uses-sdk android:minSdkVersion="8"/> в AndroidManifest.xml в самое начало манифеста (сделать первым вложенным тегом, тега manifest).

При использование clang компилятор ругается на `-funswitch-loops`: решение было найдено тут. И то, что оно из себя представляет лучше посмотреть по этому диффу

Вроде бы все. Несмотря на все сложности с переездом на новый NDK, это того стоит, clang классный. Да и другие изменения тоже не хуже.

10 августа 2012

Pipeline, shell и функции

Иногда очень хочется упростить себе жизнь и написать какой-нибудь shell-скрипт что бы он что-то делал за тебя. Часто без функций в скрипте не обойтись, как и без использования pipeline.

Так вот это маленькая подсказка как научить функцию читать вывод другой программы.

10 июля 2012

Следи за мной, компилятор!

Привет. Вот такой небольшой хинт который работает на последних версиях GCC и Clang точно.

Хинт этот касается статических ассертов, и проверки типов, которая обычно компилятором не проводиться. Все это актуально для Cи++.

Герои дня: __is_pod.

15 мая 2012

Оптимизация как необходимость

Писать программы сложно, писать хорошие программы еще сложнее, писать хорошие оптимизированные программы почти невозможно. И дело тут не в том что это физически затруднительно, просто не всегда это нужно. Ну согласитесь глупо пытаться сделать быстрее цикл который вызывается один раз за всю работу программы. Глупо? А если он выполняется час? А все остальное выполняется за минуту?

01 мая 2012

Android: Hello world!

Привет. Вот и пришло время первого очень простого приложения для android. Это на самом деле не так легко как может показаться на первый взгляд. Ведь мало сделать Hello world!, нужно сделать его правильно.

Телефон это не компьютер. Смартфоны нынче могут похвастаться большим количеством оперативной памяти, мощными CPU и GPU, но это все равно не компьютер. Не желая вдаваться в долгие рассуждения об отличиях, сразу вывод.

  1. Игры должны работать быстро - только нативный код.
  2. Нативный код - только оптимизированный.
  3. Оптимизированный код - потребляет мало памяти и работает быстро.
  4. Работает быстро - DOD (Data Oriented Design) и простота во всем.

Это вообще применимо не только к мобильным системам, именно так нужно делать игры, ну или как-то иначе, это не важно. Важно что бы количество FPS было достаточно для нормальной игры, и игра не падала из-за нехватки памяти. Ну и конечно она должна быть интересной. С интересностью я вам не помогу, а вот выжить побольше FPS и сэкономить память у нас думаю получиться.

19 февраля 2012

Android: установка SDK и NDK

Привет. Так случилось что у меня в распоряжении оказалось небольшое android устройство. А так как android это почти GNU/Linux, то почему бы и не попробовать написать для него небольшую игру. Уж очень хочется изучить что-то новое.

Начну я с простого. Небольшая памятка для себя как установить и настроить SDK и NDK. Еще конечно нужно что-нибудь собрать и запустить на устройстве или эмуляторе. Думаю какой-нибудь пример из NDK. Для начала думаю хватит.