- Как открыть порты на Андроид: несколько популярных способов
- Для чего нужно закрыть порты на Андроид?
- Как узнать , какие порты открыты на вашем устройстве Android?
- Как обезопасить свое устройство Андроид?
- Работа с COM портом в Android приложениях
- COM порт на Android
- Лучшие мобильные порты с ПК
- Портирование любимой игры под Android
Как открыть порты на Андроид: несколько популярных способов
Открыть порты на Android возможно, но не всегда целесообразно. А если вы являетесь обладателем Android — смартфона, то вас , скорее , должен волновать вопрос, как закрыть порты на Андроид. Чуть ниже объясняем , почему.
Для чего нужно закрыть порты на Андроид?
Многие модели современных смартфонов Android функционируют с открытыми портами для отладки («Android Debug Bridge»). А это , в свою очередь , сильно ослабляет безопасность вашего устройства. Хотя бы потому, что в таком случае к нему можно получить даже удаленный доступ. ADB дает возможность разработчику подключиться к устройству только через WI-Fi, минуя USB-подключение.
Это уже не новая, а достаточно известная проблема. Еще в недавнем 2018 году компания Qihoo 360 Netlab определила Malware ADW.miner — вирус , который сканировал сеть , ища устройства с открытыми портами для отладки (ADB). Один из самых распространенных таких портов — это порт 5555. Данный «малварь» смог заразить не только смартфоны на Android, но и другие устройства с этой операционной системой . О н был найден в:
Вот и получалось, что открытость ADB давал а возможность злоумышленнику получать удаленный доступ практически к любому устройству на Андроид и с использованием root-прав. При этом такой злоумышленник мог скрытно установить какую-либо вредоносную программу или код , и для этого ему н ен ужны ни аутентификация, ни ввод пароля.
Поэтому тут еще надо решить, что вам больше нужно знать : как открыть или как закрыть порты на Андроид?
Как узнать , какие порты открыты на вашем устройстве Android?
Чтобы узнать , какие порты открыты на вашем устройстве, вам нужно проделать следующие операции:
- У вас должна быть создана новая точка доступа WiFi на вашем устройстве.
- Вторым шагом будет подключение к этой точке вашего компьютера.
- Нужно использовать команды: ifconfig и/или ipconfig в консоли, эти команды помогут узнать IP адрес вашего устройства.
- Загрузите сканер безопасности nmap с сайта nmap.org.
- Воспользуйтесь следующей командой в сканере: nmap -sS -Pn -p- your_phone_ip_adress.
После ввода и исполнени я команды программа выдаст вам список открытых портов на вашем устройстве.
Как обезопасить свое устройство Андроид?
Итак, чтобы открыть или закрыть порты на Андроид и тем самым проконтролировать входящий или исходящий трафик вашего устройства, вам нужно установить какой-нибудь Firewall. Ниже приведем список из нескольких лучших файерволов для Android, которые способны решить вашу проблему с портами:
- Брандмауэр без ROOT. Это один из лучших брандмауэров для Android — устройств. Очень простой в использовании, не требует root-прав для работы на устройстве. Очень широкий список фильтрации трафика по хосту, порту, домену и т.д.
- Android Firewall +. Требуется доступ к устройству с рут-правами, поэтому , если у вас есть такой доступ, можете смело использовать этот. Он также позволяет осуществлять контроль трафика по различным критериям, позволяет открывать и закрывать порты на Андроид и предлагает набор интересных «плюшек».
- NetPatch Firewall. Он несколько отличается от первых двух фаер в о л ов. У него присутствуют их основные функции, однако из собственных можно отметить: создание доменов и группы IP, блокировка определенных IP, блокировка или настройка Wifi для разных приложений отдельно.
- InternetGuard Data Saver Firewall — это еще один из самых крутых брандмауэров для Android — устройств. Не зря у него один из самых высоких рейтингов от пользователей. Очень непохожий пользовательский интерфейс его существенно выделяет среди конкурентов. По своей функциональности он не уступает никому из этого списка.
- VPN Безопасный брандмауэр. Ему н ен ужны рут-права для блокировки / разблокировки приложений или чтобы открыть или закрыть порты на Android — устройстве. Он является полностью бесплатным продуктом, но тем не менее по функционалу не уступает свои м платным собратьям.
Вы точно знаете, что очень важно следить за состоянием своего устройства. Поэтому прежде , чем открыть или закрыть порты на Андроид, задайтесь необходимостью этого действия. Закрыть лишние, где могут получить доступ к вашему устройству злоумышленники , — это обязательно. А остальное — по вашему усмотрению.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Источник
Работа с COM портом в Android приложениях
Все доброго времени суток!
Однажды я задумался над разработкой приложения, которое требовало бы общения с hardware устройством, через COM порт. Хотя Android заботливо предоставляет api для работы с usb устройствами, оно мне к сожалению не подходило, так как хотелось осуществлять поддержку моего старого планшета на базе андроид версии 2.2. Стандартное api ото Гугла, не подходило
по двум причинам:
- во первых оно не сработало для меня.
- девайс у меня все-таки старенький
Итак, после длительного поиска в интернете, я наткнулся на очень интересное решение android-serialport-api. Данное решение представляет собой Java обертку в которой через JNI в которой осуществляются вызовы к USB устройству.
Разработчики библиотеки предлагают 4 различных варианта подключения Android устройства к COM порту через USB.
Так как я имел в своем распоряжении планшет с USB host портом, и у меня под рукой имеется USB to RS232 преобразователь, то я пошел по варианту номер 2.
Преимущества и недостатки такого решения заключаются в
Преимущества
- USB — RS232 преобразователь можно легко найти на ближайшем радио рынке
- никаких извращений с моим дорогим моему сердцу планшетом
- возможная высокая скорость передачи информации
Недостатки
- потребуется USB хост коннектор
- возможно, что девайс придется рутануть
Тут я опишу подход в использовании этой библиотеки.
Для корректной работы serialPortFinder необходимо чтобы переходник USB-RS232 был подключен, определен в /dev.
Вот таким нехитрым способом можно осуществлять общение с очень большим количеством железа через COM порт,
Источник
COM порт на Android
Сейчас я расскажу, как, имея в наличии совершенно стандартное устройство на Android с поддержкой USB Host (в моем случае Nexus 7), совершенно стандартный USB Host переходник на полноразмерный разъем «мама», совершенно стандартный USB serial контроллер на чипе PL2303 (они почти все работают именно на этом чипе) и не менее стандартный цискин голубой шнурок, зайти на консоль сетевого оборудования и без всяких ограничений работать с ней. Хотя никто не мешает подключать к планшету/телефону и любое другое оборудование, работающее с командной строкой поверх RS-232.
Первым делом получаем на планшете рут-права. Иначе никак.
Вторым делом ставим Busybox. Кто не знает — это отличный комплект утилит, одна из которых нам потребуется. После установки надо запустить его и нажать в самой программе «Install», когда программа спросит про метод установки — сказать «Normal».
Затем понадобится любой приличный эмулятор терминала. Мне нравится Irssi ConnectBot.
Ну и напоследок — штатные клавиатуры плохо годятся для работы с консолью. Нам ведь нужны клавиши Tab, ctrl и прочие, верно? Да и цифры хочется иметь в верхнем ряду, над буквами, а не где-то еще. Потому — Hacker’s Keyboard. Лучше, конечно, подключить внешнюю клавиатуру, но мы пока не собираемся набивать вручную многоэкранные конфиги.
Всё готово для подключения.
Запускаем терминальный клиент, выбираем локальное подключение, и подключаем к планшету контроллер. Нужно убедиться, что он определился, хотя тут проблем не ожидается, драйвера для PL2303 уже много лет как включены в ядро Linux. Под рутом запускаем dmesg.
(если кому мелковато — кликните на картинку)
Нужно запомнить, куда смонтировало контроллер. В моем случае это всегда был /dev/ttyUSB0.
Осталось установить соединение. В комплект Busybox входит программа «microcom», она-то нам и пригодится.
Набираем в консоли «microcom -s [скорость порта] [точка монтирования устройства]».
Выход из microcom по ctrl+x. Break должен посылаться по ctrl+b (пока не проверял). Другие горячие клавиши передаются корректно.
Альтернативы?
Можно купить один из многих «Bluetooth Serial» адаптеров. Вот только такие адаптеры и стоят дороже (>$50), и требуют внешнего питания. Ни одного на аккумуляторах не видел. В лучшем случае батарейку надо самому прикрутить.
Для пользователей техники Apple есть проводное решение за те же >$50.
Источник
Лучшие мобильные порты с ПК
Современные смартфоны стали настолько мощными устройствами, что уже совершенно спокойно запускают игры из серии Grand Theft Auto и PUBG. Но так ли хорошо всё работает и управляется с сенсорного экрана? И вообще, не взорвётся ли телефон из-за неправильной оптимизации? Ответы на эти вопросы — в новом выпуске мобильного дайджеста.
Это НЕ ФЕН, Флинн.
Интересно как играется Baldur’s Gate на телефоне.
По поводу фортнайта, то он не будет вроде выходить через плэй маркет. Эпики планируют свой магазин дял андроида делать 🙂
Очень сомнительный выбор музыки для ролика, но это вкусовщина конечно же.
C&C Rivals та еще дрочильня конечно, но реклама штука полезная, жить на что то нужно.
Недавно мне подарили геймпад для андроида, и достав свой полуживой Nexsus 7 2012-го года, решил глянуть а во что же можно поиграт. Поставил эмуляторы nes snes megadrive ps1 это окей никого не удивишь, но также я обнаружил вагон и маленькую тележку портов с PC, многие из которых не были указаны в данном материале, а точнее 58 штук
Из хороших портов — серия классических шутеров от Beloko. Дум (порт GZDoom на OpenGL, поддерживает все моды, включая этот ваш BRUTAL DOOM), Вульф 3Д, RTCW, первые три Кваки, Jedi Knight и так далее. Качественные, стабильные, с настройками экрана и управления.
OpenXcom — порт первых двух Уфошек. Удобное управление, молы и в целом очень удобный формат для карманной стратегии.
ExaGear — эмуляторы винды с адаптацией управления для тачскрина. Два варианта, Strategy и RPG — лучший способ запустить третьих Героев или Фоллаут. Нужны файлы игры.
И ещё кое что другое — отечественная Day R. Очень интересный и медитативный «симулятор карты», где нужно выживать в пост-ядерном СССР. Хотя последние версии — не фонтан. 10 банок сгухи из десяти. Бесплатная, но рекомендуеься взять «премиум» с нормальной системой сохранений
Уважаемый Шурикен 😉 спасибо за видео. Про Titan Quest вот лично я не знал, пошпилим
Хоть и запоздало, но спасибо за наводку на South Park PD — очень прикольный таймкиллер.
Источник
Портирование любимой игры под Android
Создание игры процесс захватывающий и познавательный. Особенно это заметно, когда ремейк «классики» делаешь сам, руководствуясь идеями оригинала и десятками часов, потраченных на прохождение кампании. У меня не было сколь-нибудь значимого опыта разработки для Android’a, поэтому создание работающего «как надо» приложения для планшета поначалу выглядело довольно туманно, но от этого не менее притягательно. При наличии времени и возможностей, можно стряхнуть пыль со старых игр, подмазать и подклеить, добавив поддержку «больших» разрешений и окажется, что они выглядят не хуже современных продуктов, выложенных на маркете, даже с палитрой RGB565 без альфа-канала. Я предполагал, что будут подводные камни и заботливо спрятанные грабли, которые лежат тихонько во время разработки, но больно лупят по голове, стоит запустить игру на реальном железе. Чего сильно не хватало, так это отладчика, а возникающие проблемы лишь укрепили желание достичь поставленной цели. Под катом будет рассказ о том, как это все заработало.
Стоит сразу предупредить, что это возможно будет рассказ о велосипедах, я не придумал ничего такого, что не гуглится на просторах «интернетов». Также Читатель вряд ли увидит новые решения или мега технологии, но найдет опробованные инструкции по сборке приложения, использующего SDL1/2, для Android.
Здравствуйте!
Ремейк игры Caesar III© начинался совсем не как отдельный проект, а скорее набор фиксов для количества жителей, поддержки «больших» разрешений и исследования декомпилированного кода оригинальной игры в поисках пасхалок и недокументированных режимов работы. А когда количество восстановленного кода перевалило за половину от общего, стало понятно, что можно попытаться восстановить игру. В качестве библиотеки отрисовки была выбрана SDL1.2, которая хорошо зарекомендовала себя в других проектах, а ещё проста в освоении и использовании. Ремейк поначалу был Linux-only, в начале этого года перебрался на другие платформы (Mac, Windows и Haiku), а потом у меня завелся вот такой планшет, а голове периодически возникали мысли «работает на одном линуксе, должно работать и на другом».
Попытка номер раз, удачная
У SDL версии 1.2 «из коробки» нет возможности работы под андроидом, зато есть замечательный проект libsdl-android, который позволяет, используя свое окружение и скрипты собирать код, использующий эту библиотеку в приложении для андроида. Собранное приложение может загрузить ресурсы как из интернета, так и распаковать из установщика. Сам libsdl-android содержит большое количество библиотек, которые могут вам понадобиться, начиная от bzip2 и разных кодеков, до самой SDL и его окружения SDL_image, SDL_mixer, ttf и другие. Если у игры нет платформозависимого кода, то портирование занимает несколько шагов:
/;
echo «Downloading the sdk. »;
wget —quiet —continue dl.google.com/android/adt/adt-bundle-linux-$$ARCH-$$SDK_VERSION.zip;
echo «Extracting the sdk. »;
ARCHIVE=`readlink -f adt-bundle-linux-$$ARCH-$$SDK_VERSION.zip`;
cd
;
unzip -o -qq $$ARCHIVE;
echo «Configure paths. »;
echo «export ANDROID_SDK=
/.bashrc;
echo «export ANDROID_NDK=
/.bashrc;
echo «export NDK_ROOT=\$$ANDROID_NDK» >>
/.bashrc;
echo «export PATH=\$$PATH:\$$ANDROID_NDK:\$$ANDROID_SDK/tools:\$$ANDROID_SDK/platform-tools» >>
Если все удачно скомпилилось, то в папке commandergenius/project/bin появится файла MainActivity-[release|debug]-unsigned.apk, который нужно подписать и установить на устройство.
$ keytool -genkey -v -keystore rs.keystore -alias caesaria -keyalg RSA -keysize 2048 -validity 10000
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore rs.keystore
/projects/commandergenius/project/bin/MainActivity-release-unsigned.apk caesaria
$ mv
/projects/caesaria.apk
$ adb uninstall net.dalerank.caesaria
$ adb install
Подводные камни
0. Определение окружения: для начала надо определиться в каком окружении будет работать Windows, Linux или Linux Android.
Решение: Проверяем наличие дефайнов ANDROID/__ANDROID__.
1. Логи: смотреть сообщения об ошибках и прочий вывод можно через abd logcat, но как оказалось стандартные средства типа stdout/printf не работают, можно конечно пользоваться выводом лога в файл и смотреть уже его, но хотелось какойто более привычной отладки.
Решение: подключаем заголовочный файл логов андроида #include , а для вывода сообщения пользуемся функцией
__android_log_print(ANDROID_LOG_DEBUG, CAESARIA_PLATFORM_NAME, «%s», str.c_str() );
с привычным printf синтаксисом.
2. Использование OpenGL: если кому понадобится OpenGL, то на мобильных плафтормах обитает его близкий родственник GLES.
Решение: подключаем вместо стандартных заголовояных файлов и , есть небольшие отличия в использовани текстур и отрисовке, но в основном код(простой код, который я использовал) работает практически без изменений.
3. Обработка событий: пропадает событие SDL_MOUSEBUTTONUP при движении пальцем по экрану, это могла быть недоработка в самой библиотеке libsdl-android или я где-то его терял. Проявлялось иногда в отсутствии реакции элементов интерфейса на действия пользоватся, например после движения остановились на кнопкой, которая по идее должна перейти в состояние если над ней находится курсор мыши.
Решение: Специфично для моего приложения — при сборке под андроид было добавлено принудительное обновление состояния элементов под курсором при движении последнего.
4. Мелкий интерфейс: разрешение экрана современных мобильных устройств сопоставимо или превышает разрешение монитора, используемого 10-15 лет назад, но физические размеры заметно меньше, оттого и сам элементы пользовательского интерфейса выглядят мелко и пользоваться ими будет не всегда удобно.
Решение: Переделка интерфейса, что достаточно хлопотное занятие и не всегда удается сохранить первоначальный вид.
Один переезд равен двум пожарам(народная мудрость)
Все началось с того, что один из коммитеров прислал ссылку на ветку разработки, где успешно запустил игру с использованием относительно свежей библиотеки SDL2, а до этого использовалась версия SDL1.2 — 2008 года выпуска. Надо сказать, что я и сам рассматривал возможность перехода на новую версию, особенно после просмотра списка изменений, который сулил нормальную поддержку Mac и Android, что называется «из коробки». А тут еще и миниотпуск на работе получился, взяв кувалду побольше гайд потолще и большую чашку кофе, я начал переводить ремейк на новый «движок».
Не хочу утомлять читателя техническими подбробностями переезда, просто у самой библиотеки с приходом аппаратной поддержки изменилась идеология работы, что поначалу доставляло определенные трудности, пока я к ней не привык. Переезд растянулся на неделю вечеров и под конец представлял собой исправление оставшихся недочетов и графических артефактов. Переделки были закончены и подготовлены сборки для «больших» ОС, и опять появилась необходимость повторного чтения мануалов по сборке приложения под Андроид, потому как libsdl-android нормально адаптирован для работы с SDL1.2, а поддержка SDL2 похоже заброшена (о чем сами авторы и пишут в ридми)
Осознал я правдивость этого текста, когда было потрачено несколько часов в попытке запустить порт в старой конфигурации через libsdl-android. Ну что ж, отрицательный опыт — тоже опыт: буду использовать доступные инструмены.
Попытка номер два, не совсем удачная
SDL2 уже содержит все необходимые конфиги для сборки приложения под андроид, почитав статью, рекомендованную на официальном сайте, можно пробовать собрать чтонибудь. Опять же будут несколько шагов, за исключением установки и настройки adt.
$git clone bitbucket.org/dalerank/caesaria
$hg clone hg.libsdl.org/SDL
$mkdir caesaria/android
$cp SDL/android-project caesaria/android
$mkdir caesaria/android/libs
$mkdir caesaria/android/data
$cp SDL caesaria/android/libs
Для чего все эти копирования сделаны. чтобы проще было считать относительные пути для библиотек. В папке android/libs будет лежать SDL и компания, в папке android/data — будет иконка приложения.
В папке android/android-project/jni создаем символьные ссылки на компоненты приложения
$ln -s ../../libs/SDL SDL
$ln -s ../../libs/SDL_mixer SDL_mixer
$ln -s ../../libs/SDL_net SDL_net
$ln -s ../../src/dep/aes aes
$ln -s ../../src/source application
$ln -s ../../src/dep/bzip2 bzip2
$ln -s ../../src/dep/freetype freetype
$ln -s ../../src/dep/libpng libpng
$ln -s ../../src/dep/lzma lzma
$ln -s ../../src/dep/smk smk
$ln -s ../../src/dep/src src
$ln -s ../../src/dep/ttf ttf
$ln -s ../../src/dep/zlib zlib
Немного о том, что же я тут написал:
zlib нужен для сборки freetype, который в свою очередь нужен для SDL_ttf и будет отвечать за рендеринг шрифтов.
Библиотека smk нужна для воспроизведения видео в формате smack, в этом формате выполнены ролики оригинальной игры.
Bzip, lzma и aes нужны для работы с zip-архивами.
libpng требуется для загрузки текстур для игры.
SDL, SDL_mixer, SDL_net отвечают соответсвенно за рисования, работы со звуком и сетью.
application содержит исходники самой игры, которые будут собраны в библиотеку libapplication.so
в папке src располагаются исходники библиотеки libmain.so, а вот для неё уже написано кружево java-вызовов над с-кодом, которое позволит нам успешно стартовать и порадовать пользователя яркой картинкой.
Настройки проекта и конфиги для ndk уже любезно предоставлены авторами SDL2
Чтобы система сборки увидела, какие нам необходимы библиотеки для работы и собрала их, нужно написать для них конфиги, наподобие Makеfile. С большой вероятностью Android.mk уже будет присутствовать в репозитории библиотеки, или их можно найти на просторах интернета. Мне пришлось дописать конфиги сборки для для игры и библиотеки libsmk.
Android.mk для libsmk очень прост и будет понятен людям, не связанным с программированием для андроида
#smk/Android.mk
LOCAL_PATH := $(call my-dir)
LOCAL_MODULE := smk
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,, \
$(wildcard $(LOCAL_PATH)/*.c))
Конфиг содержит указание скомпилировать все файлы с расширением .с, найденные в текущей папке (для libsmk это будет jni/smk)
Аналогично пишется и конфиг для сборки библиотеки, которая будет представлять саму игру.
#application/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
SDL_PATH := ../../libs/SDL
SDL_MIXER_PATH := ../../libs/SDL_mixer
SDL_NET_PATH := ../../libs/SDL_net
GAME_PATH := $(LOCAL_PATH)
DEP_PATH := ../dep
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/$(SDL_PATH)/include \
$(LOCAL_PATH)/$(SDL_MIXER_PATH) \
$(LOCAL_PATH)/$(SDL_NET_PATH)/include \
$(LOCAL_PATH)/$(FREETYPE_PATH)/include \
$(LOCAL_PATH)/$(GAME_PATH) \
$(LOCAL_PATH)/$(DEP_PATH) \
$(LOCAL_PATH)/$(DEP_PATH)/libpng
# Add your application source files here…
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,, \
$(wildcard $(GAME_PATH)/*.cpp) \
$(wildcard $(GAME_PATH)/core/*.cpp) \
$(wildcard $(GAME_PATH)/vfs/*.cpp) \
$(wildcard $(GAME_PATH)/objects/*.cpp) \
$(wildcard $(GAME_PATH)/gui/*.cpp) \
$(wildcard $(GAME_PATH)/city/*.cpp) \
$(wildcard $(GAME_PATH)/gfx/*.cpp) \
$(wildcard $(GAME_PATH)/events/*.cpp) \
$(wildcard $(GAME_PATH)/world/*.cpp) \
$(wildcard $(GAME_PATH)/pathway/*.cpp) \
$(wildcard $(GAME_PATH)/walker/*.cpp) \
$(wildcard $(GAME_PATH)/good/*.cpp) \
$(wildcard $(GAME_PATH)/religion/*.cpp) \
$(wildcard $(GAME_PATH)/scene/*.cpp) \
$(wildcard $(GAME_PATH)/sound/*.cpp) \
$(wildcard $(GAME_PATH)/game/*.cpp))
LOCAL_SHARED_LIBRARIES := SDL2 SDL2_mixer SDL2_net sdl_ttf pnggo lzma bzip2 aes smk
LOCAL_CPP_FEATURES += exceptions
LOCAL_CPP_FEATURES += rtti
LOCAL_LDLIBS := -lGLESv1_CM -llog
Тоже должно быть понятно, в LOCAL_C_INCLUDES добавляет пути где нужно искать заголовочные файлы, в LOCAL_SRC_FILES добавляем файлы с исходным кодом,
в LOCAL_SHARED_LIBRARIES прописываем зависимости приложения.
флаги rtti, exceptions отвечают за использование RTTI и исключений.
Теоретически, после выполнения описанных шагов на подключенном девайсе или эмуляторе вы увидите установленное приложение.
Грабли
1. Где искать ресурсы.
Место размещения ресурсов зависит от конкретной реализации ОС, но в большинстве случаев приложению будет доступна папка /sdcard/Android/data/имя_пакета/files, при использовании непосредственно пути может быть ошибка доступа или ошибка поиска файла.
Получить полный путь к директории приложения можно через функцию SDL_AndroidGetExternalStoragePath(), определенную в файле SDL_system.h
2. Использование флагов создания окна.
Комбинация SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS работает не на всех девайсах, убираем SDL_WINDOW_OPENGL или SDL_WINDOW_BORDERLESS и смотрим какой из флагов крашит программу. Не могу объяснить с чем связано такое поведение. С флагом SDL_WINDOW_SHOWN запукается по логам один в один, как и со всеми флагами, но при этом вероятность вылета намного меньше.
3. Слишком много звуковых каналов.
Наблюдаются вылеты при вызове функции SDL_mixer::Mix_AllocateChannels(N>16) c ошибкой, что невозможно иниализировать звук. Обходится снижением запрошенного числа каналов, насколько корректно решать эту проблему таким способом я не знаю.
4. stlport vs gnustl
Вылет при использовании stlport, нарвался на этот баг при обходе вектора с использованием итераторов на эмуляторе Nexus 7 (Android 4.0.3). Опять же не могу объяснить факт сей ошибки, решилось использованием gnustl при сборке приложения.
5. Мое кунгфу сильнее твоего.
Использование библиотеки с именем, похожим на имя той, что уже есть в системе приводит к загрузке чужой библиотеки, в которой возможно нет необходимых функций. Ошибка появилась из-за того, что я собираю свою версию libpng.so, решение было найдено на stackoverflow, исправилось заменой имени библиотеки libpng.so на libpnggo.so
В заключении.
Работает! Почти не отличается от ББ! Доволен ли я? Не очень!
Дело в том, что толи я криворукий, толи лыжи не едут, но на планшете приложение получилось крайне медленным (10-12 fps для крайне простой картинки результат унылый), думаю, вина тут в руках и незнании матчасти. SDL — отличная библиотека в обеих реинкарнациях, и много действительно хороших игр использует её, а также портировано на андроид.
Потраченного времени на создание порта не жаль точно, получен определенный опыт и много положительных эмоций, когда игра взлетела. Тем, кто ещё раздумывает пробовать или нет, однозначно пробовать, не откладывайте на потом!
З.Ы. За развитием проекта всегда можно посмотреть тут.
Источник