Устанавливаем Android SDK
Начнем с установки Android SDK. Процесс подробно описан в руководстве разработчика. Первое что требуется - установить JDK. По умолчанию JDK ставится в директорию типаc:\program files\java\jdk1.6.0_24
. Android SDK требует 32-битную версию JDK, 64-битная его не устраивает.
Далее - скачать и запустить программу установки последней версии Android SDK. В настоящий момент, это installer_r12-windows.exe.
По умолчанию Android SDK ставится в директорию
c:\program files\Android\android-sdk
. Для того, чтобы избежать проблем с Proguard (ошибок типа Expecting class path separator ';' before 'Files\Java\...), следует устанавливать Android SDK в директорию, не содержащую в своем пути пробелы, например: c:\utils\Android\android-sdk
.После завершения установки запускаем SDK Manager. Выбираем packages, которые нужно установить. Устанавливаем все, выбрав Accept all. SDK Manager скачивает и устанавливает все выбранные пакеты, а затем перезапускается. Установка Android SDK завершена.
Устанавливаем Eclipse
Следующий шаг - установка Eclipse. Детально процесс установки изложен в руководстве разработчика. Он достаточно прост. Качаем Eclipse classic, устанавливаем. Eclipse поставляется в виде zip-архива. Распаковываем его в любую директорию, например,c:\utils\eclipse
. Использовать для установки Eclipse директорию с пробелами в пути так же не желательно.
Теперь устанавливаем плагин для работы с android SDK - ADT Plugin. Запускаем Eclipse. Он предложит создать новый workspace, соглашаемся.
Желательно workspace и проекты сохранять в директории, не содержащие в путях пробелы. Иначе могут возникнуть проблемы при автоматизации сборки - команда
ant release
не любит пробелы в путях.Выбираем
Help>Install new software
. Жмем кнопку "Add..", появляется окно "Add repository". В поле Name
вводим "ADT Plugin", в поле Location
указываем https://dl-ssl.google.com/android/eclipse/
. Ставим галочку "Developer Tools", дважды жмем Next
, принимаем лицензионное соглашение. После завершения загрузки плагина перегружаем Eclipse. Осталось указать Eclipse путь к Android SDK. Открываем
Window>>Preferences>>Android
, в графе SDK Location
вводим c:\program files\Android\android-sdk
. Жмем кнопку "Apply" - появится список установленных API. Закрываем окно - Eclipse и Android SDK установлены.Создаем/добавляем проект
При первом запуске Eclipse был создан пустой workspace. Добавим в него новый проект.Выбираем
File\New\Project\Android\Android Application Project
, указываем название нового проекта. Выбираем Build target - версию платформы, под которую вы будете вести разработку. Задаем Min SDK Version
- минимальный уровень API, необходимый для запуска вашего приложения. Задаем название приложения, название пакета (типа com.mydomain.myapp
), название базовой Activity.Пара замечаний. Уровни API в
Build target
и Min SDK Version
могут различаться. Built target
задает уровень API, доступный вам при разработке. Min SDK Version
задает минимально необходимый уровень API, который должен быть на устройстве пользователя, чтобы пользователь мог скачивать ваше приложение с маркета. Так что можно вести разработку под 2.2, и, одновременно, позволять скачивать это приложение пользователям, у которых на телефоне установлен Android 1.5. Иногда это требуется.Еще момент - при выборе
Built target
доступно несколько вариантов с одним и тем же уровнем API, например: Android 2.3.1
и Google APIs
. Второй вариант является расширением первого и содержит дополнительный функционал для простого доступа к службам и данным Google. Этот вариант потребуется вам, например, при работе с Google Maps.А что делать, если проект у вас уже есть и его нужно просто открыть? Помнится, меня этот вопрос поставил в тупик в свое время - нет в Eclipse пункта меню "Open project". На самом деле все просто - проект нужно импортировать в workspace. Делается это так:
File>Import>General>Existing Projects into Workspace
.Генерируем подпись
Итак, проект создан и он компилируется. Для того, чтобы готовое приложение можно было установить на Android, его необходимо подписать цифровой подписью. О том как это делать, детально рассказано в руководстве разработчика. Eclipse создает подпись для отладочных билдов самостоятельно. Для релизных билдов подпись делается вручную, но так же через Eclipse.Релизная версия приложения создается в Eclipse операцией Export. Цифровую подпись для релизной версии можно создать прямо в процессе экспорта.
Запускаем экспорт:
File>Export>Android>Export Android Application
. Выбираем проект, который следует экспортировать (в нашем случае, он один, выбирать нечего). Выбираем Create new keystore
- создать keystore-файл, в котором будет хранится наш приватный ключ (точнее, в таком файле можно хранить сколько угодно приватных ключей, например, по одному для каждого приложения). Вводим имя файла и дважды вводим пароль, закрывающий доступ к keystore-файлу. Теперь добавляем в keystore-файл ключ для нашего приложения. Указываем алиас - короткое имя, по которому можно будет в дальнейшем к этому ключу обращаться. Дважды вводим пароль для доступа к ключу (теперь у нас два пароля: один для доступа к keystore-файлу, другой - для доступа к ключу в keystore-файле). Вводим информацию о себе и указываем период действия ключа.
С периодом важно не ошибиться. Если срок годности вашего ключа истечет, вы не сможете подписывать им новые версии вашего приложения. А сменить ключ у приложения нельзя. Кроме того, если вы планируете размещать ваше приложение на Android Market, то срок действия ключа должен превышать дату 22 октября 2033, иначе приложение на маркет загрузить не удастся. Руководство разработчика рекомендует устанавливать срок действия ключа 25 лет.
Созданный keystore-файл и пароли к нему надежно сохраняем от доступа посторонних личностей..
Маленький нюанс. Отладочные сборки приложения Eclipse подписывает автоматически созданным keystore-файлом. Такие файлы хранятся локально, в директории типа
C:\Users\UserName\.android\debug.keystore
. Если вы ведете разработку на нескольких разных компьютерах, то на каждом из них у вас будет сгенерирован отдельный keystore-файл для отладочных сборок. Это сразу создаст проблемы при отладке на девайсе. Поработали на одном компьютере, установили отладочную версию приложения на девайс. Перешли на другой компьютер - новая версия поверх старой не ставится - ключи разные. Приходится каждый раз сносить приложение. Чтобы избежать таких проблем имеет смысл использовать один и тот же отладочный keystore-файл на всех компьютерах. Путь к ключу прописывается в настройках: Windows>Preferences>Android>Build
. Отладочный файл debug.keystore действителен в течении 365 дней, раз в год его придется пересоздавать (старый файл нужно удалить, Eclipse создаст новый).Создаем эмулятор и подключаем девайс
Для отладки Android приложения удобно использовать одновременно как реальный девайс, так и эмулятор. Чтобы создать эмулятор, нужно запуститьSDK Manager
и выбрать пункт "Virtual devices"
. При создании эмулятора указать название, платформу, размер SD-карты, выбрать экран и hardware. Эмулятор хорош тем, что позволяет проверить работоспособность приложения на разных конфигурациях железа, не имея этого железа под рукой. В то же время, у него есть ряд недостатков. В частности, он крайне медленно запускается (можно попробовать включить недавно реализованную поддержку снапшотов, чтобы обойти эту проблему), на нем нет маркета (установить можно, но не все приложения работают).
Для подключения устройства Android к компьютеру вам потребуется установить USB-драйвер для данного конкретного устройства. Как это сделать и где искать драйвера написано в руководстве разработчика.
Для некоторых устройств драйвера найти крайне сложно - имеет смысл зарегистрироваться на форуме 4PDA.ru и поискать там (без регистрации файлы с форума не скачать).
Автоматизируем сборку проекта
Создание релизной версии проекта лучше сразу автоматизировать. При частых релизах возможность собрать приложения одним кликом сэкономит кучу времени. К тому же, сама процедура автоматизации занимает всего несколько минут. Подробно она описана вот здесь.Cкачиваем Ant. В настоящий момент, последняя версия apache-ant-1.8.2-bin.zip. Распаковываем архив в какую-нибудь директорию, например в
c:\program files\ant\apache-ant-1.8.2
.По моему опыту, наличие пробелов в пути к Ant к каким-либо проблемам не приводит, но на 100% я это гарантировать не берусь.
Убеждаемся, что у нас правильно прописаны пути. Нам необходимо добавить две директории в %PATH%:
- путь к утилитам Android SDK, т.е.
c:\utils\Android\android-sdk\tools
- путь к ant\bin, т.е.
c:\program files\ant\apache-ant-1.8.2\bin
- JAVA_HOME должна указывать на директори JDK, т.е. на
c:\program files\java\jdk1.6.0_24
(важно: к JDK, а не к JRE) (Update дек.2012: недавно вылезла проблема - перестал запускаться SDK Manager. Вылечил, указав в JAVA_HOME путь к bin директории, т.е.c:\program files\java\jdk1.6.0_24\bin
) - ANT_HOME должна указывать на корневую директорию Ant, т.е.
c:\program files\ant\apache-ant-1.8.2
Заходим в корневую директорию нашего проекта. Из командной строки выполняем команду
android update project --path .(не потеряйте точку в конце). Будет создан файл
build.xml
. Его необходимо подправить. В строке <project name="MainActivity" default="help">
нужно удалить default="help"
.Сборка отладочной версии уже работает. Для сборки достаточно зайти в корневую директорию нашего проекта и дать команду "ant".
Чтобы заработала сборка релиза, необходимо прописать параметры цифровой подписи релизных версий. Для этого в корневом каталоге нашего проекта создаем файл build.properties со следующим содержанием:
key.store=путь_к_файлу_keystore key.alias=имя_алиаса key.store.password=пароль_к_keystore key.alias.password=пароль_к_ключуПуть к keystore-файлу, имя алиаса и пароли, естественно, нужно подставить реальные.
Теперь для сборки релизной версии приложения достаточно зайти в корневой каталог проекта и дать команду
ant release
. Эта команда не любит пробелы в пути к директории проекта - так что если ваш проект сохранен в C:\document and settings\...
, то команда не сработает.Подключаем ProGuard
ProGuard нужен для обфускации и уменьшения размера кода. До недавнего времени, ProGuard приходилось подключать вручную. Вот здесь детально рассмотрено, как это сделать. Начиная с 9-ой версии SDK, ProGuard включен в состав Android SDK, так что процедура установки существенно упростилась. Все что нужно сделать - добавить в файлbuild.properties
еще одну строчку: proguard.config=proguard.cfg
.Файл
proguard.cfg
уже есть в корневой директории проекта. Он генерируется при выполнении команды "android update project --path ."
вместе с файлом build.xml
. Один и тот же файл proguard.cfg
можно использовать в разных проектах. В build.properties в этом случае потребуется указывать полный путь к файлу: proguard.config=path\proguard.cfg
Теперь команда
ant release
использует ProGuard. Для того, чтобы ProGuard использовался так же и при ручном экспорте из Eclipse, необходимо добавить в файл default.properties
аналогичную строчкуproguard.config=proguard.cfgЕсли при экспорте начнут начать вылазить ошибки, проверьте переменную среды %TEMP%: нет ли пробелов в пути к директории с временными файлами(?).
Любопытно, что заголовке файла default.properties написано следующее:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
Но в руководстве разработчика прямо указано, что редактировать нужно этот именно файл.
Добавляем юнит-тестирование
Средства юнит-тестирования в Android встроены, их можно использовать сразу, ничего не устанавливая. Тем не менее, есть дополнительные инструменты, позволяющие упростить процесс тестирования. На них останавливаться не буду - эта тема заслуживает отдельного поста.Подключаем средства статистического анализа
Для Eclipse существует множество полезных плагинов. В частности, есть парочка очень неплохих плагинов для статического анализа кода: FindBugs и Checkstyle. По функционалу они напоминают FxCop и StyleCop (плагины для Visual Stuido, знакомые NET-программистам).Статический анализ кода - штука очень полезная, позволяющая найти многие ошибки еще до запуска приложения. Так что эти плагины имеет смысл установить. Ставятся они точно тем же путем, что и ADT Plugin: вызываем Help > Install new software, в поле "Work with" указываем http://findbugs.cs.umd.edu/eclipse/ (для FindBugs) или http://eclipse-cs.sf.net/update/ (для Checkstyle).
Интересно, что FindBugs (по идее) работает с скомпилированными JAR-файлами (подобно FxCop) и не требует исходных кодов. В Android формат байткода другой. Тем не менее, FindBugs успешно работает и с Android-приложениями. Похоже, он не только байткод умеет анализировать, но и исходники напрямую.
Update: Дошли руки, разобрался со статическими анализаторами и написал подробный отчет - "Статические анализаторы кода для Android-приложения". Всего, в настоящий момент, нашлось восемь готовых к использованию анализаторов. И как минимум пять из них имеет смысл регулярно применять в работе.
Итоги
Что мы получили в итоге? Eclipse, настроенный для разработки Android приложения, плюс возможность собирать релизную версию Android приложения (полностью готовую для публикации на маркете) одной командой. Весь процесс установки занимает минут 20-30 - без учета времени скачивания компонентов.В процессе написания данной статьи я проделал настройку Eclipse "с нуля" на виртуальной машине и постарался отметить все места, которые могут вызвать вопросы. Возможно, кое-где процесс установки описан недостаточно полно. Появятся вопросы - пишите, я постараюсь подправить описание.
подскажите пожалуйста.. eclipse и IntelliJ IDEA на выходе получается размер приложения (*.apk) = 400-500 кб, хотя на самом деле 2м.. должно быть, в каких настройках и что нужно указать чтобы в *.apk добавить все ресурсы ?.. спасибо
ОтветитьУдалитьРесурсы, по идее, добавляются в apk автоматом - достаточно их поместить в директорию res и сделать Refresh проекта в Eclipse.
ОтветитьУдалитьДиректории res\* не поддерживают поддиректории. Файлы в res\drawable помещать можно, а в res\drawable\abc - нельзя. Физически такую директорию "abc" можно создать, но обратиться к ее содержимому через R.drawable.my_id не получится. Скорее всего, такие "нелегальные" поддиректории при сборке в apk не добавляются (не проверял). Не в этом, случайно, дело?
Попробуйте сделать декомпиляцию apk (android-apktool или dedexer) и посмотреть, какие именно ресурсы не добавляются.
чуть не так, все ресурсы нормально(drawable, assets), а вот либы компиляции с помощью которых компилится приложение не добавляются в apk.
ОтветитьУдалитьТрудно сказать в чем дело - либы я у себя в проектах не использовал, так что опыта нет. В SDK есть пример приложения TicTacToeMain, демонстрирующего использование библиотек. Библиотека там вкомпиливается в apk основного приложения. В описании написано:
ОтветитьУдалить"Currently, an application must declare in its manifest any components or resources that it is using from a library project"
может в манифесте прописано не все?
Еще ProGuard может выбросить неиспользуемый код из APK и существенно снизить размер.
Если при добавлении плагина ADT в IDE Eclipse, последний "ругается" на URL https://dl-ssl.google.com/android/eclipse/ используйте URL http://dl-ssl.google.com/android/eclipse/site.xml
ОтветитьУдалитьЕсли проект не запускается: ([2011-08-02 06:10:34 - Emulator] PANIC: Could not open AVD config file: C:\Users\СерГ\.android\avd\Android_2_2.avd/config.ini)
ОтветитьУдалитьВ чем причина?
Вероятнее всего - в кириллице
ОтветитьУдалитьЗдравствуйте!
УдалитьУ меня такая же проблема. В кириллице. Только путь сохраняется автоматически для avd. Я уже полностью и эклипс и сдк переустанавливала, а все равно прописывает авд в одну и ту же папку с именем пользователя.
Подкажите, плиз, как изменить путь для сохранения авд.
Спасибо.
В Managing AVDs from the Command Line написано:
УдалитьWhen you create an AVD, the android tool creates a dedicated directory for it on your development computer...
The android tool also creates an .ini file for the AVD at the root of the .android/avd/ directory on your computer. The file specifies the location of the AVD directory and always remains at the root the .android directory.
By default, the android tool creates the AVD directory inside ... C:\Documents and Settings\\.android\ on Windows XP, and C:\Users\\.android\ on Windows 7 and Vista. If you want to use a custom location for the AVD directory, you can do so by using the -p option when you create the AVD
Насколько я понимаю, есть два пути: 1) создавать AVD вручную,явно указывая путь через -p. 2) создать AVD через AVD Manager, затем вручную переместить директорию соданного AVD в нужную директорию и после этого в файле C:\Users\\.android\.ini изменить path на нужный.
Сам не пробовал.
Большое спасибо за ответ.
УдалитьНо проблему я решила другим образом.
Пришлось создать новую учетную запись с латинскими буквами. именно для работы с эклипс. Так оказалось даже проще. Ничего лишнего не отвлекает :)
про автоматизации здесь неплохо написано http://www.enterra.ru/blog/automation_builds_android_applications/
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьУ меня windows7 домашняя 64 бита.
ОтветитьУдалитьПапки некоторые на кириллице.
В процессе установки Jdk-7 u 5 после галочки I accept ... и нажатия Registration Nov получаю ошибку.
Пробовал оба варианта: 32 и 64 бита.
Здравствуйте.
ОтветитьУдалитьЕсли еще кто-то читает эту статью, вопрос, у меня при запуске SDK Manager список пакетов для загрузки не появляется. Почему-то на ноутбуке нормально все установил, а но компе с тех же дистрибутивов такая проблема...
А галочки внизу в строке "Show" - "Updates/New", "Installed" - включены? Если их отключить, список будет пуст.
ОтветитьУдалитьВ SDK Manager что то меняли в недавней ревизии 21, может попробовать новый One-click SDK installer скачать?
Доброе время суток, у меня вопросов очень много, можно ли связаться с Вами в скайпе, у меня дипломная работа на эклипсе, готов проплатить Вашу аудиенцию)
ОтветитьУдалитьИзвините, но возможности проводить консультации по скайпу у меня нет, загруженность высокая. Пишите вопросы сюда, по возможности отвечу.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьВсе вроде сделал правильно и все установил! только не пойму одного, когда открываю eclipse-file-new-other-android и тут проблема!!! вы пишете что надо открыть файл android project, но у меня такого нет у меня есть android application project и android project from existing code! что делать?
ОтветитьУдалитьGoogle поменяли слегка интерфейс в ADT плагине, но смысл не изменился. Чтобы создать полностью новый проект, в визарде следует выбирать Android Application Project. Чтобы загрузить существующий - Android Project From Existing Code.
Удалить