четверг, 20 декабря 2012 г.

Автоинкремент версии в QT / С++ приложениях

Задачу инкремента номера версии при сборке релиза QT-шного проекта, естественно, хочется автоматизировать. Но есть несколько тонкостей.

пятница, 23 ноября 2012 г.

Получение доходов с Google Play на расчетный счет ИП

В октябре 2012 вступили в силу новые правила получения платежей от продаж на Google Play и, одновременно, новая инструкция ЦБ РФ О порядке предоставления документов, связанных с проведением валютных операций (Инструкция Банка России от 04.06.2012 № 138-И - PDF). В результате, платежи с Google Checkout теперь можно получать напрямую на расчетный счет индивидуального предпринимателя. Это позволяет избавиться от работы с AdSense и связанных с ней морем вопросов. Многие разработчики уже опробовали новую схему. Попробовал и я - на днях пришел первый платеж. Хочу поделиться подробностями организации работы с банком.

вторник, 13 ноября 2012 г.

Ошибка "unexpected at this time" при установке boost 1.52

Взялся устанавливать свежий boost 1.52. При попытке собрать bjam и b2 командой "...boost_1_52_0\tools\build\v2\engine\build.bat" вылетела ошибка
C:\>D:\libs\boost_1_52_0\tools\build\v2\engine\build.bat
\Git\bin";"C:\utils\PuTTY";C:\Program Files (x86)\MiKTeX 2.9\miktex\
bin\;C:\Program Files (x86)\Git\cmd;C:\Program Files\TortoiseSVN\bin" was unexpected at this time.
Что за "was unexpected at this time"?

Решение нашлось здесь. Проблема была в том, что некоторые пути, перечисленные в переменной среды %PATH%, содержали кавычки. При подстановке таких путей в "vcvars32.bat" местами возникало двоековычье :) и батник вылетал. Убрал кавычки во всех путях в %PATH% - boost нормально установился.

Вызов функций Android из Unity3d

Unity3D - мощная система разработки 3D приложений, - поддерживает Android. Документация, к сожалению, очень скудная, да и сам процесс разработки - не сахар... Тем не менее, возможность создать Android-приложение есть.

В целом процесс разработки выглядит так. Вы создаете Android-проект, экспортируете его в jar-файл. Далее, помещаете этот jar файл в директорию проекта Unity: Assets\Plugins\Android\xxx.jar. В эту же директорию кладете AndroidManifest.xml, jar-файлы сторонних библиотек, которые задействованы в вашем проекте и ресурсы (папка res с той же структурой, что в обычном Android-проекте).

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

воскресенье, 12 августа 2012 г.

Квест: как под Android выдрать кадр из видеофайла средствами FFMpeg и передать его на сторону Java.

Программирование под Android очень часто напоминает настоящий квест. Шаг влево, шаг вправо - и ты попадаешь на минное поле, полное багов, особенностей реализации, девайсо-зависимых проблем и т.п. И так происходит каждый раз, как только начинаешь реализовывать что-нибудь более менее нетривиальное. Вот свежий пример. Потребовалось мне извлекать кадры из видеофайла и показывать их на экране. Казалось бы - что может быть проще?

среда, 14 марта 2012 г.

Идентификаторы Android-контакта: ContactID и LookupKey. Нюансы и баги.

Согласно документации, контакт в Android характеризуется двумя идентификаторами: contactId и lookupKey. Предположим, мы создаем приложение, работающее с определенным контактом. Пример - мое приложение Animated Widget Contact Launcher, которое позволяет создавать для контактов виджеты быстрого доступа. Какой идентификатор контакта нужно хранить в настройках такого виджета - contactId или lookupKey? Или оба? Как правильно создавать ссылку на контакт? Практика показала, что вопрос не тривиален.

среда, 1 февраля 2012 г.

Тестирование Android приложений

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

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

воскресенье, 29 января 2012 г.

Список языков с переводом названий (ISO 639-1).

Занимаюсь локализацией своего Android приложения Animated Widget Contact. Потребовалось найти список языков, поддерживаемых Android, с переводом названий. Т.е. в виде Ru-Russian-Русский, da-Danish-Dansk и т.д. Как ни странно, готовый список найти не удалось. Поэтому составил такой список самостоятельно, взяв за основу следующие источники: 1, 2, 3, 4. В список включил только языки имеющие двухбуквенный код по стандарту ISO 639-1, т.к. именно они актуальны для Android приложений. Вот что в итоге получилось.

понедельник, 16 января 2012 г.

Сдача налоговой отчетности ИП за 2011 год

ИП на УСН без работников сдает за 2011 год в налоговую следующую отчетность:
  • Сведения о среднесписочной численности работников за предшествующий календарный год (не позднее 20 января)
  • Книга учета доходов и расходов организаций и индивидуальных предпринимателей, применяющих УСН (не позднее 30 апреля)
  • Налоговая декларация по налогу, уплачиваемому в связи с применением УСН (не позднее 30 апреля)
Рассмотрим, как эту отчетность можно подготовить.

пятница, 6 января 2012 г.

Статические анализаторы кода для Android-приложения.

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

Для разработчиков, ведущих кодирование в одиночку, статические анализаторы вещь вообще неоценимая. Ведь им некому показать код своего приложения. Так что "электронный помощник", способный грамотно выполнить "code review", может им здорово пригодится.

Вопрос - какие статические анализаторы кода доступны разработчику Android приложений? Для Java статических анализаторов существует множество (см. список lint приложений для Java в википедии), но не все они умеют работать с Android-приложениями и, тем более, учитывать их специфику.

Мне удалось отыскать следующие статические анализаторы кода, которые умеют работать с Android-приложениями:
  • Lint. "Родной" анализатор кода для Android, входит в состав Android SDK начиная с r16.
  • FindBugs (бесплатный).
  • Checkstyle (бесплатный).
  • CodePro Analytix (бесплатный).
  • PMD (бесплатный)
  • Motodev App Validator (бесплатный). Входит в состав среды разработки MOTODEV Studio for Android. Есть online вариант.
  • Klocwork Solo (платный). Доступна триальная версия
  • JTest от Parasoft (платный).
  • Julia (платный). Доступен бесплатный online вариант.
Далее представлены результаты сравнения всех этих анализаторов - какой анализатор что умеет, для чего предназначен, насколько удобно пользоваться, какие ошибки находит, насколько он полезен на практике.

Чтобы было интереснее сравнивать, я "натравил" каждый из этих анализаторов на одно и то же тестовое приложение. В качестве такового я взял код одной из ранних версий моего приложения Animated Widget Contact Launcher. Версию я выбрал годичной давности, багов и проблем в ней было вагон (с FindBugs на тот момент я был не знаком). Так что "что поискать" в ней точно было.