Не так давно мы с другом начали изучать платформу Android и решили разработать один проект, выглядит разработка так: 2 – 3 раза в неделю мы собираемся у меня обсуждаем проект, объединяем все то, что было написано нами с момента крайней встречи и решаем, кто, что будет делать дальше.
И вот на одной такой встрече, запустив в очередной раз проект на моем смартфоне, я показываю другу эффект, который появился вследствие того что мне хотелось как можно быстрее получить что-то работающее и лень было разбираться как сделать MultiTouch (хотя как потом оказалась сложного там нет), поэтому я для начала использовал просто onTouchEvent(MotionEvent event) и даже не проверяя какой там именно MotionEvent происходит (пользователь опускает палец на экран, пользователь передвигает пальцем по экрану, пользователь поднимает палец с экрана), а просто обрабатывал их все. Вот и получилось, перемещаешь палец по экрану и происходит взаимодействие со всеми объектами которые попадаются у него на пути, вместо того что было задумано, а именно реакция должна быть только на опускание пальца на экран. На мою демонстрацию этой возможности друг сказал: «Это у тебя там какой-то чит». Я ответил: «А что если нам надо очистить экран от всех объектов водя пальцем по экрану». Примерно так появилась идея приложения, которое должно делать процесс протирания экрана более увлекательным – запускаешь приложение, берешь салфетку, протираешь экран, стирая с него эти объекты, а они все новые и новые появляются, пока не сотрешь n штук. Решили, ставим себе цель: «Чтобы не произошло в мире, а мы должны сегодня сделать это приложение и выложить его в Android Market».
Начать решили с графики, но что рисовать? Какие объекты мы будем стирать с экрана телефона? А пусть на экране размножаются бактерии! Не так давно я скачал несколько уроков по Inkscape и приобрел небольшой опыт рисования в нем, поэтому решили, что я нарисую всю необходимую графику, благо ее не так много. Т.к. мы не художники то идеи как должны выглядеть эти бактерии в голову не приходили, немного погуглив и посмотрев на то что рисуют другие мы поняли что примерно надо рисовать. Опыта рисования мне явно не доставало, поэтому мне потребовалось часа два (если не больше), чтобы появились пять изображений бактерий, первая бактерия далась сложнее всего, потом стало легче и процесс пошел гораздо быстрее.
Самое трудное позади и можно переходить непосредственно к коду, необходимо было выбросить из нашего проекта все лишнее и в оставшуюся часть внести необходимые изменения, как потом оказалось, во многое пришлось внести такие изменения, что легче было писать все с нуля, хотя изначально казалось, что все будет достаточно просто. Из-за этого периодически появлялись довольно интересные глюки, которые я не мог отловить т.к. мне это код настолько приелся, что я не чего уже в нем не замечал, хорошо, что коллега достаточно легко их обнаруживал, благодаря тому, что он смотрел на код свежим взглядом, т.к. пока я занимался этим проектом он продолжал работать над нашим основным проектом. В итоге все получилось, приложение работает, подобрали количество бактерий, решили что когда n микробов будет уничтожено телефон скажет спасибо (на экране отобразиться рожица и слово “Thanks!!!”), я занялся рисованием этого финального экрана, а за одно и иконки для приложения, а друг начал сочинять описание приложения для маркета и пытаться это описание перевести на английский.
Теперь вроде все готово заходим в Android Market видим что надо: apk – файл (само приложение), пару скринов нашего приложения (сразу делаем их при помощи утилиты DDMS), большую иконку (ее сделать не трудно, хорошо, что все рисовали в векторной графике), название приложения (решили назвать Display Cleaner) и описание. Выбираю apk файл нажимаю загрузить, а в ответ маркет выдает: Market does not accept apks signed with the debug certificate. Create a new certificate that is valid for at least 50 years. Market requires that the certificate used to sign the apk be valid until at least October 22, 2033. Create a new certificate, примерно это означает следующее: файл должен быть подписан каким-то там сертификатом который необходимо создать. Время третий час ночи и хочется все уже бросить, но начинаем разбираться, как подписать этот файл. Гуглим, не чего внятного на русском найти не удалось, нашли на английском начинаем разбираться там что-то про командную строку, читаем дальше и находим более или менее понятную инструкцию, напишу здесь подробнее как мы создавали файл сертификата, может это кому и пригодиться: В Eclipse на панели Package Explorer правой кнопкой мыши жмем на папке нашего проекта, в появившемся меню выбираем: Android Tools -> Export Signed Application Package… Перед нами появилось окно, здесь наш проект уже выбран, поэтому не чего делать не надо сразу жмем Next, в следующем окне выбираем Create new keystore, в Location пишем или выбираем где будет храниться файл ключа: Буква_диска:\путь\имя_файла (файла с таким именем не должно существовать), ниже два раза вводим пароль (минимум 6 символов) и жмем Next. Теперь необходимо вести информацию для создания ключа: Alias (псевдоним) видимо название ключа, дальше пароль два раза и Validity (число лет действия ключа), мы написали 25 лет рекомендует сама утилита, теперь First and Last Name здесь я думаю можно написать имя разработчика или название компании, остальные поля можно не заполнять, нажимаем Next и выбираем файл apk нашего приложения, жмем Finish вот и все файл подписан и теперь можно выгружать его в Android Market, что мы и сделали. (Кстати файл сертификата надо сохранить, а пароль запомнить. Этим же сертификатом надо будет подписывать все последующие версии приложения, иначе Market просто не даст загрузить новую версию приложения.)
Вот и все простенькое приложение за один вечер готово и выложено на Android Market, работу начали примерно в 19:00 закончили ближе к 3:00 и того получается около 8 часов работы.
Исправляем последствия спешки:
На следующий день обнаружилось, что мы в спешке неверно составили описание приложения, забыли упомянуть про то, что надо взять салфетку и вытирать ей экран, написано было примерно следующее: Sometimes, the phone's screen is dirty. Different microbes are settling on the display of your phone. Destroy them and your phone tell you «Thanks!!!» обнаружив это позвонил Владимиру он дописал необходимый текст и я изменил описание приложения: Sometimes, the phone's screen is dirty. Different microbes are settling on the display of your phone. Do you want the process of display cleaning was funny? Take a napkin and start application. Destroy them and your phone tell you «Thanks!!!» и за одно сразу добавил описание приложения на русском. Еще через пару дней смотря на скриншот приложения и на иконку в большом разрешении понял, что в приложении не хватает синей бактерии посмотрев код, сразу заметил, что при генерации бактерий случайным образом я поставил число на единицу меньше и поэтому последняя бактерия не учитывается, исправили это, а также немного уменьшили количество бактерий и скорость их анимации (они слишком быстро мерцали). И выпустили версию 1.1.
Чуть не забыл, вот ссылка на само приложение: market.android.com/details?id=com.bigbears.android.microbs&feature=search_result
И вот на одной такой встрече, запустив в очередной раз проект на моем смартфоне, я показываю другу эффект, который появился вследствие того что мне хотелось как можно быстрее получить что-то работающее и лень было разбираться как сделать MultiTouch (хотя как потом оказалась сложного там нет), поэтому я для начала использовал просто onTouchEvent(MotionEvent event) и даже не проверяя какой там именно MotionEvent происходит (пользователь опускает палец на экран, пользователь передвигает пальцем по экрану, пользователь поднимает палец с экрана), а просто обрабатывал их все. Вот и получилось, перемещаешь палец по экрану и происходит взаимодействие со всеми объектами которые попадаются у него на пути, вместо того что было задумано, а именно реакция должна быть только на опускание пальца на экран. На мою демонстрацию этой возможности друг сказал: «Это у тебя там какой-то чит». Я ответил: «А что если нам надо очистить экран от всех объектов водя пальцем по экрану». Примерно так появилась идея приложения, которое должно делать процесс протирания экрана более увлекательным – запускаешь приложение, берешь салфетку, протираешь экран, стирая с него эти объекты, а они все новые и новые появляются, пока не сотрешь n штук. Решили, ставим себе цель: «Чтобы не произошло в мире, а мы должны сегодня сделать это приложение и выложить его в Android Market».
Начать решили с графики, но что рисовать? Какие объекты мы будем стирать с экрана телефона? А пусть на экране размножаются бактерии! Не так давно я скачал несколько уроков по Inkscape и приобрел небольшой опыт рисования в нем, поэтому решили, что я нарисую всю необходимую графику, благо ее не так много. Т.к. мы не художники то идеи как должны выглядеть эти бактерии в голову не приходили, немного погуглив и посмотрев на то что рисуют другие мы поняли что примерно надо рисовать. Опыта рисования мне явно не доставало, поэтому мне потребовалось часа два (если не больше), чтобы появились пять изображений бактерий, первая бактерия далась сложнее всего, потом стало легче и процесс пошел гораздо быстрее.
Самое трудное позади и можно переходить непосредственно к коду, необходимо было выбросить из нашего проекта все лишнее и в оставшуюся часть внести необходимые изменения, как потом оказалось, во многое пришлось внести такие изменения, что легче было писать все с нуля, хотя изначально казалось, что все будет достаточно просто. Из-за этого периодически появлялись довольно интересные глюки, которые я не мог отловить т.к. мне это код настолько приелся, что я не чего уже в нем не замечал, хорошо, что коллега достаточно легко их обнаруживал, благодаря тому, что он смотрел на код свежим взглядом, т.к. пока я занимался этим проектом он продолжал работать над нашим основным проектом. В итоге все получилось, приложение работает, подобрали количество бактерий, решили что когда n микробов будет уничтожено телефон скажет спасибо (на экране отобразиться рожица и слово “Thanks!!!”), я занялся рисованием этого финального экрана, а за одно и иконки для приложения, а друг начал сочинять описание приложения для маркета и пытаться это описание перевести на английский.
Теперь вроде все готово заходим в Android Market видим что надо: apk – файл (само приложение), пару скринов нашего приложения (сразу делаем их при помощи утилиты DDMS), большую иконку (ее сделать не трудно, хорошо, что все рисовали в векторной графике), название приложения (решили назвать Display Cleaner) и описание. Выбираю apk файл нажимаю загрузить, а в ответ маркет выдает: Market does not accept apks signed with the debug certificate. Create a new certificate that is valid for at least 50 years. Market requires that the certificate used to sign the apk be valid until at least October 22, 2033. Create a new certificate, примерно это означает следующее: файл должен быть подписан каким-то там сертификатом который необходимо создать. Время третий час ночи и хочется все уже бросить, но начинаем разбираться, как подписать этот файл. Гуглим, не чего внятного на русском найти не удалось, нашли на английском начинаем разбираться там что-то про командную строку, читаем дальше и находим более или менее понятную инструкцию, напишу здесь подробнее как мы создавали файл сертификата, может это кому и пригодиться: В Eclipse на панели Package Explorer правой кнопкой мыши жмем на папке нашего проекта, в появившемся меню выбираем: Android Tools -> Export Signed Application Package… Перед нами появилось окно, здесь наш проект уже выбран, поэтому не чего делать не надо сразу жмем Next, в следующем окне выбираем Create new keystore, в Location пишем или выбираем где будет храниться файл ключа: Буква_диска:\путь\имя_файла (файла с таким именем не должно существовать), ниже два раза вводим пароль (минимум 6 символов) и жмем Next. Теперь необходимо вести информацию для создания ключа: Alias (псевдоним) видимо название ключа, дальше пароль два раза и Validity (число лет действия ключа), мы написали 25 лет рекомендует сама утилита, теперь First and Last Name здесь я думаю можно написать имя разработчика или название компании, остальные поля можно не заполнять, нажимаем Next и выбираем файл apk нашего приложения, жмем Finish вот и все файл подписан и теперь можно выгружать его в Android Market, что мы и сделали. (Кстати файл сертификата надо сохранить, а пароль запомнить. Этим же сертификатом надо будет подписывать все последующие версии приложения, иначе Market просто не даст загрузить новую версию приложения.)
Вот и все простенькое приложение за один вечер готово и выложено на Android Market, работу начали примерно в 19:00 закончили ближе к 3:00 и того получается около 8 часов работы.
Исправляем последствия спешки:
На следующий день обнаружилось, что мы в спешке неверно составили описание приложения, забыли упомянуть про то, что надо взять салфетку и вытирать ей экран, написано было примерно следующее: Sometimes, the phone's screen is dirty. Different microbes are settling on the display of your phone. Destroy them and your phone tell you «Thanks!!!» обнаружив это позвонил Владимиру он дописал необходимый текст и я изменил описание приложения: Sometimes, the phone's screen is dirty. Different microbes are settling on the display of your phone. Do you want the process of display cleaning was funny? Take a napkin and start application. Destroy them and your phone tell you «Thanks!!!» и за одно сразу добавил описание приложения на русском. Еще через пару дней смотря на скриншот приложения и на иконку в большом разрешении понял, что в приложении не хватает синей бактерии посмотрев код, сразу заметил, что при генерации бактерий случайным образом я поставил число на единицу меньше и поэтому последняя бактерия не учитывается, исправили это, а также немного уменьшили количество бактерий и скорость их анимации (они слишком быстро мерцали). И выпустили версию 1.1.
Чуть не забыл, вот ссылка на само приложение: market.android.com/details?id=com.bigbears.android.microbs&feature=search_result