LiteCoding

Заметки о программировании

Архив по тэгу ‘Android’

Августовские обновления

без комментариев

Дорогие (не)многочисленные читатели этого блога,

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

1. Andor’s Trail Editor
Пару месяцев назад написал редактор сэйвов для Andor’s Trail и сегодня выложил первую альфу, которая все это время пылилась у меня на винчестере. Этот редактор пока может и умеет не так уж и много: читать, писать и редактировать количество уже имеющегося в инвентаре предмета. Но это только начало. Вся беда в том, что рисовать я не умею совсем, поэтому если у вас есть желание помочь этому опенсорсному проекту, то я буду рад скетчам GUI, иконкам для классов предметов и т.д. Естественно, каждый соавтор будет упомянут на странице проекта и в разделе «О приложении» (когда он появится).
Скачать apk и исходные коды можно с google code.

2. Smali2Java
Вернулся к своему долгострою, который «подвис» из-за возникших проблем с алгоритмизацией казалось бы простых действий. На данном этапе (pre-Alpha) он уверенно разбирает шапку smali-класса, импорты, поля и прототипы методов. Надеюсь, в ближайшем будущем он уже сможет осилить восстановление конструкторов и геттеров/сеттеров. Этому проекту также требуется помощь: ссылки на описание работы алгоритмов восстановления исходного кода, советы, патчи, запросы новых и баг-репорты по заявленным функциям.

В принципе, это все хорошие новости на данный момент. Не забывайте оставлять комментарии, даже если согласны (а тем более, если не согласны) с моим мнением.

Ваш блогмастер LiteCoding.

Written by Дмитрий Воробьев

Август 8th, 2012 at 14:44

Как бороться с INSTALL_PARSE_FAILED_NO_CERTIFICATES

без комментариев

Вот, предположим, собираете вы приложение с помощью ant, все прописано как надо, все ПО, участвующее в процессе сборки приложения последних версий, в т.ч. и JDK7. Все проходит успешно, на выходе получаете apk-файл, а приложение не устанавливается. При попытке установить через ADB появляется «информативное» сообщение INSTALL_PARSE_FAILED_NO_CERTIFICATES. Что делать? На самом деле, тут виноват именно JDK7, который по умолчанию использует SHA-256 вместо SHA-1 в утилите jarsigner. Решить эту проблему очень просто. Т.к. задание signjar в ant не поддерживает перегрузку алгоритма для генерации подписи, то вам придется установить JDK6 (вместе с JDK7 они отлично уживаются) и изменить значение переменной окружения JAVA_HOME на каталог bin установленного JDK6. После этого процесс сборки заработает как надо.

Written by Дмитрий Воробьев

Апрель 16th, 2012 at 14:54

Генерация хэша ключа для интеграции Android-приложения с Facebook

без комментариев

Известно, что этот хэш можно сгенерировать следующей командой:
keytool -exportcert -alias androiddebugkey -keystore "\.android\debug.keystore" | openssl sha1 -binary | openssl base64
(зачем это нужно, можно прочитать в официальной документации).

Но стоит допустить ошибку в пути к хранилищу ключей, алиасе ключа или пароле, хэш все равно будет сгенерирован, но интеграция работать не будет. Для того, чтобы избежать этой ситуации (а также чтобы можно было генерировать хэш без JDK и OpenSSL), я написал простенькую утилиту. В результате работы она выдает либо сообщение об ошибке, либо хэш. Параметры командной строки взяты из JDK keytool. Скачать скомпилированный вариант можно отсюда.

Written by Дмитрий Воробьев

Март 22nd, 2012 at 11:47

android-classkit v0.3

без комментариев

Вчера зарелизил очередную версию библиотеки для Android, которая расширяет возможности стандартного API. На данный момент у нее следующие возможности:

1. Позволяет использовать кастомные layout’ы в плоских списках (аналог SimpleAdapter)
2. Позволяет использовать кастомные layout’ы в группированных списках (аналог HeaderViewListAdapter)
3. Позволяет использовать кастомные layout’ы для настроек (preferences)
4. Позволяет использовать альтернативные хранилища для настроек (sqlite, RAM и др.)

Скачать последнюю версию android-classkit и демонстрационное приложение можно отсюда.
Прочитать о том, как использовать кастомные layout’ы в списках можно здесь.

Written by Дмитрий Воробьев

Январь 14th, 2012 at 18:10

Нестандартный ListView своими руками

без комментариев

Честно говоря, я немного покривил душой, когда придумывал название статьи. Речь сейчас пойдет не столько о нестандартном списке, сколько о нестандартно выглядящих элементах списка. Сам по себе Android API предоставляет очень удобный инструмент для создания списков с нестандартными элементами. Иногда этих возможностей достаточно, тогда с помощью класса SimpleAdapter и несложных манипуляций можно получить требуемый результат (подробности можно посмотреть, например, в одной из статей блога Sai Geetha). Но когда требуется изменить отображение элемента в соответствии с состоянием объекта, приходится садиться за собственную реализацию.

И вот, появляется задача изменить цвет фона элементов на четных позициях, отображать те или иные вложенные элементы в зависимости от флагов и значений. Добро пожаловать в мир настоящих списков с нестандартными элементами.
Читать далее »

Written by Дмитрий Воробьев

Январь 14th, 2012 at 15:11

Драйвер ADB для телефонов HTC

без комментариев

Что самое интересное, ко всем телефонам HTC, которые так или иначе попадали мне в руки, подходят стандартные драйвера, которые идут в комплекте с Android SDK (в SDK Manager нужно поставить галку для пакета Extras / Usb Driver package). Если по каким-то причинам неопознанное устройство в диспетчере устройств есть, а драйвер для него в папке usb_driver не находится, то тут помогает простая правка inf-файла.

1. Смотрим свойства устройства в диспетчере задач. Нас там интересует код экземпляра устройства. Точнее, строка с его VID и PID
2. Модифицируем inf-файл. В секции [Google.NTx86] и [Google.NTamd64] добавляем в зависимости от кода устройства:
. Если строка с VID и PID содержит MI_01, добавляем в обе секции строку

%CompositeAdbInterface% = USB_Install, USB\VID_значение&PID_значение&MI_01

например,

%CompositeAdbInterface% = USB_Install, USB\VID_0BB4&PID_0C9A&MI_01

2b. Если строка с VID и PID не содержит MI_01, добавляем в обе секции строку

%SingleAdbInterface% = USB_Install, USB\VID_значение&PID_значение

например,

%SingleAdbInterface% = USB_Install, USB\VID_0BB4&PID_0C01

3. Снова выполняем поиск драйвера в usb_driver и следим за прогрессом его установки. Готово!

Written by Дмитрий Воробьев

Ноябрь 17th, 2011 at 13:30

Posted in Заметки

Tagged with ,

Драйвер ADB для Motorola XOOM

без комментариев

UBS-драйвер для Motorola Xoom можно скачать отсюда, либо с помощью прямой ссылки на Motorola 5.2.0 Driver with MotoHelper.

Written by Дмитрий Воробьев

Октябрь 14th, 2011 at 11:09

Posted in Заметки

Tagged with ,

repo, Python и Cygwin — скачиваем исходники Android на машину с Windows

без комментариев

Если возникла задача скачать все дерево репозиториев Android, без утилиты repo не обойтись. Что это такое, и как ей пользоваться, можно прочитать здесь. Но основная проблема заключается, что после в cygwin’е она не запускается, вываливаясь с ошибкой конвертации UnicodeDecodeError и текстом «‘ascii’ codec can’t decode…» в функции _SetupGnuPG(). С этим бороться довольно просто: открываем repo в текстовом редакторе, находим серию импортов, и копируем после последнего следующий код.

import locale
locale.setlocale(locale.LC_ALL,"")
reload(sys)
sys.setdefaultencoding('utf-8')

После этого запускайте repo, как это описано в инструкции, и запаситесь терпением, потому что дерево репозиториев будет загружаться и разворачиваться довольно долго.

Written by Дмитрий Воробьев

Июль 11th, 2011 at 19:10

Developer Garage в Нижнем Новгороде

без комментариев

28 июня 2011 года в Нижнем Новгороде состоится Developer Garage. Главные особенности этого мероприятия: одна секция, небольшое количество тем, длительные выступления участников. Значительный упор будет сделан на практическую сторону разработки и продвижения программного обеспечения. Developer Garage особенно будет полезным для желающих ознакомиться с основами разработки ПО для iPhone, Android, как с помощью стандартных средств, так и используя кросплатформенные решения.

Место проведения: Нижний Новгород, ул.Родионова, 136 (Новый корпус ВШЭ).
Участие бесплатное, по предварительной регистрации на сайте.

Постоянно пополняющийся список тем

Written by Дмитрий Воробьев

Июнь 21st, 2011 at 10:06

Развертывание заранее созданной БД в приложении для Android

без комментариев

Как я уже неоднократно тут писал, задачи бывают разные. В этот раз мы будем говорить о случае, когда приложение поставляется с контентом «на борту». Согласитесь что, неразумно заставлять пользователя дожидаться окончания загрузки каталога книг, когда можно включить его в приложение, а затем при необходимости накатить обновления. Итак, что же нужно сделать, если перед вами возникла задача развернуть базу данных из ресурсов приложения на клиентском устройстве.
Читать далее »

Written by Дмитрий Воробьев

Июнь 21st, 2011 at 00:20