Pers.narod.ru. Тексты. Разработка Java-приложений для Android в ADT и Eclipse |
В инете есть масса статей о начале разработки под Android. Только в большинстве из них много непонятного :) Я не претендую, что сделаю понятней, но свой опыт на всякий случай опишу - вдруг кому и пригодится.
По сути, Android - это ява-машина на базе операционной системы Linux. Только ява в ней - нестандартная, что и порождает необходимость ставить кучу дополнительного софта. Почти весь он медленный и глючный, но, при удачном стечении обстоятельств, позволяет написать собственное приложение, которое будет работать на вашем "андрофоне".
Для начала некоторые сокращения, которыми очень любят пользоваться Android-разработчики:
Первым делом следует загрузить и установить Java SE (пакеты JDK и JRE) с сайта Oracle.
Учтите, что JDK и JRE надо поставить до установки Eclpise и желательно именно в указанном порядке.
В некоторых мануалах написано "сначала Эклипсу и плагин, потом JDK". Но так не получалось :)
С другой стороны, если Java уже есть, обновлять до последней версии необязательно. Но версия JRE должна быть не ниже 1.6, а версия JDK - не ниже 5.0. Обычно версию легко понять даже по имени установочного файла.
В пути к приложениям не должно быть символов кириллицы и пробелов, иначе потом проблем не оберётесь. Так что ставить в папку Program Files
не надо :) Для подстраховки убедитесь, что у вас есть права администратора, а учётная запись тоже имеет имя без пробелов и кириллицы ("Admin" или даже "11111" - в самый раз, а вот "Кеша" - не годится).
Теперь у нас есть среда для работы с явой и нужен инструмент разработки под Андроид. Вообще-то, есть разные среды (IDE) для разработки на Java (и не только) под Android:
Спорить об их достоинствах и недостатках можно долго, я выбрал Eclipse просто потому, что раньше не пробовал с ней работать и ещё потому, что в этом случае смогу всё скачать одним пакетом. И ещё там есть поддержка визуальной разработки интерфейса приложения, а в "Идее", вроде как, таковой не было, когда я с ней работал.
ADT plugin для Eclipse разрабатывает компания Google, а поддержкой Android в среде IntelliJ IDEA компания JetBrains занимается самостоятельно. Существует мнение что IDEA во многом лучше Eclipse как IDE для Java, но зато в Эклипсе новичку проще адаптироваться.
При выборе Eclipse достаточно загрузить Android SDK отсюда.
Это будет большой архив под 400 мегабайт, но что делать... зато, загрузив пакет "всё в одном" (архиве ZIP, имя архива для Windows будет вроде adt-bundle-windows-x86.zip
), мы можем просто развернуть его в подходящую папку, например, в корень диска c:
(пробелов и кириллицы в имени папки тоже на надо!)
При первом запуске файла \папка_программы\eclipse\eclipse.exe
среда задаст только 2 вопроса:
Начать сразу работать не получится - сначала проверим, есть ли поддержка нужной нам платформы (версии) Android. Идём в меню Window, Android SDK Manager. Включаем, например, все пакеты в ветке Android 2.2 - и они инсталлируются. Правда, у меня они это делали только по одному, а результаты стали видны только после перезагрузки компьютера (должно быть достаточно перезапуска Eclipse).
Теперь, чтобы сделать эмулятор телефона, идём к пункту Window, Android Virtual Device Manager. Выбираем New в правой части окна, в появившемся окне вписываем имя виртуального устройства (латиницей и без пробелов, как и все имена в яве), платформу (допустим Android 2.2), размер карты памяти (допустим 512 Mb), тип дисплея (допустим HVGA). Затем жмем внизу на кнопку Create AVD.
Думаете, всё? Как бы ни так. Нужен ещё тот самый плагин, без которого Eclipse работать с нашим эмулятором не станет. Идём в меню Help, Install New Software и делаем как на рисунке:
Впрочем, система может сказать, что плагин уже установлен, тогда этот шаг - лишний.
Проверим, что среда связана с папкой, куда установлен Android SDK. Жмём в меню Windows, Preferences и проверяем, что прописан верный путь к SDK (SDK Location). Можно нажать Apply.
Идём в меню File, New, Project, папка Android, Android Application Project, кнопка Next.
Вот что можно ввести и выбрать на втором шаге:
А смысл всего этого таков:
Уровни API в Target SDK и Minimum Required SDK могут различаться. Target SDK задает уровень API, доступный вам при разработке. Minimum Required SDK задает минимально необходимый уровень API, который должен быть на устройстве пользователя, чтобы пользователь мог скачивать ваше приложение с Google Play. Так что можно вести разработку под 2.2, и, одновременно, позволять скачивать это приложение пользователям, у которых на телефоне установлен Android 1.5. Иногда это требуется.
При выборе Target SDK иногда бывает доступно несколько вариантов с одним и тем же уровнем API, например: Android 2.3.1 и Google APIs. Второй вариант является расширением первого и содержит дополнительный функционал для простого доступа к службам и данным Google. Этот вариант потребуется вам, например, при работе с Google Maps. А так обычно он не нужен.
После нажатия кнопки Next на шаге 3 можно оставить всё как есть (обратите внимание, что если выбрана опция Create Project in WorkSpace, папка нового проекта будет внутри ранее выбранной папки для проектов), а на следующем шаге можно загрузить картинку для значка приложения вместо стандартного робота (лучше брать GIF с прозрачным фоном).
Картинку можно брать любого размера, но надо понимать, что из неё сделает среда:
в папкеres/drawable-hdpi
из вашей картинки будет сгенерирована иконка 72x72 пиксела;
в папкеres/drawable-ldpi
её размер уменьшится до 36x36 пикселов;
в папкеres/drawable-mdpi
- 48x48 пикселов;
в папкеres/drawable-xhdpi
- 96x96 пикселов.
Похоже, это версии иконки для устройств с разными типовыми разрешениями экранов.
Без последнего рисунка часто можно обойтись.
На предпоследнем шаге нужно отметить, с какого вида экрана начнёт работу приложение (если опция Create Activity установлена). "Активити" программисты из Гугля называют экраны (формы) нашего приложения. Если приложение представляет собой сервис, например, "живые обои", то ему Activity не нужна, а иначе обязательна хоть одна. Пусть будет пока BlankActivity, то есть, пустой экран, возможно, с опциональной стандартной навигацией по нему. Нажимаем Next, отвечаем на последние вопросы.
Имя формы (Activity Name) оставим MainActivity. С этим именем будет создан класс. А вот activity_name (следующее поле ввода Layout Name) по умолчанию будет называться макет экрана (layout), который система сгенерирует в папке res/layout
.
Наконец, список Navigation Type отвечает за то, какой вид навигации будет на экране, при выборе вида всё показывается на картинке. Обратите внимание, если вы выбираете навигацию, которой нет в выбранной вами Minimum SDK, в верхней части окна появляется красный значок и предупреждение. Выберем пока None, ведь по идее, можно потом добавить и другие активити, а можно в имеющемся сделать несколько экранов. Просто каждое добавляемое активити должно быть прописано в манифесте. Но об этом чуть позже.
После нажатия кнопки завершения у нас открылся файл activity_main.xml
и есть возможность сделать для него графический макет, всё выглядит так, как обычно в визуальных средах проектирования для других языков (к этому моменту я уже русифицировал эклипсу, так что скриншот русский):
Структура проекта хорошо видна как в области Package Explorer, так и в папках, созданных внутри папки проекта (которая, в свою очередь лежит внутри папки проектов workspace :)
Обратим внимание лишь на главные:
gen
- файлы, которые генерируются автоматически при сборке проекта. Вручную их лучше не менять.
res
- ресурсы, такие как картинки, тексты, значения по-умолчанию, макеты (layouts).
src
— файлы с исходными текстами нашей программы.Подробное описание работы со средой, конечно, выходит за рамки этой небольшой статьи, но ниже я попытался собрать ответы на типовые вопросы, возникающие в начале работы с Eclipse.
Мои несложные проекты-примеры для Android доступны в apk-файлах и исходниках (в виде проектов Eclipse) на этой странице сайта, их можно свободно использовать для отработки собственных навыков.
Маленький FAQ по Eclipse, найденные баги и особенности среды |
http://download.eclipse.org/technology/babel/update-site/R0.10.0/juno
В Eclipse заходим в меню Help, Install new software, нажимаем кнопку Add, чтоб добавить новый репозитарий (рядом с полем Work with; так у них называется ссылка для закачки). В поле ввода Location вставляем ссылку, ждём, пока Eclipse получит содержимое по ссылке, находим в списке Babel Language Pack in Russian, отмечаем его галочкой и жмём Next, соглашаясь с лицензионным договором. Всё ставится, перезапускаем Eclipse (сама предложит) и имеем русскую версию. Но вообще-то не торопитесь с этим - везде в мануалах, как правило, приводятся англоязычные названия команд.
R
в коде: R cannot be resolved to a variable
package производитель.приложение;
вставьте в каждый проблемный файл строку импорта
import производитель.приложение.R;
Ctrl+F11
или зелёную стрелку "Run".
И ещё, не обязательно закрывать проекты вообще. Если в Project Explorer щёлкнуть правой клавишей мыши на названии проекта (HelloWorld, к примеру), там в контекстном меню есть пункт Close Project. Если нажмёте, проект запакуется. Затем Open Project'ом из того же меню можно открыть обратно.
папка_eclipse\sources
.
sdk/tools/
, предварительно отделив его точкой с запятой ";".
Добавляемый путь должен заканчиваться "слешем", например C:\eclipse\android-sdk-windows\tools\
Ctrl+Shift+L
- вызывается весь список горячих клавиш.
Если 2 раза нажать Ctrl+Shift+L
, то перейдём в окно редактирования горячих клавиш.
Ctrl+Shift+F
. И ещё - достаточно писать аккуратно и не делать по двадцать пробелов между блоками - проблем не будет.
apk
моего приложения?
Ваши_проекты\Имя_проекта\Имя_проекта.apk
.
После очистки проекта его там не будет, запустите в эмуляторе - создастся заново.
Это будет так называемая отладочная версия, уже подписанная автоматически.
Релизная версия приложения тоже создается в Eclipse.
Достаточно нажать правой кнопкой на папке проекта в Package Explorer и дальше Export,
Android, Export Android Application. Там нужно будет указать ключевой файл (цифровую подпись), если она есть, но, я так понимаю, обычно её у нас нет, так что будет предложено её создать.
Указываем период действия ключа (число лет). С периодом важно не ошибиться, т.к. если срок годности ключа истечёт, вы не сможете подписывать им новые версии приложения. А сменить ключ у приложения нельзя. Кроме того, для размещения приложения на Google Play (бывший Android Market) срок действия ключа должен превышать дату 22 октября 2033, иначе приложение на маркет загрузить не удастся. Руководство разработчика рекомендует устанавливать срок действия ключа на 25 лет. Наконец, вводим информацию о себе (достаточно первой строки с именем или псевдонимом). Созданный keystore-файл и пароли к нему надёжно сохраняем. У меня приложение, подписанное "правильным" ключом, установилось на телефон вместо "отладочного" только после того, как я полностью удалил данные и само приложение через стандартное меню "Настройки" Андроида.
F2
работает как кнопка "меню" приложения, Esc
как кнопка "Назад", на экране также работает выбор мышкой и "протаскивание" ей (например, на списках). В программе Custom locale эмулятора можно выбрать русскую локаль.
папка_программы\sdk\platform-tools\
можно попробовать выполнить командную строку
adb connect 127.0.0.1
debug.keystore
действителен в течении 365 дней,
раз в год его придется пересоздавать. Для этого под Windows нужно удалить старый файл из папки
%USERPROFILE%/.android
assets
(туда копируются ресурсы вроде шрифтов и мультимедийных файлов), res
со всеми вложенными папками (вроде drawable-hdpi
, drawable-ldpi
, drawable-mdpi
, layout
, menu
, values
, xml
), src
с исходными текстами классов и файлов AndroidManifest.xml
, project.properties
(в последнем обычно только строка вида target=android-8
). Можно ещё папку .settings
, если там что-то есть (например, указание что все файлы проекта хранятся в кодировке UTF-8). Всё остальное сгенерируется при импорте проекта.
гостевая; E-mail |