westward.cv.ua

Статьи на компьютерную тематику и личный блог

Главная Android Программирование

Открыл layout одного из окон android проекта в layout editor'е Eclipse. И получил сообщение NullPointerException при вызове метода getSystemService() в кастомном компоненте (compound control), который пару дней назад закончил и он без проблем работал. Минут пять смотрел код, думал, а потом решил перезапустить Eclipse.

С перезапуском проблема сама собой исчезла. Не зню, чего Eclipse не хватало, но я подумал: хорошо, что я знал - мой компонент рабочий, что фигня какая-то. А если бы я только работал с этим компонентом? Эдак же можно день кувыркаться, борясь с проблемой, которой на самом деле нет... Грустно.

 

Безусловно, Eclipse IDE вполне удобная среда программирования. И я не уверен на все 100, что в моем конкретном случае виноват Eclipse, а не Android Development Toolkit плагин. Но неприятно, когда IDE подкладывает разработчику свинью в самый неподходящий момент.

Думаю, любой Android разработчик, использующий Eclipse, рано или поздно нарывается на глюк со сборкой ресурсов. Как правило. этот глюк проявляется в том, что строки сообщений, элементов меню, кнопок Android приложения при очередном отладочном запуске приложения вдруг меняются на соседние. Почему этот глюк изредка появляется - мне неизвестно. И лечится он просто, командой меню Project - Clean.

Но сегодня этот глюк проявился при сборке APK, который был загружен в Android Market. Хорошо, что я перепроверил только что загруженный в Маркет релиз, увидел на своем смартфоне черное окно без какого-либо текста вместо Welcome Screen, и за 15 минут поисков ответа на вопрос "What a fuck is here?"смог догадаться, в чем дело. А если бы не догадался? Оно ж несолидно, блин, если люди загружают обновление и получют совсем не то, что ожидали.

Короче говоря, надо составлять checklist, контрольную карту обязательных процедур перед взлетом публикацией приложения. И там обязательно должен быть пункт Project - Clean.

P.S. Сергей, я верю что Xcode вылизан по самое нехочу и подобных глюков там по определению быть не может. ;)

P.P.S. Виноват, в этот раз зря накатил бочку на Eclipse. Моя была ошибка. Каюсь.

 

Сегодня угрохал практически весь рабочий день на поиск решения проблемы. Понадобилось собрать тестовую версию моего приложения, изменил одну опцию в проекте, выбрал команду Export Android Application в Eclipse и... получил ошибку "Conversion to Dalvik format failed with error 1".

Советов в интернет по поводу этой ошибки много. Следуя им, я переустановил несколько библиотек SDK, удалял из Eclipse свои проекты и заново их добавлял, запускал eclipse.exe -clean. Не успел последовать совету "снесите все и поставьте заново", угрохал бы еще вечер впридачу.

Слава высшим силам, нашелся-таки правильный для моей ситуации совет. В чем проблема: недавно обновился набор инструментов, Android SDK tools до версии 12. В частности, гугл прилично улучшил Layout Editor, редактор окон Android приложений. Похоже, в этот пакет инструментов включен и ProGuard, утилита защиты андроид приложений от реверс-инжениринга. Утилита вызывается на финальном этапе сборки андроид приложения через командный файл:

(путь к установленному SDK)\tools\proguard\bin\proguard.bat

И этот файл неправильный для нового комплекта SDK Tools версии 12. Вот рецепт исправления ошибки:

Измените строку
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
на
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

P.S. В ветке обсуждения проблемы были и другие варианты - обновить ProGuard, а также откатиться на SDK Tools 11.

 

Зарегистрировался как разработчик в Android Market. Вроде бы простая процедура, но получилась не сразу. Рад, что повезло уложиться в один день: поиск в интернет выдал отзывы людей, которые несколько дней безуспешно пытались зарегистрироваться. Попытаюсь просуммировать, что я делал, хотя если честно, до сих пор не понимаю, почему оно заработало только с третьей или четвертой попытки.

 

Показал практически законченную версию приложения другу. Получил два неплохих совета, решил включить их в эту же версию.

В результате за пару дней наломал в коде приложения столько, что вчера вечером в ужасе откатился на 80% назад. На будущее:

  1. Лучшее -враг хорошего.
  2. За один раз - одно изменение.

Разумеется, это прописные истины, но что поделаешь - время от времени приходится открывать лично для себя очередную Америку через форточку. ;)

 

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

Да, еще самая главная "мелочь": надо зарегистрироваться на Android Market, получить официальный статус, собрать приложение для публикации.

Работу начал в конце февраля, ушло примерно три месяца. Отодвинул в сторону все прочее, возможно кто-то заметил, что в последние месяцы почти ничего нового не появлялось на сайте. Много работы было сделано вечерами и ночами, уже почти привык ложиться около 2х часов ночи. Кстати, не далее, как вчера с часу до двух ночи искал ошибку. Слава процессорным богам, нашел! Была пропущена одна запятая в SQL-строке. ;)

До момента публикации в маркете детали не раскрываю. Надеюсь, ненадолго.

 

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

В последние недели ежедневно использую замечательный ресурс, сайт stackoverflow.com, для поиска решений, возникающих при программировании для платформы Android. Огромнейшая куча вопросов и, что самое важное - ответов, структурированных по всем популярным платформам и языкам программирования. Всем новым посетителям сайт услужливо предлагает ознакомиться с FAQ по поиску - и тот, кто игнорирует это приглашение, делает большую глупость. Потому, что там объясняется, как правильно пользоваться поиском, фильтруя только нужные разделы.

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

 

Книга по программированию AndroidДочитал начатую еще в 2010 году книгу по программированию для платформы Android, "Teach Yourself Android Application Development in 24 Hours". Название из серии "24 часа из жизни чайника" ;), но на деле эта книга показалась мне наиболее краткой и доступной. Конечно же, одной этой книги недостаточно, также не хватает общих знаний по Java. Но я немного подумал и решил, что браться за новую книгу я пока не буду, иначе процесс изучения теории может затянуться до бесконечности. Надо переходить к практике, а уже потом заходить на следующий круг чтения.

Ок, сказано-сделано. Попробовал закодировать кусочек одной идеи, для которой мне необходимо реализовать функционал двух сетевых утилит: ping и traceroute.