Статьи

Начиная Android: изучите и создайте свое первое приложение

Урок 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 releaseant умолчанию обрабатывает файл 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?