Pull to refresh
  • by relevance
  • by date
  • by rating

Как я боролся с Android NDK и NetBeans 6.8

Development for Android *
image
В этом посте я хочу немного поделиться сыном ошибок трудных — опытом. По другому и не скажешь, потому что некоторые ошибки компиляции, сборки и т.п. съели очень много времени. Я не всякий раз докапывался до причин, хотелось побыстрее получить работающую математику. Но так или иначе мне удавалось находить или вычитывать правильное решение. Поэтому я просто хочу обратить внимание тех, кто будет идти тем же путем, на некоторые нюансы. Возможно это сэкономит вам какое-то время. В конце я приведу пример приложения, ради которого это все было нужно. Картинка из заголовка — это скрин приложения.
И так, задача у меня была следующая. Я написал приложение под андроид, которое оказалось очень требовательным к ресурсам. На «математику» (я имею в виду работу с контейнерами, вычисления и т.п.) уходило очень много времени. Для сравнения, консольное приложение на чистом С++, считало задачу в пределах 3 секунд. Тогда как Android-приложение на java, запущенное на эмуляторе, то же самое считало 2.5 минуты. Поэтому я решил алгоритмическую часть вынести на C++. Также хочу отметить что мне совсем не хотелось ставить Eclipse поэтому я боролся в том что было — NetBeans 6.8. Так что предположим, что у вас уже стоит SDK, NDK и NetBeans и пойдем дальше.
Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Views 7K
Comments 13

Cocos2d-x: Сборка проекта под Android

Game development *
В предыдущей статье мы узнали, как легко начать писать свою игру, используя кроссплатформенный движок cocos2d-x и научились запускать наше приложение на платформе Win32. Но этого не достаточно, ведь основная цель, разработка для мобильных устройств. В этой статье мы соберем проект под операционную систему Android.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views 30K
Comments 10

Androgenizer — инструмент для сборки исходников под Android

Development for Android *
Sandbox
В данной статье рассматривается только адаптация сборки ПО с исходным кодом для Unix/Linux на Android.

На своей работе я в основном занимаюсь доработкой функционала стандартного AOSP, поэтому часто приходится принимать решения по переносу некоторых библиотек/приложений из Linux в Android. В интернете много англоязычных статей, описывающих основные принципы переноса и адаптации. Поэтому я решил собрать весь материал, касающийся сборки ПО, воедино и поделиться своим опытом. Излагаемый материал подразумевает, что у читателей есть опыт сборки AOSP и знание синтаксиса файла Android.mk.

Подробности
Total votes 5: ↑5 and ↓0 +5
Views 17K
Comments 2

Как я писал Pacman'a, и что из этого получилось. Часть 1

Game development *Development for Android *
Здравствуйте, уважаемые хабралюди!
Последние несколько месяцев, в свободное время, я занимался разработкой клона знаменитой игры Pacman для ОС Android. Как это было, и что из этого вышло я хочу рассказать.

Читать дальше →
Total votes 32: ↑26 and ↓6 +20
Views 58K
Comments 20

Как я писал Pacman’a и что из этого получилось. Часть 2

Game development *Development for Android *

Здравствуй, хабр! Во второй части статьи я продолжу рассказ о том, как я писал клон игры Pacman. Первую часть можно почитать здесь.
С момента, когда я последний раз работал над пакманом прошло порядка трех недель. Прошла большая часть сессии, стало немного больше времени и я решил продолжить. В этот момент появилось желание доделать игру до состояния, когда ее можно будет выложить в Google Play Market, хотя в самом начале разработки я об этом даже не помышлял. Кроме того, доделывание до играбельного состояния – неплохая тренировка. Где-то я слышал, что игры (да и вообще приложения) стоит доделывать.
Напомню, что разработка игры велась с использованием Android NDK (С++) и OpenGL ES 2.0.

Читать дальше →
Total votes 98: ↑95 and ↓3 +92
Views 43K
Comments 19

Форсирование режима автомобильного дока (с помощью root)

Development for Android *

Введение


Не так давно вышедший Galaxy S3, помимо прочих нововведений в области аксессуаров, получил новый, ужасно скучный автомобильный док. В отличие от предыдущих аппаратов линейки (S, S2, Note), этот был сделан «универсальным», и потому не имел специального резистора, заставляющего телефон переключаться в автомобильный режим. А я, как человек, пользовавшийся в своё время полноценной док-станцией для первого SGS, уже привык, что при установке в док у меня включается режим громкой связи и появляется альбомная ориентация в TouchWiz. Но в новом доке такого достичь было нельзя…

Однако, решение было найдено, и потребовало лишь одной NFC-метки, рута, а также нескольких часов поисков и программирования.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Views 13K
Comments 14

Использование NDK в Android Studio

Development for Android *
Sandbox
Tutorial
В настоящее время среди Android-девелоперов большую популярность имеет среда разработки Android Studio, основанная на IntelliJ IDEA от JetBrains. Однако, при использовании данной IDE, могут возникнуть проблемы при разработке приложений, использующих нативный код, так как Android NDK рассчитан преимущественно на использование IDE Eclipse и ADT.

Цель данной статьи — подробное описание процесса создания Android-приложения, использующего NDK в Android Studio, в частности — предложение достаточно простой и эффективной конфигурации gradle (системы сборки пакетов, используемая в Android Studio), гарантирующей включение нативных библиотек в APK-файл. Также статья включает краткую инструкцию работы с NDK в IDE Eclipse и введение в нативную разработку, достаточное для написания первого приложения.
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Views 66K
Comments 8

Введение в Android NDK

Java *C++ *Development for Android *
Sandbox
Для разработки приложений под ОС Android, Google предоставляет два пакета разработки: SDK и NDK. Про SDK существует много статей, книжек, а так же хорошие guidelines от Google. Но про NDK даже сам Google мало что пишет. А из стоящих книг я бы выделил только одну, Cinar O. — Pro Android C++ with the NDK – 2012.

Эта статья ориентирована на тех, кто ещё не знаком (или мало знаком) с Android NDK и хотел бы укрепить свои знания. Внимание я уделю JNI, так как мне кажется начинать нужно именно с этого интерфейса. Так же, в конце рассмотрим небольшой пример с двумя функциями записи и чтения файла. Кто не любит много текста, тот может посмотреть видео версию.
Читать дальше →
Total votes 64: ↑60 and ↓4 +56
Views 215K
Comments 28

Отладка native-кода под Android: ручное и автоматизированное тестирование

Intel corporate blog IT systems testing *
Tutorial
С развитием и ростом популярности ОС Android количество и разнообразие устройств под её управлением неуклонно растёт. Из-за различий в архитектуре, предназначении и оптимизации скорость и стабильность работы исполняемого кода может значительно изменяться. Поэтому, для обеспечения стабильности и оптимизации работы приложений и ОС, особенно использующих особенности конкретной архитектуры, платформы, или кода, портированного с других платформ, стоит особо внимание уделить процессу отладки кода под Андроид. В этой статье пойдёт речь о ключевых моментах и особенностях работы с native-кодом под Android. Всем, кому интересен этот мануал, прошу под кат.

image


Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Views 16K
Comments 3

Запуск физического движка Bullet Physics на Android х86

Intel corporate blog Game development *
Tutorial

Источник фото
Постоянный рост вычислительной мощности мобильных устройств способствует развитию мобильных игр. В мобильном сегменте появился целый класс игр, который славится реалистичной графикой и правдоподобной физикой. Такие эффекты как взрыв гранаты в шутере, занос машины в гонке ложатся на плечи физического движка. В основе физического движка заложены математические модели, которые просчитываются в процессе игры. Как правило это вычислительные задачи и от того насколько быстро и качественно физический движок справляется с ними зависит привлекательность игры.
В этой статье показано, как собрать и портировать физический движок Bullet Physics на платформу Android на базе процессора Intel Atom.
Читать дальше →
Total votes 30: ↑25 and ↓5 +20
Views 15K
Comments 20

MWC 2014. App Planet. Intel Software

Intel corporate blog Website development *Development for Android *

В обычное время такая расслабленная и неспешно услужливая Барселона сейчас встречает меня высокомерной занятостью и сосредоточенным игнорированием. Это значит, что настало время Mobile World Congress – те пять дней в году, когда за месяц до поездки самый дешевый отель доступен по цене не менее 700 Евро за ночь, а чтобы заселиться в апартаменты где-то в живописной подворотне Готического квартала, нужно предупредить управляющего за час, и еще столько же подождать его у входа.
В этой публикации я поделюсь своими впечатлениями о первых днях конференции и расскажу, что интересного вы не увидели в павильоне Intel, потому, что вас не было среди 67 тысяч зарегистрированных и приехавших участников этого грандиозного события. Хотя, возможно, вы поехали на Embedded World в Нюрнберг, где сейчас тоже находится много моих коллег, и от которых мы ожидаем интересных отчетов. Позже я сделаю небольшой обзор того, что меня впечатлило на стендах других компаний, которых тут столько, что, кажется, все производители устройств и оборудования взяли и бросили свой основной бизнес, занявшись мобильными приложениями.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views 7.1K
Comments 7

Android SDK vs NDK — сравнение производительности однотипных участков кода

Development for Android *
Sandbox
В целях улучшения производительности приложения на Андроид начал постепенно переписывать критические участки кода с Java (SDK) на С++ (NDK). Результат оказался сравнимым с тем, что я получил пару десятков лет назад, делая ассемблерные вставки в код турбопаскаля.
Читать дальше →
Total votes 61: ↑54 and ↓7 +47
Views 51K
Comments 42

ZeptoLab и Codeforces объединяют усилия

ZeptoLab corporate blog Development for iOS *Development for Android *
Ох и давненько мы не радовали хабражителей чем-нибудь свеженьким — за это время накопилось много того, чем делиться хочется. И мы не будем себя в этом сдерживать!

Эта статья будет интересна скорее разработчикам, ну а также всем тем, кто неравнодушен к прекрасному, происходящему по ту сторону игр.

У нас много новостей: мы серьезно выросли за этот период и перешагнули отметку в 80 человек, захватили практически весь этаж в БЦ и по традиции дали нашим художникам возможность оформить новое пространство с присущим им вкусом:

image

Выпустили Cut The Rope “Time Travel” и Cut The Rope 2 c уже всемирно полюбившимися персонажами:

image

Ну и, разумеется, в моменты релиза офис угощался специально обученными ОмНомовидными пироженками.

Сейчас у нас ведется разработка никак не связанных с Cut The Rope игр, которые свет увидит чуть позже (пока сохраним интригу). Ну и, разумеется, любителей резать веревки и монстрика Ам-Няма нам еще есть, чем удивить.

За прошедший год мы существенно доработали и обкатали внутренний фреймворк, позволяющий писать весь игровой код на С++ и собирать билды сразу под iOS и Android. Также за прошедший год мы стали активно использовать возможности C++11, и, несмотря на очевидное количество legacy-кода в самом фреймворке, использование возможностей C++11 в проектном коде новых тайтлов становится нашим стандартом. Параллельно мы рассматриваем прочие средства разработки, например Unity. Однако, в нашем фреймворке есть ряд преимуществ, отказываться от которых так просто не хочется.
Читать дальше →
Total votes 64: ↑51 and ↓13 +38
Views 24K
Comments 42

Android JNI + Intelij Idea + Gradle. Полная автоматизация процесса

Development for Android *
Sandbox
Доброго времени суток!
Данный пост является небольшим руководством, по автоматизации компиляции нативного кода в среде Intellij Idea с использованием Gradle. Gradle предоставляет достаточно большой функционал для автоамтизации сборки проектов. Но даже подключение нативных библиотек к Android проекту требует дополнительных усилий со стороны разработчика.

Предыстория


Недавно я сменил место работы и устроился работать в компанию, занимающуюся разработкой собственного мобильного программного обеспечения. Мы с моими новыми коллегами по работе решили перейти с Eclipse (на котором до этого велась вся разработка) на Intellij Idea, и в добавок с Ant на Gradle. У нас достаточно большой проект, с приличным количеством кода, в том числе с использованием нативного C и C++ кода, как самописного так и уже готовых библиотек.

Тех, кто занимается разработкой Android проектов с использованием Android NDK в среде Intellij Idea + Gradle прошу под кат.
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 12K
Comments 6

Android Studio для NDK под Windows

Programming *C++ *Development for Android *
Sandbox


На днях я обнаружил, что версия Android Studio неуклонно стремится к единице, в связи с чем задумался об изучении этого инструмента. Чтобы не было скучно, я решил поделиться своим опытом и собранными граблями в виде статьи-туториала.

Сразу хочу оговориться, что я не являюсь гуру Android-разработки, поэтому каких-либо откровений в тексте вы не найдете. Зато тут есть пошаговая инструкция по установке и настройке Android Studio под Windows и созданию простейшего проекта с использованием Android NDK.

Также заранее предупреждаю: статья получилась большой и очень подробной (честно, сам не ожидал), даже несмотря на то, что я почти все скриншоты и некоторые листинги кода спрятал под спойлеры.
Читать дальше →
Total votes 49: ↑43 and ↓6 +37
Views 211K
Comments 18

В эмулятор Android добавлена поддержка Intel х64

Intel corporate blog Programming *Development for Android *
Разработчики приложений под Android получили возможность тестировать свои программы на 64-битной платформе Intel.

На прошлой неделе Google добавил 64-битные образы для эмулятора Android под Windows, Linux и Mac OS. Образы доступны для скачивания на сайте Android для разработчиков. 64-битные Android приложения могут адресовать более 3 Гб оперативной памяти, кроме того, им доступны дополнительные процессорные регистры.

Добавим, что не менее ожидаемого эмулятора новой архитектуры ARMv8 пока выпущено не было.
Total votes 14: ↑9 and ↓5 +4
Views 5.1K
Comments 0

Релиз CrystaX NDK 10.1

C++ *Development for Android *
Приветствую всех читателей!

Спешу сообщить о выпуске CrystaX NDK 10.1 — наборе инструментов для разработки на C/C++ (и Objective-C) под Android.

CrystaX NDK разработан как прозрачная замена для Android NDK от Google, но при этом добавляет немало вкусностей, отсутствующих в оригинальном NDK. Прежде всего, это означает, что CrystaX NDK можно использовать вместо Google NDK, и все будет продолжать работать как раньше. Но при этом станут доступными многие вещи, отсутствующие в Google NDK.

В этом релизе мы проделали немалую работу по обеспечению большей совместимости со стандартами ISO C, ISO C++ и IEEE Std 1003.1 (POSIX), благодаря чему портирование существующего кода на Android становится намного легче. Как вы, быть может, знаете, Android libc (Bionic) далека от того, чтоб соответствовать указанным стандартам. Многие части просто не реализованы, другие — реализованы с ошибками, заставляющими провести в отладке долгие часы, тем более что уж от libc этого не ожидаешь (помню до сих пор, как пришлось отлаживатся два дня, прежде чем выяснилось, что strtod() не умеет парсить «0xXXXX» строки). Конечно, со временем ситуация улучшается, и в новых версиях Android libc потихоньку исправляется и дополняется, но а) темпы исправлений и дополнений абсолютно неудовлетворительны и б) что делать разработчикам, программы которых должны работать не только на последних, но и на предыдущих версиях Android?

Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Views 8.3K
Comments 17

Удобоваримый вызов Java методов из нативного кода

C++ *Development for Android *
Sandbox
Существует довольно много приложений под Android, которые совмещают C++ и Java код. Где Java выступает оберткой/прослойкой, а C++ выполняет всю грязную работу. Пожалуй, ярким примером могут служить игры. В связи с этим часто приходится вызывать Java код из нативного для доступа к системным свойствам и плюшкам, которые предоставляет система (переключится на другую активность, послать или скачать что-либо из интернета). Причин много, а проблема одна: каждый раз приходится писать в лучшем случае 5 строчек кода и помнить, какую сигнатуру функции нужно запихнуть в параметр. Потом еще нужно перевести эти параметры в нужный тип. Стандартный пример из туториалов:

long f (int n, String s, float g); 

Строка-сигнатура для данного метода будет (ILjava/lang/String;F)J.

Вам удобно это все запоминать? А переводить С-строки в jstring? Мне — нет. Мне хочется писать:

CallStaticMethod<long>(className, “f”, 1, 1.2f); 

Подробности под катом
Total votes 34: ↑33 and ↓1 +32
Views 17K
Comments 15

Переписываем с java на C++ на платформе Android

Programming *Development for Android *
Sandbox
Хочу с вами поделиться опытом переписывания с java на C++ на платформе Android и тем, что в результате получилось.

Для своего маленького домашнего проекта был использован алгоритм поиска лиц Виола-Джонса, java-исходники с моделью были взяты отсюда code.google.com/p/jviolajones с небольшой модификацией — были добавлены два класса: Point и Rectangle. Уточню почему не стал использовать OpenCV под Android — для его работы необходимо поставить отдельно приложение-библиотеку, что в моем случае будет весьма неудобно, и опыты показали его падение без предупреждения, разбираться с этим долго не стал, также и с поиском других библиотек, и решил взять простейшую готовую реализацию.

Быстродействие алгоритма показало плачевные результаты, на фотографии размером 400 на 300 на моем стареньком разбитом GT-I9300I — 54 секунды, на avd (виртуальном устройстве) и то дольше — 250 секунд.
Читать дальше →
Total votes 16: ↑12 and ↓4 +8
Views 21K
Comments 15
1