Урок 3. Изучите и создайте свое первое приложение
После установки Android SDK и платформы Android вы готовы создавать приложения для этой платформы. Урок 3 знакомит вас с первым приложением и показывает, как создать это приложение из командной строки.
Исследуя W2A
Полезно представить технологию, представив короткую программу, которая выводит какое-то приветственное сообщение. В листинге 1 представлен исходный код Java для небольшого приложения для Android, которое выполняет эту задачу.
Листинг 1. Привет от Android
package ca.tutortutor.w2a;
import android.app.Activity; import android.os.Bundle; import android.widget.TextView;
public class W2A extends Activity {
// Следующий метод вызывается при первом создании действия.
@Override
public void onCreate (BundlevedInstanceState)
{
super.onCreate (savedInstanceState);
TextView TV = новый TextView (это);
tv.setText («Добро пожаловать в Android.»);
setContentView (тв);
}
}
В листинге 1 показано содержимое исходного файла с именем W2A.java
— приложения Android написаны на языке Java, что, вероятно, неудивительно, учитывая, что Android SDK зависит от устанавливаемого JDK. Список начинается с обязательной инструкции пакета, потому что каждое приложение Android связано с пакетом. Последующие операторы импорта идентифицируют три специфичных для Android типа, на которые ссылается W2A.java's
W2A (Welcome to Android) W2A.java и которые помогают компилятору определить местонахождение этих типов.
Совет: ознакомьтесь с документацией по API Google Java, чтобы вы могли быстро найти специфичные для Android типы. Вы найдете эту документацию по адресу http://developer.android.com/reference/packages.html .
Приложения Android основаны на одном или нескольких компонентах, которые взаимодействуют друг с другом. Компоненты включают действия, широковещательные приемники, контент-провайдеров и услуги. Для краткости я игнорирую широковещательные приемники, контент-провайдеров и услуги.
Действие представляет собой часть пользовательского интерфейса приложения и описывается классом android.app.Activity
. Перечисление 1 подклассов класса W2A
Activity, что делает W2A
специализированным действием.
Когда пользователь запускает приложение, Android создает экземпляр основного класса активности приложения (приложение может состоять из нескольких классов активности) и вызывает переопределенную версию этого класса метода void onCreate(Bundle savedInstanceState)
для инициализации действия.
Если действие ранее сохраняло свое состояние до завершения, Android делает это состояние доступным для onCreate()
, передавая аргумент экземпляра android.os.Bundle
в savedInstanceState
. В противном случае он передает нулевой аргумент (сохраненное состояние отсутствует).
onCreate()
вызывает версию этого метода для суперкласса с переданным аргументом. Затем он создает экземпляр класса android.widget.TextView
для создания виджета textview (элемент управления пользовательского интерфейса), который является степенью пользовательского интерфейса действия.
Примечание: onCreate()
является примером метода обратного вызова жизненного цикла. Android вызывает onCreate()
и другие методы в течение жизненного цикла приложения. Каждый метод обратного вызова жизненного цикла должен сначала вызвать метод с тем же именем в классе Activity
.
Аргумент this
передается конструктору TextView
для подключения этого виджета к текущей деятельности. Текст, переданный в метод void setText(CharSequence text)
TextView
будет отображаться пользователю.
После создания и инициализации экземпляра виджета onCreate()
вызывает метод void setContentView(View view)
для Activity
чтобы поместить экземпляр виджета, который также известен как представление, непосредственно в иерархию представления деятельности, чтобы виджет отображался.
Здание W2A
Давайте строить W2A. Сначала создайте проект W2A с помощью инструмента Android, который обеспечивает следующий синтаксис (разбитый на несколько строк для удобства чтения) для создания проектов:
android create project --target target_ID --name project_name --path /path/to/project/project_name --activity default_activity_name --package package_namespace
За исключением --name
(или -n), должны быть указаны все следующие параметры:
-
--target
(или -t) определяет цель сборки приложения.target_ID
— это целое число, которое идентифицирует платформу Android. Получить это значение, вызываяandroid list targets
. Поскольку вы установили только версию 2.3.3, эта команда должна вывести одну цель платформы Android 2.3.3, обозначенную как целое число 1. -
--name
(или -n) определяет имя проекта. Это имя используется для получающегося в результате имени файла Android PacKage (APK). APK — это архив на основе ZIP, в котором хранятся файлы приложения и который установлен на устройстве. Его расширение файла.apk
. -
--path
(или -p) определяет каталог проекта. Каталог создается, если он не существует. -
--activity
(или -a) определяет класс активности по умолчанию. Полученный файл класса создается внутри/path/to/project/project_name/src/package_namespace/
и используется в качестве имени файла APK, если--name
(или -n) не указано. -
--package
(или -k) идентифицирует пространство имен пакета проекта, которое должно соответствовать правилам пакета, изложенным в спецификации языка Java.
Предполагая платформу Windows и иерархию C:prjdevW2A
которой будет храниться проект W2A, следующая командная строка (разделенная на две строки для удобства чтения) создает этот проект:
android create project -t 1 -p C:prjdevW2A -a W2A -k ca.tutortutor.w2a
Эта командная строка создает несколько каталогов и добавляет различные файлы к некоторым из них. В частности, он генерирует следующую структуру файлов и каталогов в C:prjdevW2A
:
-
AndroidManifest.xml
— это файл манифеста на основе XML для создаваемого приложения. Манифест Android идентифицирует компоненты приложения APK, такие как подклассActivity
который ранее был указан с помощью--activity
(или -a), и предоставляет другую полезную информацию для Android. -
ant.properties
— это настраиваемый файл свойств для системы сборки Ant. Вы можете отредактировать этот файл, чтобы переопределить стандартные параметры сборки Ant и указать указатель на хранилище ключей и псевдоним ключа, чтобы инструменты сборки могли подписывать ваше приложение при сборке в режиме выпуска (обсуждается далее в этом уроке). -
bin
— выходной каталог, используемый сценарием сборки Apache Ant. Сгенерированные APK хранятся здесь. -
build.xml
— это скрипт сборки Apache Ant этого проекта. -
libs
содержит частные библиотеки, которые не требуются в этом проекте, но могут присутствовать для более сложных проектов. -
local.properties
— это сгенерированный файл, содержащий местоположение домашнего каталога Android SDK. -
proguard.cfg
содержит данные конфигурации для инструмента SDK ProGuard, который позволяет разработчикам запутывать (скрывать) свой код (что делает его очень трудным для обратного инжиниринга) как интегрированную часть сборки релиза. -
project.properties
— это сгенерированный файл, который идентифицирует целевую платформу Android проекта. -
res
содержит ресурсы проекта (изображения, строки, макеты и т. д.). Ресурсы не используются этим проектом. (Для краткости я не обсуждаю ресурсы в этом курсе.) -
src
содержит исходный код проекта в виде ряда подкаталогов, которые отражают структуру пакета проекта.
src
содержит catutortutorw2a
каталогов catutortutorw2a
, а w2a
содержит скелетный исходный файл W2A.java
. Замените содержимое этого файла на листинг 1.
Предполагая, что C:prjdevW2A
является текущим, C:prjdevW2A
это приложение, указав ant debug
или ant release
— ant
умолчанию обрабатывает файл build.xml
каталога:
-
ant debug
собирает приложение для тестирования и отладки. Инструменты сборки подписывают полученный файл APK с помощью ключа отладки, а затем оптимизируют APK сzipalign
инструментаzipalign
Android. -
ant release
создает приложение для выпуска пользователям. Вы должны подписать полученный файл APK своим закрытым ключом, а затем оптимизировать APK сzipalign
базового инструментаzipalign
SDK. (Эти задачи выходят за рамки этого урока.)
Примечание. Android требует от разработчиков подписывать свои APK закрытыми ключами сертификатов. Он использует сертификат для идентификации автора приложения и установления доверительных отношений между приложениями; Android не использует сертификат, чтобы определить, какие приложения могут быть установлены. Самозаверяющий сертификат является приемлемым — сертификаты не должны быть подписаны центрами сертификации. Поскольку специальный сертификат отладки используется для подписи APK, встроенного в режиме отладки, APK не может быть выпущен для общего доступа. Запись Википедии «Сертификат открытого ключа» ( http://en.wikipedia.org/wiki/Public_key_certificate ) знакомит вас с сертификатами.
Предполагая, что C:prjdevW2A
является текущим каталогом, соберите W2A в режиме отладки, вызвав ant debug
. Эта команда создает подкаталог gen, в котором хранится сгенерированный ресурсно-ориентированный файл R.java
(который можно игнорировать), и создает W2A-debug.apk
в подкаталоге bin. Мы установим этот APK и запустим его приложение на следующем уроке.
Рассмотрение
Следующие обзорные вопросы помогут вам освоить материал урока 3:
- Что такое деятельность?
- Определите пакет, в котором хранится класс
Activity
Android. - Какой метод действия Android вызывает для инициализации действия?
- Укажите синтаксис, который требуется инструменту
android
при создании проекта Android. Какой из параметров этого синтаксиса является необязательным? - Определите файл и каталоги, созданные в каталоге проекта. • Как вы строите приложение проекта Android?