Время на прочтение
8 мин
Количество просмотров 533K
В любом деле самое сложное — это начало. Часто бывает тяжело войти в контекст, с чем столкнулся и я, решив разработать свое первое Android-приложение. Настоящая статья для тех, кто хочет начать, но не знает с чего.
Статья затронет весь цикл разработки приложения. Вместе мы напишем простенькую игру “Крестики-Нолики” с одним экраном (в ОС Android это называется Activity).
Отсутствие опыта разработки на языке Java не должно стать препятствием в освоении Android. Так, в примерах не будут использоваться специфичные для Java конструкции (или они будет минимизированы на столько, на сколько это возможно). Если Вы пишете, например, на PHP и знакомы с основополагающими принципами в разработке ПО, эта статья будет вам наиболее полезна. В свою очередь так как, я не являюсь экспертом по разработке на Java, можно предположить, что исходный код не претендует на лейбл “лучшие практики разработки на Java”.
Установка необходимых программ и утилит
Перечислю необходимые инструменты. Их 3:
- JDK — набор для разработки на языке Java;
- Android SDK and AVD Manager — набор утилит для разработки + эмулятор;
- IDE c поддержкой разработки для Android:
- Eclipse + ADT plugin;
- IntelliJ IDEA Community Edition;
- Netbeans + nbandroid plugin;
Утилиты устанавливаются в определенном выше порядке. Ставить все перечисленные IDE смысла нет (разве только если Вы испытываете затруднения с выбором подходящей). Я использую IntelliJ IDEA Community Edition, одну из самых развитых на данный момент IDE для Java.
Запуск виртуального устройства
Запустив AVD Manager и установив дополнительные пакеты (SDK различных версий), можно приступить к созданию виртуального устройства с необходимыми параметрами. Разобраться в интерфейсе не должно составить труда.
Список устройств
Создание проекта
Мне всегда не терпится приступить к работе, минимизируя подготовительные мероприятия, к которым относится создание проекта в IDE, особенно, когда проект учебный и на продакшн не претендует.
Итак, File->New Project:
По нажатию кнопки F6 проект соберется, откомпилируется и запустится на виртуальном девайсе.
Структура проекта
На предыдущем скриншоте видна структура проекта. Так как в этой статье мы преследуем сугубо практические цели, заострим внимание лишь на тех папках, которые будем использовать в процессе работы. Это следующие каталоги: gen, res и src.
В папке gen находятся файлы, которые генерируются автоматически при сборке проекта. Вручную их менять нельзя.
Папка res предназначена для хранения ресурсов, таких как картинки, тексты (в том числе переводы), значения по-умолчанию, макеты (layouts).
src — это папка в которой будет происходить основная часть работы, ибо тут хранятся файлы с исходными текстами нашей программы.
Первые строки
Как только создается Activity (экран приложения), вызывается метод onCreate(). IDE заполнила его 2 строчками:
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Метод setContentView (равносильно this.setContentView) устанавливает xml-макет для текущего экрана. Далее xml-макеты будем называть «layout», а экраны — «Activity». Layout в приложении будет следующий:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/main_l"
android:gravity="center"
>
</TableLayout>
Для этого приложения идеально подойдет TableLayout. Id можно присвоить любому ресурсу. В данном случае, TableLayout присвоен id = main_l. При помощи метода findViewById() можно получить доступ к виду:
private TableLayout layout; // это свойство класса KrestikinolikiActivity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (TableLayout) findViewById(R.id.main_l);
buildGameField();
}
Теперь необходимо реализовать метод buildGameField(). Для этого требуется сгенерировать поле в виде матрицы. Этим будет заниматься класс Game. Сначала нужно создать класс Square для ячеек и класс Player, объекты которого будут заполнять эти ячейки.
Square.java
package com.example;
public class Square {
private Player player = null;
public void fill(Player player) {
this.player = player;
}
public boolean isFilled() {
if (player != null) {
return true;
}
return false;
}
public Player getPlayer() {
return player;
}
}
Player.java
package com.example;
public class Player {
private String name;
public Player(String name) {
this.name = name;
}
public CharSequence getName() {
return (CharSequence) name;
}
}
Все классы нашего приложения находятся в папке src.
Game.java
package com.example;
public class Game {
/**
* поле
*/
private Square[][] field;
/**
* Конструктор
*
*/
public Game() {
field = new Square[3][3];
squareCount = 0;
// заполнение поля
for (int i = 0, l = field.length; i < l; i++) {
for (int j = 0, l2 = field[i].length; j < l2; j++) {
field[i][j] = new Square();
squareCount++;
}
}
}
public Square[][] getField() {
return field;
}
}
Инициализация Game в конструкторе KrestikinolikiActivity.
public KrestikinolikiActivity() {
game = new Game();
game.start(); // будет реализован позже
}
Метод buildGameField() класса KrestikinolikiActivity. Он динамически добавляет строки и колонки в таблицу (игровое поле):
private Button[][] buttons = new Button[3][3];
//(....)
private void buildGameField() {
Square[][] field = game.getField();
for (int i = 0, lenI = field.length; i < lenI; i++ ) {
TableRow row = new TableRow(this); // создание строки таблицы
for (int j = 0, lenJ = field[i].length; j < lenJ; j++) {
Button button = new Button(this);
buttons[i][j] = button;
button.setOnClickListener(new Listener(i, j)); // установка слушателя, реагирующего на клик по кнопке
row.addView(button, new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT)); // добавление кнопки в строку таблицы
button.setWidth(107);
button.setHeight(107);
}
layout.addView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,
TableLayout.LayoutParams.WRAP_CONTENT)); // добавление строки в таблицу
}
}
В строке 8 создается объект, реализующий интерфейс View.OnClickListener. Создадим вложенный класс Listener. Он будет виден только из KrestikinolikiActivity.
public class Listener implements View.OnClickListener {
private int x = 0;
private int y = 0;
public Listener(int x, int y) {
this.x = x;
this.y = y;
}
public void onClick(View view) {
Button button = (Button) view;
}
}
Осталось реализовать логику игры.
public class Game {
/**
* игроки
*/
private Player[] players;
/**
* поле
*/
private Square[][] field;
/**
* начата ли игра?
*/
private boolean started;
/**
* текущий игрок
*/
private Player activePlayer;
/**
* Считает колличество заполненных ячеек
*/
private int filled;
/**
* Всего ячеек
*/
private int squareCount;
/**
* Конструктор
*
*/
public Game() {
field = new Square[3][3];
squareCount = 0;
// заполнение поля
for (int i = 0, l = field.length; i < l; i++) {
for (int j = 0, l2 = field[i].length; j < l2; j++) {
field[i][j] = new Square();
squareCount++;
}
}
players = new Player[2];
started = false;
activePlayer = null;
filled = 0;
}
public void start() {
resetPlayers();
started = true;
}
private void resetPlayers() {
players[0] = new Player("X");
players[1] = new Player("O");
setCurrentActivePlayer(players[0]);
}
public Square[][] getField() {
return field;
}
private void setCurrentActivePlayer(Player player) {
activePlayer = player;
}
public boolean makeTurn(int x, int y) {
if (field[x][y].isFilled()) {
return false;
}
field[x][y].fill(getCurrentActivePlayer());
filled++;
switchPlayers();
return true;
}
private void switchPlayers() {
activePlayer = (activePlayer == players[0]) ? players[1] : players[0];
}
public Player getCurrentActivePlayer() {
return activePlayer;
}
public boolean isFieldFilled() {
return squareCount == filled;
}
public void reset() {
resetField();
resetPlayers();
}
private void resetField() {
for (int i = 0, l = field.length; i < l; i++) {
for (int j = 0, l2 = field[i].length; j < l2; j++) {
field[i][j].fill(null);
}
}
filled = 0;
}
}
Определение победителя
К. О. подсказывает, что в крестики-нолики выирывает тот, кто выстроет X или O в линию длиной, равной длине поля по-вертикали, или по-горизонтали, или по-диагонали. Первая мысль, которая приходит в голову — это написать методы для каждого случая. Думаю, в этом случае хорошо подойдет паттерн Chain of Responsobility. Определим интерфейс
package com.example;
public interface WinnerCheckerInterface {
public Player checkWinner();
}
Так как Game наделен обязанностью выявлять победителя, он реализует этот интерфейс. Настало время создать виртуальных «лайнсменов», каждый из которых будет проверять свою сторону. Все они реализует интерфейс WinnerCheckerInterface.
WinnerCheckerHorizontal.java
package com.example;
public class WinnerCheckerHorizontal implements WinnerCheckerInterface {
private Game game;
public WinnerCheckerHorizontal(Game game) {
this.game = game;
}
public Player checkWinner() {
Square[][] field = game.getField();
Player currPlayer;
Player lastPlayer = null;
for (int i = 0, len = field.length; i < len; i++) {
lastPlayer = null;
int successCounter = 1;
for (int j = 0, len2 = field[i].length; j < len2; j++) {
currPlayer = field[i][j].getPlayer();
if (currPlayer == lastPlayer && (currPlayer != null && lastPlayer !=null)) {
successCounter++;
if (successCounter == len2) {
return currPlayer;
}
}
lastPlayer = currPlayer;
}
}
return null;
}
}
WinnerCheckerVertical.java
package com.example;
public class WinnerCheckerVertical implements WinnerCheckerInterface {
private Game game;
public WinnerCheckerVertical (Game game) {
this.game = game;
}
public Player checkWinner() {
Square[][] field = game.getField();
Player currPlayer;
Player lastPlayer = null;
for (int i = 0, len = field.length; i < len; i++) {
lastPlayer = null;
int successCounter = 1;
for (int j = 0, len2 = field[i].length; j < len2; j++) {
currPlayer = field[j][i].getPlayer();
if (currPlayer == lastPlayer && (currPlayer != null && lastPlayer !=null)) {
successCounter++;
if (successCounter == len2) {
return currPlayer;
}
}
lastPlayer = currPlayer;
}
}
return null;
}
}
WinnerCheckerDiagonalLeft.java
package com.example;
public class WinnerCheckerDiagonalLeft implements WinnerCheckerInterface {
private Game game;
public WinnerCheckerDiagonalLeft(Game game) {
this.game = game;
}
public Player checkWinner() {
Square[][] field = game.getField();
Player currPlayer;
Player lastPlayer = null;
int successCounter = 1;
for (int i = 0, len = field.length; i < len; i++) {
currPlayer = field[i][i].getPlayer();
if (currPlayer != null) {
if (lastPlayer == currPlayer) {
successCounter++;
if (successCounter == len) {
return currPlayer;
}
}
}
lastPlayer = currPlayer;
}
return null;
}
}
WinnerCheckerDiagonalRight.java
package com.example;
public class WinnerCheckerDiagonalRight implements WinnerCheckerInterface {
private Game game;
public WinnerCheckerDiagonalRight(Game game) {
this.game = game;
}
public Player checkWinner() {
Square[][] field = game.getField();
Player currPlayer;
Player lastPlayer = null;
int successCounter = 1;
for (int i = 0, len = field.length; i < len; i++) {
currPlayer = field[i][len - (i + 1)].getPlayer();
if (currPlayer != null) {
if (lastPlayer == currPlayer) {
successCounter++;
if (successCounter == len) {
return currPlayer;
}
}
}
lastPlayer = currPlayer;
}
return null;
}
}
Проинициализируем их в конструкторе Game:
//(....)
/**
* "Судьи" =). После каждого хода они будут проверять,
* нет ли победителя
*/
private WinnerCheckerInterface[] winnerCheckers;
//(....)
public Game() {
//(....)
winnerCheckers = new WinnerCheckerInterface[4];
winnerCheckers[0] = new WinnerCheckerHorizontal(this);
winnerCheckers[1] = new WinnerCheckerVertical(this);
winnerCheckers[2] = new WinnerCheckerDiagonalLeft(this);
winnerCheckers[3] = new WinnerCheckerDiagonalRight(this);
//(....)
}
Реализация checkWinner():
public Player checkWinner() {
for (WinnerCheckerInterface winChecker : winnerCheckers) {
Player winner = winChecker.checkWinner();
if (winner != null) {
return winner;
}
}
return null;
}
Победителя проверяем после каждого хода. Добавим кода в метод onClick() класса Listener
public void onClick(View view) {
Button button = (Button) view;
Game g = game;
Player player = g.getCurrentActivePlayer();
if (makeTurn(x, y)) {
button.setText(player.getName());
}
Player winner = g.checkWinner();
if (winner != null) {
gameOver(winner);
}
if (g.isFieldFilled()) { // в случае, если поле заполнено
gameOver();
}
}
Метод gameOver() реализован в 2-х вариантах:
private void gameOver(Player player) {
CharSequence text = "Player "" + player.getName() + "" won!";
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
game.reset();
refresh();
}
private void gameOver() {
CharSequence text = "Draw";
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
game.reset();
refresh();
}
Для Java, gameOver(Player player) и gameOver() — разные методы. Воспользовавшись Builder’ом Toast.makeText, можно быстро создать и показать уведомление. refresh() обновляет состояние поля:
private void refresh() {
Square[][] field = game.getField();
for (int i = 0, len = field.length; i < len; i++) {
for (int j = 0, len2 = field[i].length; j < len2; j++) {
if (field[i][j].getPlayer() == null) {
buttons[i][j].setText("");
} else {
buttons[i][j].setText(field[i][j].getPlayer().getName());
}
}
}
}
Готово! Надеюсь, эта статья помогла Вам освоиться в мире разработки под OS Android. Благодарю за внимание!
Видео готового приложения
Исходники .
PS: статья была опубликована по просьбе комментаторов этого поста.
Время на прочтение
10 мин
Количество просмотров 1.8M
Предисловие
Цель данного поста — с одной стороны поделиться своим успешным опытом старта разработки приложений на платформе Android и с другой стороны поспособствовать развитию рынка софта для этой замечательной и бурно растущей платформы за счёт (без ложной скромности скажу) возможно Вас, прочитавших данный пост. В сети, конечно, можно найти материалы на тему разработки приложения «чуть сложнее, чем helloworld», но как правило они разрозненные и в них не описываются различные мелкие подводные камешки. В данном посте мы рассмотрим полный цикл разработки приложения, начиная с чистого компьютера до готового apk-файла. Под катом скрины.
Подготовка к разработке
Для того, чтобы подготовиться к разработке не требуется каких-то особых действий и манипуляций. Буду описывать пошагово, что нужно сделать. У меня стоит Windows XP, поэтому и всё нижесказанное следует относить именно к данной ОС, хотя действия без каких-то сильных изменений можно применить и к другим ОС семейства Windows и даже Linux.
- Установка среды разработки Eclipse
- Установка ADT плагина к Eclipse
- Установка JDK и JRE
- Установка Android SDK
Установка среды разработки Eclipse
Тут всё просто. Идём в раздел Downloads на официальном сайте и качаем версию Classic. Далее просто распакуйте архив, куда вам хочется, я же решил это сделать в почетную директорию C:Eclipse
Установка ADT плагина к Eclipse
Запускаем Eclipse, и открываем диалог установки плагина через меню Help → Install new software. В поле Work with вписываем адрес загрузки плагина dl-ssl.google.com/android/eclipse (если не получилось, то плагин можно скачать и установить вручную по ссылке http://developer.android.com/sdk/eclipse-adt.html), далее в таблице ниже появится Developer Tools, отмечаем его и идем далее.
После успешной установки, можно перезапустить среду Eclipse.
Установка среды для Java: JDK и JRE
Если у вас еще не установлены Java Development Kit (JDK) и Java Runtime Environment (JRE), то их необходимо установить. Сделать это можно на сайте Oracle. Скачайте и установите JDK и JRE.
Установка Android SDK
Дело осталось за малым — это скачать и установить свежий Android SDK. Это делается на сайте для Android разработчиков. Я лично установил SDK опять-таки в почётную директорию C:Android. После этого необходимо добавить платформы и прочие дополнительные элементы SDK. Я добавил все доступные версии, так как планирую делать приложения и для ранних платформ, а также USB-драйвер и примеры приложений.
Подготовка к разработке завершена. Теперь следующий этап — создание приложения.
Создание Android-приложения
Перед тем как создать своё первое приложение, можно создать виртуальное Android-устройство, чтобы быстро тестировать на нём свой свеженаписанный софт. Вначале я хочу сказать вам несколько слов по поводу Android Virtual Device (AVD). Это виртуальный смартфон с ОС Android, на котором вы с легкостью сможете запускать созданную вами программу. Как можно заметить, преимущество Android Virtual Device состоит в том, что наглядно можно увидеть как будет работать Ваша программа на разных смартфонах с Android, а не покупать весь модельный ряд и тестировать приложение на каждом из них.
Приступим к созданию виртуального устройства Android. Следуем в меню по пути Window → Android SDK and AVD Manager.
Выбираем New в правой части окна, в появившемся окне вписываем имя виртуального устройства, платформу (допустим Android 2.1), размер карты памяти (допустим 512 Mb), тип дисплея (допустим HVGA). Затем жмем внизу на кнопку Create AVD.
Теперь создадим проект. Для этого идем по пути в меню File → New → Other, в появившемся списке Android → Android Project.
В качестве примера расскажу о разработке одной моей простейшей программы UfaTermometr, показывающей текущую температуру с датчиков, расположенных на одном из объектов местной энерго-компании.
После создания проекта, слева вы увидите дерево директорий. Перво-наперво загрузим свою иконку приложения, а точнее 3 иконки под разные варианты. В папку drawable-hdpi грузим png-картинку с прозрачным фоном размером в 72×72, в drawable-mdpi соответственно 48×48 и в drawable-ldpi самую маленькую размером 36×36. Делать это можно простым перетаскиванием файлов прямо на дерево. Следующим шагом будут элементы управления. В моей программе было необходимо всего три элемента интерфейса: ImageView (просто картинка логотип приложения), Button (обновить значение температуры) и TextView (вывод значения температуры). Все эти элементы управления нужно описать в специальном xml-файле. В дереве он расположен по адресу res → layout → main.xml. Во-многом разметка элементов управления сходна с вёрсткой веб-страниц, тут есть и padding, и margin, и аналог align. Код main.xml моего приложения:
<?xml version=«1.0» encoding=«utf-8»?>
<LinearLayout xmlns:android=«schemas.android.com/apk/res/android»
android:orientation=«vertical»
android:layout_width=«fill_parent»
android:layout_height=«fill_parent»
>
<ImageView android:layout_width=«fill_parent»
android:layout_height=«wrap_content»
android:src=»@drawable/droid»
android:layout_gravity=«center_horizontal|center»
android:layout_margin=«0px»
/>
<Button
android:id=»@+id/refrbutton»
android:layout_width=«wrap_content»
android:layout_height=«wrap_content»
android:gravity=«center_horizontal»
android:layout_gravity=«center_horizontal|center»
android:textSize=«30px»
android:padding=«20px»
android:layout_marginTop=«10dip»
android:text=«Обновить»
/>
<TextView
android:layout_width=«fill_parent»
android:layout_height=«wrap_content»
android:text=»…»
android:textSize=«100dip»
android:gravity=«center_horizontal»
android:id=»@+id/temper»
android:textColor=»#EEE3C4″
/>
</LinearLayout>
Подробно останавливаться на разметке элементов управления не буду, так как это всё достаточно подробно описано в мануале и вообще интуитивно понятно, особенно тому, кто имел дело с html/css-вёрсткой и/или разработкой в какой-либо визуальной среде (например, Delphi). Единственное, обратите внимание как я загрузил произвольное изображение в ImageView. В поле src указывается путь, начинающийся с символа @ и далее указываете адрес по дереву. В папке res я заблаговременно создал подпапку drawable и «закинул» туда логотип, а затем просто указал ImageView путь. Легко? По мне так очень.
Непосредственно код приложения располагается по пути src → «ваше название package» → «название приложения».java.
По-умолчанию создается «болванка» главного класса и от неё уже дальше можно плясать. Не буду останавливаться на тонкостях такого простого кода как у меня в примере, но поясню, что логика работы объясняется тремя простыми шагами:
- Загрузить HTML-страницу со значениями температуры
- С помощью регулярок «вытащить» температуру
- Показать в TextView значение температуры
Заметьте, что когда приложению требуются какие-то системные разрешения, нужно указывать их в манифесте AndroidManifest.xml. В данном конкретном случае мы используем подключение к Интернет, соответственно добавляем строчку <uses-permission android:name=«android.permission.INTERNET»/> в указанный выше xml-файл.
Собственно сам код, реализующий указанную выше логику работы:
package app.test.ufatermometr;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.*;public class UfaTermometr extends Activity
{@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button button = (Button) findViewById(R.id.refrbutton);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) // клик на кнопку
{
RefreshTemper();
}
});
RefreshTemper();
// при запуске грузим температуру сразу
};
//—————————————————————-
public String GetTemper(String urlsite) // фукция загрузки температуры
{
String matchtemper = «»;
try
{
// загрузка страницы
URL url = new URL(urlsite);
URLConnection conn = url.openConnection();
InputStreamReader rd = new InputStreamReader(conn.getInputStream());
StringBuilder allpage = new StringBuilder();
int n = 0;
char[] buffer = new char[40000];
while (n >= 0)
{
n = rd.read(buffer, 0, buffer.length);
if (n > 0)
{
allpage.append(buffer, 0, n);
}
}
// работаем с регулярками
final Pattern pattern = Pattern.compile
(«<span style=«color:#[a-zA-Z0-9]+»>[^-+0]+([-+0-9]+)[^<]+</span>[^(а-яА-ЯёЁa-zA-Z0-9)]+([а-яА-ЯёЁa-zA-Z ]+)»);
Matcher matcher = pattern.matcher(allpage.toString());
if (matcher.find())
{
matchtemper = matcher.group(1);
}
return matchtemper;
}
catch (Exception e)
{
}
return matchtemper;
};
//—————————————————————-
public void RefreshTemper()
{
final TextView tTemper = (TextView) findViewById(R.id.temper);
String bashtemp = «»;
bashtemp = GetTemper(«be.bashkirenergo.ru/weather/ufa»);
tTemper.setText(bashtemp.concat(«°»)); // отображение температуры
};
}
После того как приложение написано, можно уже его отлаживать и тестировать.
Запуск и тестирование приложения
Вспоминаем про нашу виртуальную машину и запускаем привычной кнопкой или менюшкой Run → Run
Вот такую картину мы можем затем созерцать:
Теперь, если вы хотите поделиться приложением, то нужно собрать apk-файл. Для этого воспользуемся меню File → Export и в списке Android → Export Android application. Далее выберите проект, затем создайте хранилище ключей keystore и ключ key, для этого нужно будет заполнить несколько полей с всякого рода справочной информацией. Получившийся apk-файл можно распространять и даже выложить в Android Market, но для этого придется зарегистрироваться и уплатить $25, что в общем-то немного, особенно для стоящего проекта. Но регистрация в Маркете, пожалуй, тема отдельной статьи.
Заключение
В заключении хотелось бы сказать, что безусловно разработка приложений для Android приятна, достаточно проста и интересна. Конечно, мы рассмотрели лишь верхушку айсберга, но я надеюсь, что в умах тех из вас, кто раньше не пробовал делать ничего подобного «загорелась лампочка» и вполне возможно, что когда-то вашим приложением будут пользоваться миллионы.
Источники, ссылки
В посте использованы материалы:
www.ibm.com
www.itblog.name
Википедия
APK-файл приложения
UPD: Устранение возможных ошибок
Defite:
1. Ошибка
ERROR: Unable to open class file C:workspaceTestgencomexampletestR.java: No such file or directory
решается очисткой проекта через меню Project → Clean или перезапуском Eclipse.
2. Когда возникает ошибка
emulator: ERROR: no search paths found in this AVD’s configuration. Weird, the AVD’s config.ini file is malformed. Try re-creating it
— это следствие того, что у Вас кириллица в имени пользователя. Решается: идем в Компьютер → Свойства системы → Дополнительные параметры системы → Переменные среды. Создаем новую переменную с именем ANDROID_SDK_HOME и значением – путем, где находится папка AVD (например, C:Android). Создаем, далее ищем там же переменную Path, открываем и в поле значений через точку с запятой добавляем путь до папки tools Android SDK (например, C:Androidtools). Сохраняем. Запускаем Eclipse, запускаем программу.
UPD 05.10.2011, во что превратилось данное приложение можно лицезреть на следующих скринах:
Это результат развития той самой болванки, которая выше дана в качестве примера.
Разработка и создание Android-приложений
Создание сайтов
#Руководства
- 18 июл 2018
-
1
Платформа Android открытая, поэтому каждый может написать своё приложение и распространять его через каталоги программ. Все инструменты бесплатны.
vlada_maestro / shutterstock
Пишет про разработку в Skillbox Media. Работал главным редактором сайта «Хабрахабр», ведёт корпоративные блоги.
Язык программирования для мобильной разработки на Android очень простой — это Java. Сейчас Google активно продвигает Kotlin как язык, который сможет заменить Java. Приложения пишут и на C++.
Создание простейшего приложения состоит из нескольких этапов:
- проект в Android Studio;
- создание пользовательского интерфейса;
- добавление активностей, навигации и действий;
- тест-драйв приложения в эмуляторе.
Первым делом установите программу Android Studio. Это официальная среда разработки (IDE) для Android, она работает на Windows, macOS и Linux. Хотя при разработке программ для Android можно использовать и другие среды, кроме Android Studio.
Если на компьютере не установлены Android SDK и другие компоненты, то Android Studio автоматически скачает их. Android SDK — это среда программирования, в которую входят библиотеки, исполняемые файлы, скрипты, документация и т.д.
Android SDK компилирует код вместе с любыми данными и ресурсами в файл с расширением .apk. Он содержит всё необходимое для установки приложения на Android-устройство.
Полезно установить и эмулятор Android, чтобы запускать и тестировать приложения. Эмулятор поставляется в комплекте с Android Studio.
Когда все инструменты установлены, можно создать первый проект. Но сначала нужно разобраться с основными понятиями.
Android-приложение состоит из четырёх компонентов. Каждый компонент — это точка входа, через которую система или пользователь может получить доступ.
- Активность (activity) — элементы интерактивного пользовательского интерфейса.
Одна активность задействует другую и передаёт информацию о том, что намерен делать пользователь, через класс Intent (намерения). Активности подобны веб-страницам, а намерения — ссылкам между ними. Запуск приложения — это активность Main. - Сервис (service) — универсальная точка входа для поддержания работы приложения в фоновом режиме.
Этот компонент выполняет длительные операции или работу для удалённых процессов без визуального интерфейса. - Широковещательный приемник (broadcast receiver) транслирует нескольким участникам намерения из приложения.
- Поставщик содержимого (content provider) управляет общим набором данных приложения из файловой системы, базы данных SQLite, интернета или другого хранилища.
Теперь попробуем сделать своё приложение для Android.
Выбираем название приложения, домен компании, путь к проекту и название пакета. Указываем, включить ли поддержку опциональных языков программирования C++ и Kotlin.
Задаём одну или несколько целевых платформ для сборки. Для этого используется SDK и AVD, менеджер виртуальных устройств Android. Инструмент позволяет устанавливать в SDK пакеты, которые поддерживают несколько версий ОС Android и несколько уровней API (интерфейсов программирования приложений).
Справка
Чем ниже версия Android, тем больше устройств, на которых приложение запустится. Чем выше версия, тем богаче функциональность API.
Выбираем основную активность, которая будет запускаться при нажатии на иконку приложения, и даём ей имя.
После нескольких минут сборки Android Studio открывает интерфейс IDE. Здесь три основных момента.
Если выбрать в выпадающем меню вид Android, то вы увидите файлы проекта. Например, наша основная активность называется app > java > ru.skillbox.skillboxapp > FullscreenActivity. При создании проекта мы указали вместо активности Main полноэкранную активность.
Далее можно посмотреть файл app > res > layout > activity_fullscreen.xml. Это XML-файл с макетом для UI нашей основной активности.
Наконец, третий важный файл app > manifests > AndroidManifest.xml описывает фундаментальные характеристики приложения и определяет все его компоненты.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.skillbox.skillboxapp">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".FullscreenActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:theme="@style/FullscreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Созданное нами приложение — это одна активность, которая запускается в полноэкранном режиме и не имеет графических элементов.
Запускаем на Android-устройстве или в эмуляторе.
Смартфон или планшет для этого подключаем в режиме USB-отладки, которая активируется в Настройках разработчика в меню Настройки.
Для запуска в эмуляторе нажимаем в Android Studio кнопку Run в меню Run (Shift+F10). Выбираем подходящее устройство и версию ОС, портретную или ландшафтную (альбомную) ориентацию.
Пользовательский интерфейс Android-приложения создаётся через иерархию макетов (layouts, объекты ViewGroup) и виджетов (объекты View). Макеты управляют расположением дочерних виджетов на экране. Сами виджеты — это непосредственно компоненты UI: кнопки, текстовые поля на экране и т.п.
Интерфейс активностей создаётся в Android Studio в редакторе макетов (Layout Editor) и хранится по большей части в XML-файлах.
- Открываем файл app > res > layout > activity_fullscreen.xml.
- Добавляем на экран из палитры (Palette) виджеты перетаскиванием мышью.
- Например, берём текстовое поле (PlainText). Это виджет EditText, куда пользователь может вводить текст.
- Добавляем кнопки и другие нужные элементы.
Предположим, мы создали активность с текстовым полем и кнопкой «Отправить». После этого нужно написать, что конкретно будет происходить при нажатии кнопки «Отправить».
- Заходим в код app > java > FullscreenActivity.
- Добавляем метод SendMessage() в класс FullscreenActivity, чтобы при нажатии на кнопку вызывался этот метод.
- Создаём намерения (класс Intent) для перехода от одной активности к другой, новые активности, навигацию и всё остальное, что необходимо для приложения.
И, конечно, начинаем мечтать, как монетизировать приложение.
Научитесь: Профессия Мобильный разработчик
Узнать больше
Android – базирующаяся на ОС Linux операционная система с открытым исходным кодом, предназначенная для мобильных устройств – таких, как, например, смартфоны или планшетные компьютеры.
Это руководство предназначено для введения в основные понятия программирования под Android, так что после его изучения вы будете понимать некоторые базовые концепции программирования под эту ОС.
От вас же, в свою очередь, требуется только желание и базовое понимание программирования на языке Java. Не так много, правда? Что ж, начнём!
Среда разработки
Для разработки приложений под Android можно использовать любые из перечисленных операционных систем:
- Microsoft Windows XP или более поздняя версия
- Mac OS X 10.5.8 или более поздняя версия с чипом Intel
- Linux, включающая GNU C Library 2.7 или более позднюю версию
При этом все необходимые инструменты для разработки Android-приложений находятся в свободном доступе и вы можете загрузить их из Интернета. Для того, чтобы начать создавать приложения под Android, вам понадобятся:
- Java JDK5 или более поздняя версия
- Android Studio
Структура приложений
Поздравляем, ваше оборудование готово к работе! Однако прежде чем приступить к вашему первому приложению, поговорим о том, что из себя представляет приложение на Android и из чего оно состоит.
Компоненты приложения являются своего рода «строительными блоками» для приложения Android. Эти компоненты связаны файлом-манифестом приложения AndroidManifest.xml, который описывает каждый компонент приложения и взаимодействие этих компонентов между собой.
Есть четыре базовых типа компонентов, которые могут быть использованы в приложении Android:
- Операции (Activities) представляют собой элементы пользовательского интерфейса (одна операция – один экран) и отвечают за взаимодействие пользователя с экраном мобильного устройства;
- Службы (Services) представляют собой длительные операции, работающие в фоновом режиме и не имеющие пользовательского интерфейса (например, передача данных), вместо этого они, как правило, запускаются иными элементами, уже имеющими пользовательский интерфейс, и взаимодействуют с ними;
- Приемники широковещательных сообщений (Broadcast receivers) представляют собой компоненты, реагирующие на объявления самой ОС, передаваемые всей системе (как хороший пример – объявление о низком уровне заряда батареи устройства). Они также не имеют пользовательского интерфейса, однако могут передавать данные другим компонентам, где они демонстрируются пользователю в виде уведомлений;
- Поставщики контента (Content providers) представляют собой компоненты, управляющие взаимодействием приложения с его базой данных — посредством поставщика контента другие компоненты приложения могут запрашивать или изменять данные.
Помимо четырех базовых типов, существуют дополнительные типы компонентов, используемые для выстраивания взаимодействий и связей как между базовыми типами компонентов, так и между компонентами и внешними элементами. К ним относятся:
- Фрагменты (Fragments) – части пользовательского интерфейса в Операциях (см. выше);
- Виды (Views) – элементы пользовательского интерфейса, отображаемые на экране, например, кнопки, списки и т. д.;
- Макеты (Layouts) – определяют элементы пользовательского интерфейса, их свойства и расположение;
- Намерения (Intents) – соединяют вместе различные компоненты приложения или связывают друг с другом работу разных приложений;
- Ресурсы (Resources) – внешние элементы, такие, как строки, константы или изображения;
- Манифест (Manifest) – конфигурационный файл приложения.
Теперь, когда вы получили базовое понимание о структуре приложений на Android, хотелось бы предложить вам самим попробовать создать свое первое приложение.
Первое приложение
Итак, давайте приступим к созданию простого Android-приложения, которое будет выводить на экран «Hello World!».
У вас к этому времени уже должен быть установлен Android Studio последней версии. Ниже будет приведена небольшая пошаговая инструкция:
- Откройте Android Studio.
- В открывшемся окне кликните на «Start a new Android Studio project», чтобы создать новый проект.
- В открывшемся окне в строку «Application name» введите название вашего будущего приложения. Нажмите Next.
- В следующем окне вам нужно выбрать тип устройств, для которых создается приложение – в нашем случае необходимо выбрать «Phone and Tablet» (смартфоны и планшетные компьютеры), а в выпадающем списке под названием «Minimum SDK» нужно выбрать версию Android, для которой создается приложение (обычно указывается самая ранняя версия, способная запустить приложение) – в нашем конкретном случае выберем версию Android 6.0. Если в вашей версии есть возможность выбрать язык программирования (выпадающее окно Language), выберите пункт “Java”. Остальные опции можно оставить без изменений. Нажмите Next.
- На следующем этапе выберите пункт Empty Activity – это будет означать, что экран нашего приложения не будет иметь никаких дополнительных элементов. Нажмите Next.
Теперь перед вами открылась привычная среда разработки. К сожалению или к счастью, но сейчас вам не нужно будет писать код – среда разработки уже сделала это за вас, создав файлы для приложения, выводящего «Hello world!» на экран, по умолчанию. Вместо этого хотелось бы обратить ваше внимание на несколько созданных файлов и папок, найти которые вы можете в колонке слева, отображающей все элементы проекта.
- Файл MainActivity.java
В папке «Java» содержатся исходные файлы формата .java для вашего приложения. По умолчанию в ней находится исходный файл MainActivity.java, имеющий класс Операция – он запускается при нажатии пользователем на иконку приложения на устройстве. Этот файл содержит главный код приложения, и именно он преобразуется в файл .exe для запуска приложения на устройстве.
- Файл AndroidManifest.xml
Это файл типа «Манифест», который описывает основные характеристики приложения и определяет каждый из его компонентов. Он является своего рода интерфейсом между ОС Android и вашим приложением – если компонент не упомянут в этом файле, он не будет отображен и в операционной системе.
- Файл Build.gradle
Это автоматически генерируемый файл, содержащий определённые данные касательно приложения – такие, как, например, версия SDK.
Запустить приложение можно двумя способами: на реальном устройстве или на эмуляторе в самой среде разработки. В нашем случае мы рассмотрим более универсальный случай – запуск на эмуляторе, полностью имитирующем работу устройства с операционной системой Android.
Запуск приложения на эмуляторе
Попытайтесь запустить приложение кнопкой «Run» – в появившемся диалоговом окне выберите пункт «Create New Virtual Device». В последующих окнах нужно будет выбрать размер экрана и версию Android – помните, что она должна быть не ниже, чем указанная на этапе создания проекта. В случае, если данная версия Android будет отсутствовать на компьютере, Android Studio предложит ее загрузить. Остальные пункты можно оставить без изменений – на данный момент нет необходимости их изменять. После выбора всех настроек нажмите кнопку «Finish», и если вы увидели на своем мониторе экран телефона с названием вашего приложения сверху и с надписью «Hello world!» на экране, значит, вы можете себя поздравить – вы создали свое первое Android-приложение!
Теперь у вас есть базовое понимание и минимальный опыт в создании приложений на Android. Этого, разумеется, совершенно не хватит, чтобы заниматься разработкой, но это необходимый для дальнейшего развития фундамент – продолжайте изучать и практиковаться! Всего наилучшего!
Также можно научиться создавать приложения на Android и другие ОС после прохождения нашего шестимесячного курса «Профессия: Разработчик» 👉 Узнать подробности!
Урок 1. Введение.
Урок 2. Установка Android Studio
Урок 3. Создание AVD. Первое приложение. Структура Android-проекта.
Урок 4. Компоненты экрана и их свойства
Урок 5. Layout-файл в Activity. XML представление. Смена ориентации экрана.
Урок 6. Виды Layouts. Ключевые отличия и свойства.
Урок 7. Layout параметры для View-элементов.
Урок 8. Работаем с элементами экрана из кода
Урок 9. Обработчики событий на примере Button.
Урок 10. Оптимизируем реализацию обработчиков.
Урок 11. Папка res/values. Используем ресурсы приложения.
Урок 12. Логи и всплывающие сообщения
Урок 13. Создание простого меню
Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Урок 15. Контекстное меню
Урок 16. Программное создание экрана. LayoutParams
Урок 17. Создание View-компонент в рабочем приложении
Урок 18. Меняем layoutParams в рабочем приложении
Урок 19. Пишем простой калькулятор
Урок 20. Анимация
Урок 21. Создание и вызов Activity
Урок 22. Intent, Intent Filter, Context — теория
Урок 23. Activity Lifecycle. В каких состояниях может быть Activity
Урок 24. Activity Lifecycle, пример смены состояний с двумя Activity
Урок 25. Task. Что это такое и как формируется
Урок 26. Intent Filter — практика
Урок 27. Читаем action из Intent
Урок 28. Extras — передаем данные с помощью Intent
Урок 29. Вызываем Activity и получаем результат. Метод startActivityForResult
Урок 30. Подробнее про onActivityResult. Зачем нужны requestCode и resultCode
Урок 31. Зачем у Intent есть атрибут data. Что такое Uri. Вызываем системные приложения
Урок 32. Пишем простой браузер
Урок 33. Хранение данных. Preferences.
Урок 34. Хранение данных. SQLite
Урок 35. SQLite. Методы update и delete с указанием условия
Урок 36. SQLite. Подробнее про метод query. Условие, сортировка, группировка
Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLite. Метод rawQuery.
Урок 38. Транзакции в SQLite. Небольшой FAQ по SQLite.
Урок 39. onUpgrade. Обновляем БД в SQLite
Урок 40. LayoutInflater. Учимся использовать.
Урок 41. Используем LayoutInflater для создания списка
Урок 42. Список — ListView
Урок 43. Одиночный и множественный выбор в ListView
Урок 44. События в ListView
Урок 45. Список-дерево ExpandableListView
Урок 46. События ExpandableListView
Урок 47. Обзор адаптеров
Урок 48. Используем SimpleAdapter.
Урок 49. SimpleAdapter. Методы SetViewText и SetViewImage
Урок 50. SimpleAdapter. Используем ViewBinder
Урок 51. SimpleAdapter, добавление и удаление записей
Урок 52. SimpleCursorAdapter, пример использования
Урок 53. SimpleCursorTreeAdapter, пример использования
Урок 54. Кастомизация списка. Создаем свой адаптер
Урок 55. Header и Footer в списках. HeaderViewListAdapter
Урок 56. Spinner – выпадающий список
Урок 57. GridView и его атрибуты
Урок 58. Диалоги. TimePickerDialog
Урок 59. Диалоги. DatePickerDialog
Урок 60. Диалоги. AlertDialog: Title, Message, Icon, Buttons
Урок 61. Диалоги. AlertDialog.Метод onPrepareDialog
Урок 62. Диалоги. AlertDialog. Список
Урок 63. Диалоги. AlertDialog. Список с одиночным выбором
Урок 64. Диалоги. AlertDialog. Список с множественным выбором
Урок 65. Диалоги. AlertDialog. Кастомизация
Урок 66. Диалоги. Обработчики и операции
Урок 67. Диалоги. ProgressDialog
Урок 68. Немного о Parcel
Урок 69. Передаем Parcelable объекты с помощью Intent
Урок 70. onSaveInstanceState. Сохранение данных Activity при повороте экрана
Урок 71. Preferences как настройки приложения. PreferenceActivity
Урок 72. Preferences. Список, экраны и категории
Урок 73. Preferences. Управляем активностью настроек (setEnabled)
Урок 74. Preferences. Программное создание экрана настроек
Урок 75. Хранение данных. Работа с файлами.
Урок 76. Tab — вкладки. Общий обзор
Урок 77. Tab — вкладки. TabActivity. Activity, как содержимое вкладки
Урок 78. Tab — вкладки. TabContentFactory, ручное создание содержимого вкладки
Урок 79. XmlPullParser. Парсим XML
Урок 80. Handler. Немного теории. Наглядный пример использования
Урок 81. Handler. Посылаем простое сообщение
Урок 82. Handler. Пример с более содержательными сообщениями
Урок 83. Handler. Отложенные сообщения, удаление из очереди, Handler.Callback
Урок 84. Handler. Обработка Runnable
Урок 85. Еще несколько способов выполнения кода в UI-потоке
Урок 86. AsyncTask. Знакомство, несложный пример
Урок 87. AsyncTask. Параметры. Промежуточные результаты
Урок 88. AsyncTask. Итоговый результат. Метод get
Урок 89. AsyncTask. Cancel – отменяем задачу в процессе выполнения
Урок 90. AsyncTask. Status – статусы задачи
Урок 91. AsyncTask. Поворот экрана
Урок 92. Service. Простой пример
Урок 93. Service. Передача данных в сервис. Методы остановки сервиса
Урок 94. Service. Подробно про onStartCommand
Урок 95. Service. Обратная связь с помощью PendingIntent
Урок 96. Service. Обратная связь с помощью BroadcastReceiver
Урок 97. Service. Биндинг. ServiceConnection
Урок 98. Service. Локальный биндинг
Урок 99. Service. Уведомления — notifications
Урок 100. Service. IntentService. Foreground. Автозагрузка сервиса
Урок 101. Создаем свой ContentProvider
Урок 102. Touch – обработка касания
Урок 103. MultiTouch – обработка множественных касаний
Урок 104. Android 3. Fragments. Lifecycle
Урок 105. Android 3. Fragments. Динамическая работа
Урок 106. Android 3. Fragments. Взаимодействие с Activity
Урок 107. Android 3. ActionBar. Размещение элементов
Урок 108. Android 3. ActionBar. Навигация — табы и выпадающий список
Урок 109. Android 3. Fragments. ListFragment — список
Урок 110. Android 3. Fragments. DialogFragment — диалог
Урок 111. Android 3. Fragments. PreferenceFragment — настройки. Headers
Урок 112. Android 3. ActionBar. Динамическое размещение элементов
Урок 113. Android 3. ActionMode, как альтернатива контекстному меню
Урок 114. Android 3. Библиотека Support Library. Зачем нужна и как ее использовать на примере фрагментов
Урок 115. Одно приложение на разных экранах
Урок 116. Поведение Activity в Task. Intent-флаги, launchMode, affinity
Урок 117. Виджеты. Создание. Lifecycle
Урок 118. Виджеты. Конфигурационный экран. Обновление
Урок 119. PendingIntent – флаги, requestCode. AlarmManager
Урок 120. Виджеты. Обработка нажатий
Урок 121. Виджеты. Список
Урок 122. Виджеты. Превью, изменение размера, экран блокировки, ручное обновление
Урок 123. Как подписать приложение. Утилиты keytool и jarsigner
Урок 124. Что такое Package для приложения
Урок 125. ViewPager
Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основные возможности
Урок 127. Медиа. SoundPool
Урок 128. Медиа. Audio Focus
Урок 129. Медиа. Запись звука с помощью MediaRecorder
Урок 130. Медиа. Запись звука с помощью AudioRecorder
Урок 131. Камера. Используем системное приложение
Урок 132. Камера. Вывод изображения на экран. Размер preview. Обработка поворота устройства
Урок 133. Камера. Делаем снимок и пишем видео
Урок 134. Камера. Настройки
Урок 135. Loader. LoaderManager. AsyncTaskLoader
Урок 136. CursorLoader
Урок 137. Сенсоры. Ускорение, ориентация.
Урок 138. Определение местоположения. GPS координаты.
Урок 139. Google maps. Создание и настройка проекта. Карта, камера, события
Урок 140. Google maps. Свои объекты на карте
Урок 141. Рисование. Доступ к Canvas
Урок 142. Рисование. Простые фигуры, текст
Урок 143. Рисование. Path
Урок 144. Рисование. Matrix-преобразования
Урок 145. Рисование. Matrix. setRectToRect и setPolyToPoly
Урок 146. Рисование. Canvas-преобразования. Методы save и restore.
Урок 147. Рисование. Region
Урок 148. Рисование. Canvas, clip
Урок 149. Рисование. Текст
Урок 150. Рисование. PathMeasure – информация о Path-объекте
Урок 151. Рисование. PathEffect
Урок 152. Рисование. Picture
Урок 153. Рисование. ColorFilter, ColorMatrix
Урок 154. Рисование. PorterDuff.Mode, PorterDuffXfermode
Урок 155. Рисование. PorterDuffColorFilter
Урок 156. Рисование. AvoidXfermode
Урок 157. Рисование. Bitmap. BitmapFactory. Чтение, вывод на канву, основная информация
Урок 158. Рисование. Bitmap. Методы createBitmap, работа с пикселами, density, mutable
Урок 159. Рисование. Bitmap. BitmapFactory.Options, сохранение в файл
Урок 160. Рисование. Bitmap. Чтение изображений большого размера
Урок 161. Рисование. Bitmap. Memory-кэш. Picasso
Урок 162. Графика. Drawable. Shape, Gradient.
Урок 163. Графика. Drawable. Bitmap, Layer List, State List.
Урок 164. Графика. Drawable. Level List, Transition, Inset, Clip, Scale
Урок 165. Графика. BitmapShader, LinearGradient, RadialGradient, SweepGradient
Урок 166. Графика. Создание своего Drawable
Урок 167. Рисование. Метод Canvas saveLayer.
Урок 168. OpenGL. Введение.
Урок 169. OpenGL. Шейдеры
Урок 170. OpenGL. Графические примитивы
Урок 171. OpenGL. Цвет.
Урок 172. OpenGL. Perspective. Frustum. Ortho.
Урок 173. OpenGL. Камера
Урок 174. OpenGL. Модель
Урок 175. OpenGL. Текстуры.
Урок 176. OpenGL. Индексы, текстуры для куба.
Урок 180. ConstraintLayout. Основы
Урок 181. ConstraintLayout: match_constraints, инструменты в toolbar, guidelines, aspect ratio
Урок 182. ConstraintLayout: chain, weight, barrier, group, circular
Урок 183. ConstraintSet. Программная настройка ConstraintLayout
Урок 184. Android Notifications. Уведомления. Основы
Урок 185. Notifications. Режимы открытия Activity
Урок 186. Notifications. Расширенные уведомления
Урок 187. Notifications. Action кнопки. Reply.
Урок 188. Notifications. Кастомные уведомления
Урок 189. Notifications. Группировка уведомлений
Урок 190. Notifications. Каналы
На каком языке в какой среде разработки писать, как выложить в Google Play и зарабатывать
https://gbcdn.mrgcdn.ru/uploads/post/2134/og_image/912aecd851b468f3531cf6927743dbca.jpg
Мобильная разработка развивается быстрыми темпами, но несмотря на более чем десятилетний путь, можно с уверенностью говорить, что разработка мобильных приложений и вся индустрия в целом находятся в самом начале своего пути. Далеко не у всех в мире есть смартфоны, далеко не все области применения и использования исследованы и раскрыты. В будущем обязательно появятся новые направления в разработке, отрасль будет расти вместе с востребованностью мобильных разработчиков.
Уже несколько лет на рынке разработки приложений под Андроид спрос превышает предложение, и такое состояние рынка сохранится в ближайшие годы. Если говорить о специфике разработки, то речь здесь идёт не только о смартфонах и планшетах. Каждый сможет найти направление себе по вкусу: носимая электроника, Android TV, Android в автоиндустрии, дополненная и виртуальная реальность, интернет вещей…
Но наиболее актуальной и востребованной сегодня является именно разработка мобильных приложений под Android. В этой статье я расскажу, как создать приложение для Андроид с нуля и какие инструменты вообще для этого понадобятся.
Разработка андроид приложений: минимальный набор знаний
На самом деле требований здесь немного, но глубина познаний в нужных областях должна постоянно расти. Вот чем очень не помешает овладеть:
- Языками программирования Java или Kotlin;
- Платформой Android Studio для разработки на платформе Android;
- Git;
- Основными библиотеками, которые вам сильно облегчат жизнь: Retrofit (для получения данных из интернета), Glide (для загрузки изображений)
- Архитектурными компонентами Андроид (чтобы писать чистый и надёжный код);
- Умением писать приложение в архитектуре MVP или MVVM (для надёжности приложения, его поддержки и развития).
На чём писать приложения для Android
В принципе для разработки нужна только Android Studio, которую можно бесплатно скачать с официального сайта. Это лучшая среда разработки андроид приложений из существующих на рынке. Подойдёт любая операционная система (Mac OS, Windows, Linux). Что касается аппаратной части, желательно иметь процессор не старше пяти лет и 8 гигабайт оперативной памяти (+ 1,5 ГБ свободного места на диске).
Если вы не знаете ничего о программировании и имеете только жгучее желание создавать, для начала нужно выучить хотя бы один язык программирования. На данный момент написать приложение для Android можно на Java или на Kotlin. Предпочтительный язык — Kotlin, но если вы планируете стать профессиональным разработчиком, то Java вам нужно хотя бы уметь «читать» (а лучше и писать на ней). Эти языки очень похожи, работают по одинаковым принципам и имеют очень похожий синтаксис. У нас на факультете Android-разработки мы начинаем изучать Java, а в середине обучения переходим на Kotlin. Так выпускник оказывается полностью подготовлен к профессии андроид-разработчика в плане языков программирования.
Чтобы с удобством изучать Java, установите среду разработки на Джаве — IntelliJ Idea Community Edition. Это бесплатная программа, лучшая на рынке. Инструкцию по установке можно найти в конце этой статьи, в дополнительных материалах.
Устанавливаем Git для хранения кода
Git — это полезный инструмент, который вам как разработчику рано или поздно понадобится. С его помощью можно хранить разные версии вашего приложения на компьютере или в облаке. Скачайте, установите его, а также прочитайте первые несколько глав из руководства. Достаточно первых трёх глав (Введение, Основы, Ветвление), чтобы освоиться с самыми полезными функциями:
После установки Git вы сможете сохранять разные версии кода вашего андроид-приложения на компьютере или в облаке:
Среда разработки андроид-приложений
Если вы уже освоились с Джавой или Котлином, можно переходить непосредственно к разработке андроид-приложений. Для этого нам понадобится Android Studio. Если у вас уже стоит Git, то к нему можно подключиться как показано на скриншоте выше.
Если вам по какой-то причине не нравится Android Studio, то можно установить Eclipse в качестве среды разработки андроид-приложений. Но Эклипс — это скорее исключение из правил. Подавляющее большинство разработчиков работают в Студии.
Также, если у вас процессор от AMD, то рекомендуется поставить в качестве эмулятора смартфона Genymotion. Если у вас процессор от Intel, то встроенного в Android Studio эмулятора будет более чем достаточно.
Разработка приложений под Android: начало
Давайте создадим наш первый проект и посмотрим, из каких компонентов он состоит. Если вы первый раз открыли Студию, то вам будет предложено выбрать какой-нибудь шаблон из набора:
Выберем Empty Activity и нажмём «Далее»:
Здесь по аналогии с IntelliJ Idea вы вводите название вашего проекта, пэкедж, выбираете язык программирования и нажимаете Finish. Перед вами откроется готовый проект, где вы и будете создавать своё приложение на Android.
Создаём эмулятор
Чтобы создать эмулятор, нажмите на AVD Manager:
В появившемся окне нажмите Create Virtual Device:
Выберите подходящий смартфон, который нужно сэмулировать:
Выберите версию операционной системы, для которой мы в первую очередь пишем приложение под Android (скорее всего, вам нужно будет её предварительно скачать, нажав Download):
Нажмите Finish:
В появившемся окне выберите созданный эмулятор и запустите его:
Эмулятор запустится в отдельном окне и появится рядом с кнопкой старта приложения. Нажмите на эту кнопку:
На эмуляторе запустится ваш проект:
Из чего состоит Android-приложение
Теперь давайте разберём, из каких компонентов состоит любое, даже самое простое приложение под Андроид. В папке java находится непосредственно код вашего приложения — тут вы будете создавать экраны и наполнять их содержанием:
В папке res находятся все ресурсы приложения, в том числе макеты ваших экранов и другие элементы дизайна. Тут вы будете заниматься вёрсткой экранов:
Манифест приложения содержит информацию обо всех экранах приложения:
Три основных экрана Android Studio — вот с чего начинается любое приложение под андроид. В том числе и ваше
Как разместить приложение в Google Play
Основной способ распространения андроид-приложений — это размещение на площадке Google Play. Кроме этого, приложения можно размещать и в Amazon AppStore, и в Yandex Store, в Shop Samsung App. Но следует помнить, что основной площадкой является Google Play. Магазин приложений Google устанавливается практически на все устройства с Android (кроме ряда «китайцев» и «индийцев»), и по умолчанию на всех этих устройствах включена опция установки приложений только с этой площадки.
Основные особенности Google Play:
- огромная база пользователей;
- очень много приложений: практически все существующие Android-приложения присутствуют на этой площадке;
- удобные инструменты для публикации;
- быстрая форма проверки приложений (через пару часов приложение будет уже доступно).
Давайте посмотрим, как выложить своё приложение в Google Play. Перед загрузкой приложения необходимо зарегистрировать аккаунт разработчика в Google Play. Обычно советуют использовать для этого не свой личный аккаунт (если у вас почта на Gmail), а специально создать для этого ещё один аккаунт. Это связано с тем, что если робот Google Play решит заблокировать аккаунт разработчика, то ваш личный аккаунт это не затронет. Откроем страницу регистрации:
И следуем простым шагам:
Важный момент: регистрация разработчика стоит 25 долларов США. Плата берётся единовременно.
Далее, чтобы опубликовать приложение, надо зайти в аккаунт разработчика и нажать «Новое приложение». Вы попадёте в консоль разработчика:
При заполнении различных форм перед публикацией приложения можно выбрать тип и описание вашего приложения (категория, ограничения аудитории по возрасту и т.п.), языки и страны распространения, цену в каждой из стран. Также необходимо выбрать изображения с приложением, экраны этого приложения, создать подписи и сделать ряд других вещей.
После этого необходимо проверить, что все формы заполнены
Кстати, у Google есть и свой список рекомендаций по поводу того, как опубликовать своё приложение.
Для заполнения формы с версиями приложений надо подготовить релизную версию вашего приложения. то уже не debug-версия вашего приложения, которая запускалась у вас до этого момента, в эмуляторе или под отладкой на устройстве, через кнопку Run.
Как подготовить релиз-версию приложения
Вы создали приложение под Android, и теперь, чтобы его выложить, необходимо сделать следующие шаги:
- Подготовить подпись приложения. Приложение подписывается уникальным криптографическим ключом.
- Подготовить пиктограмму приложения.
- Подготовить скриншоты (снимки экрана) приложения. Можно отдельно подготовить скриншоты для планшетов, телевизора и прочих устройств.
- Проверить манифест приложения. Проверяются права, версия приложения. Проверяются версии SDK, под какие готовится приложение. Удаляется логирование приложения. Проверяются ресурсы приложения.
- Собрать релиз-версию проекта и подписать её уникальным ключом.
- Подготовить удалённые сервера, если приложение работает с такими серверами.
- Протестировать релиз-версии подписанного приложения.
- После релиза приложения в магазине желательно скачать и удостовериться, что всё прошло гладко. Помните, пользователи будут очень недовольны и начнут минусовать ваше приложение, если новая версия будет падать или что-то случится при выкладке приложения, и оно станет неработоспособно.
Пройдёмся по важным понятиям на этом этапе.
Уникальный ключ приложения (сертификат)
Чтобы загрузить приложение на площадку и установить на устройство, требуется, чтобы приложение было подписано вашим уникальным криптографическим ключом. По этому ключу всегда можно отличить подлинность приложения и обновлений. Этот ключ находится у разработчика, он называется app singing key. А Keystore — это файл, в котором хранится ключ. У ключа есть имя и пароль, хранится ключ в keystore, от которого тоже должен быть пароль. Так много паролей нужно, чтобы никто не смог украсть ваше приложение.
Когда вы пишете приложение на андроид, то Android SDK автоматически подписывает debug версию, и кладёт цифровой сертификат и keystore в папку $HOME/.android/debug.keystore. Google Play не принимает debug ключи. Необходимо подписывать приложение релиз-сертификатом. Этот сертификат должен быть один на протяжении всей жизни приложения.
Существует два способа хранения ключа. Исходя из того, какой вы выберете, будет определяться схема подписи приложения:
Сервис Google Play
Если вы выбрали использовать Google Play App singing, вы подписываете приложение с ключом для загрузки его в Google Play (upload key), и уже сам Google Play подписывает приложение уникальным ключом, а впоследствии несёт ответственность за его хранение. Тогда при потере upload key (ключа для загрузки приложения) вы сможете верифицироваться с Google, и сгенерировать новый. Таким образом, вы сможете в любом случае загрузить обновления вашего приложения, даже если вы поменяли загрузочный ключ.
Самостоятельное хранение
Если вы сами храните ключ, то вся ответственность в этом случае лежит на вас. При потере ключа Google Play не сможет вам помочь и обновить приложение вы уже не сможете.
Как подписать приложение в Android Studio
Подпись можно сделать вручную или настроить всё так, чтобы приложение подписывалось в процессе сборки. Вот как сгенерировать новый ключ и keystore файл.
Зайдите в Build и выберите Generate Signed APK:
Выберите тип подписи:
В окне New Key Store заполните форму:
После компиляции проекта найдите получившийся файл:
Это уже готовый файл для загрузки его в Play Google.
Кроме того, нужно учесть, что иконка вашего приложения должна соответствовать определённым требованиям. Их можно прочитать на сайте, посвящённом Material Design.
Для публикации приложения после его загрузки обязательно нажмите кнопку «Просмотреть»:
И только после этого можно опубликовать приложение:
Перед публикацией приложения Google проверяет его, его описание, прочую информацию, и только после этого приложение появляется в Маркете.
Где ещё можно опубликовать приложение
Кроме Google Play, существуют и другие площадки для размещения приложений — Amazon Appstore, Shop Samsung App, Yandex Store. Некоторые разработчики также добавляют свои приложения и в эти альтернативные магазины. Вот некоторые причины:
- В альтернативных площадках условия могут оказаться выгоднее, регистрация на некоторых площадках бесплатная. В отличие от Google Play, который, как мы помним, требует единоразовый взнос в 25 долларов. Сторонние магазины могут привлекать пользователей, устраивая акции для покупателей.
- В основной площадке Google Play очень много приложений, и очень жёсткая конкуренция. Старые и популярные приложения часто оказываются выше новых в списках поиска.
- В Google Play существует фильтр, и если приложение не соответствует стандартам и принципам Google, то такое приложение удаляется, а аккаунт пользователя может быть заблокирован. Причём, зачастую, это «заслуга» автоматических сервисов.
Как монетизировать приложение
Если вы не крупная компания, которая распространяет свой продукт бесплатно (например какой-нибудь интернет-магазин, или банк), у вас есть несколько способов заработать на своём приложении:
- продажа самого приложения;
- вставка рекламы в приложения;
- продажа платных функций в приложении;
- продажа подписки на определённый период;
- донаты — добровольные платежи от пользователей.
Вам, как разработчику, нужно определиться со способом монетизации, который лучше всего соответствует вашему приложению. Баланс между количеством пользователей и прибылью — вещь очень хрупкая. Вот несколько рекомендаций от разработчиков Google, как его достичь:
- Изучайте сведения о приложениях из категории, к которой относится ваше. Узнайте, как другие разработчики получают средства за свои приложения и материалы, и определите, следует ли предложить пользователям альтернативные способы оплаты.
- Подумайте о том, как пользователи будут работать с вашим приложением. Это поможет вам определить наиболее подходящие способы монетизации. От частоты использования приложения зависит эффективность монетизации при помощи рекламы или покупок в приложении. Вы также можете предлагать пользователям приобрести версию приложения без рекламы.
- Используйте естественные расширения. Если функциональность можно расширить (например, добавить новые уровни в игре), рекомендуем сделать базовую часть бесплатной, а дополнительные функции продавать через приложение или на основе подписки.
- Продумайте структуру затрат в своём приложении. Если пользователи регулярно расходуют на ваш контент определённую сумму, вы можете внедрить подписки. Чтобы привлекать новых пользователей, предлагайте им бесплатный пробный период.
- Учитывайте особенности аудитории. Для некоторых аудиторий не всегда подходят реклама, подписки и покупки в приложении. Например, в детских играх пользователи охотнее платят за отсутствие рекламы. В таких случаях пользователям лучше предлагать версии приложений без рекламы.
- Назначайте цены с учётом особенностей целевой страны. Формируйте цены на приложения, покупки в них, а также подписки, исходя из уровня жизни, специфики ценообразования, стоимости аналогичных приложений и иных факторов в целевой стране.
После того как вы определитесь со способом монетизации, её можно будет настроить для вашего приложения в консоли разработчика. Вот и все основные шаги, который нужно учесть для создания и публикации приложения!
Полезные материалы для чтения и самоподготовки
Head First. Программирование для Android. Хотя эта книга немного устарела, она объясняет ключевые концепции очень интересным способом. Если вам понравился стиль Head First, вам будет приятно читать эту книгу.
Филлипс Б., Стюарт К., Марсикано К.Android. Программирование для профессионалов. 3-е издание. Действительно неплохая книга, которую можно смело рекомендовать начинающим разработчикам. В ней они смогут найти множество приёмов разработки приложений для Android, самостоятельный путь к которым довольно долог. Книга начинается с «Hello, world» и через теорию, упражнения и написание небольших приложений, обучает основному стеку технологий для создания Android-приложения. Требует среднего знания Java.
Исакова С., Жемеров Д. Kotlin в действии. Книга от создателей языка. Очень хорошо написана, советую.
Нуркевич Т., Кристенсен Б. Реактивное программирование с применением RxJava. Разработка асинхронных событийно-ориентированных приложений. Книга, которая на примере RxJava поможет понять вам, что такое реактивное программирование. Требует неплохого знания Java (по крайней мере, вы должны понимать, что такое обобщённые типы и лямбда-выражения) и предполагает последовательное чтение, так как материал подаётся шаг за шагом. Внимательный читатель получит полное представление об RxJava.
Напоследок — ещё пара статей на английском для тех, кто хочет разработать приложение на Android: «10 вещей, которые узнают новые Android-разработчики» и «12 методов, который должен знать каждый начинающий Android-разработчик».
Если вам было бы интересно почитать о каких-либо конкретных аспектах разработки под андроид — пишите в комментариях.
В этой статье я дал лишь базовые, минимально необходимые сведения, чтобы начать разработку андроид приложений с нуля. Чтобы стать полноценным, квалифицированным Android-разработчиком, эффективней всего будет пройти полноценную учебную программу, например, на факультете Android-разработки GeekUniversity.
Другие полезные статьи для начинающих Android-разработчиков:
- 9 практических советов для начинающего Android-разработчика
- Типичные ошибки начинающего Android-разработчика
Последнее обновление: 13.01.2023
-
Глава 1. Начало работы с Android
-
Введение. Установка Android Studio и Android SDK
-
Первый проект в Android Studio
-
Создание графического интерфейса
-
-
Глава 2. Основы создания интерфейса
-
Создание интерфейса в коде java
-
Определение интерфейса в файле XML. Файлы layout
-
Определение размеров
-
Ширина и высота элементов
-
Внутренние и внешние отступы
-
ConstraintLayout
-
Размеры элементов в ConstraintLayout
-
Цепочки элементов в ConstraintLayout
-
Программное создание ConstraintLayout и позиционионирование
-
LinearLayout
-
RelativeLayout
-
TableLayout
-
FrameLayout
-
GridLayout
-
ScrollView
-
Gravity и позиционирование внутри элемента
-
Вложенные layout
-
-
Глава 3. Основные элементы управления
-
TextView
-
EditText
-
Button
-
Приложение Калькулятор
-
Всплывающие окна. Toast
-
Snackbar
-
Checkbox
-
ToggleButton
-
RadioButton
-
DatePicker
-
TimePicker
-
Ползунок SeekBar
-
-
Глава 4. Ресурсы
-
Работа с ресурсами
-
Ресурсы строк
-
Ресурсы dimension
-
Ресурсы Color и установка цвета
-
-
Глава 5. Activity
-
Activity и жизненный цикл приложения
-
Файл манифеста AndroidManifest.xml
-
Введение в Intent. Запуск Activity
-
Передача данных между Activity. Сериализация
-
Parcelable
-
Получение результата из Activity
-
Взаимодействие между Activity
-
-
Глава 6. Работа с изображениями
-
Ресурсы изображений
-
ImageView
-
Изображения из папки assets
-
-
Глава 7. Адаптеры и списки
-
ListView и ArrayAdapter
-
Ресурс string-array и ListView
-
Выбор элемента в ListView
-
Добавление и удаление в ArrayAdapter и ListView
-
Расширение списков и создание адаптера
-
Оптимизация адаптера и View Holder
-
Сложный список с кнопками
-
Выпадающий список Spinner
-
Виджет автодополнения AutoCompleteTextView
-
GridView
-
RecyclerView
-
Обработка выбора элемента в RecyclerView
-
-
Глава 8. Стили и темы
-
Стили
-
Темы
-
-
Глава 9. Меню
-
Создание меню
-
Группы в меню и подменю
-
-
Глава 10. Фрагменты
-
Введение во фрагменты
-
Жизненный цикл фрагментов
-
Взаимодействие между фрагментами
-
Фрагменты в альбомном и портретном режиме
-
-
Глава 11. Многопоточность
-
Создание потоков и визуальный интерфейс
-
Потоки, фрагменты и ViewModel
-
Класс AsyncTask
-
AsyncTask и фрагменты
-
-
Глава 12. Работа с сетью. WebView
-
WebView
-
Загрузка данных и класс HttpURLConnection
-
-
Глава 13. Работа с мультимедиа
-
Работа с видео
-
Воспроизведение аудио
-
-
Глава 14. Настройки и состояние приложения
-
Сохранение состояния приложения
-
Создание и получение настроек SharedPreferences
-
PreferenceFragmentCompat
-
-
Глава 15. Работа с файловой системой
-
Чтение и сохранение файлов
-
Размещение файлов во внешнем хранилище
-
-
Глава 16. Работа с базами данных SQLite
-
Подключение к базе данных SQLite
-
SQLiteOpenHelper и SimpleCursorAdapter, получение данных из SQLite
-
Добавление, удаление и обновление данных в SQLite
-
Использование существующей БД SQLite
-
Динамический поиск по базе данных SQLite
-
Модель, репозиторий и работа с базой данных
-
-
Глава 17. Перелистывание страниц и ViewPager2
-
ViewPager2 и разделение приложения на страницы
-
Заголовки страниц и TabLayout
-
-
Глава 18. Сервисы
-
Введение в сервисы Android
-
-
Глава 19. Диалоговые окна
-
DatePickerDialog и TimePickerDialog
-
DialogFragment и создание своих диалоговых окон
-
Передача данных в диалоговое окно
-
Взаимодействие диалогового окна с Activity
-
-
Глава 20. Анимация
-
Cell-анимация
-
Tween-анимация
-
-
Глава 21. Провайдеры контента
-
Работа с контактами
-
Добавление контактов
-
Создание провайдера контента. Часть 1
-
Создание провайдера контента. Часть 2
-
Создание провайдера контента. Часть 3
-
Асинхронная загрузка данных
-
-
Глава 22. JSON
-
Работа с json
-
-
Глава 23. Работа с XML
-
Ресурсы XML и их парсинг
-
Получение xml по сети
-
- Глава 1. Начало работы с Android
- Введение. Установка Android Studio и Android SDK
- Первый проект в Android Studio
- Создание графического интерфейса
- Глава 2. Основы создания интерфейса
- Создание интерфейса в коде java
- Определение интерфейса в файле XML. Файлы layout
- Определение размеров
- Ширина и высота элементов
- Внутренние и внешние отступы
- ConstraintLayout
- Размеры элементов в ConstraintLayout
- Цепочки элементов в ConstraintLayout
- Программное создание ConstraintLayout и позиционионирование
- LinearLayout
- RelativeLayout
- TableLayout
- FrameLayout
- GridLayout
- ScrollView
- Вложенные layout
- Gravity и позиционирование внутри элемента
- Глава 3. Основные элементы управления
- TextView
- EditText
- Button
- Приложение Калькулятор
- Всплывающие окна. Toast
- Snackbar
- Checkbox
- ToggleButton
- RadioButton
- DatePicker
- TimePicker
- Ползунок SeekBar
- Глава 4. Ресурсы
- Работа с ресурсами
- Ресурсы строк
- Ресурсы dimension
- Ресурсы Color и установка цвета
- Глава 5. Activity
- Activity и жизненный цикл приложения
- Файл манифеста AndroidManifest.xml
- Введение в Intent. Запуск Activity
- Передача данных между Activity. Сериализация
- Parcelable
- Получение результата из Activity
- Взаимодействие между Activity
- Глава 6. Работа с изображениями
- Ресурсы изображений
- ImageView
- Изображения из папки assets
- Глава 7. Адаптеры и списки
- ListView и ArrayAdapter
- Ресурс string-array и ListView
- Выбор элемента в ListView
- Добавление и удаление в ArrayAdapter и ListView
- Расширение списков и создание адаптера
- Оптимизация адаптера и View Holder
- Сложный список с кнопками
- Выпадающий список Spinner
- Виджет автодополнения AutoCompleteTextView
- GridView
- RecyclerView
- Обработка выбора элемента в RecyclerView
- Глава 8. Стили и темы
- Стили
- Темы
- Глава 9. Меню
- Создание меню
- Группы в меню и подменю
- Глава 10. Фрагменты
- Введение во фрагменты
- Жизненный цикл фрагментов
- Взаимодействие между фрагментами
- Фрагменты в альбомном и портретном режиме
- Глава 11. Многопоточность
- Создание потоков и визуальный интерфейс
- Потоки, фрагменты и ViewModel
- Класс AsyncTask
- AsyncTask и фрагменты
- Глава 12. Работа с сетью. WebView
- WebView
- Загрузка данных и класс HttpURLConnection
- Глава 13. Работа с мультимедиа
- Работа с видео
- Воспроизведение аудио
- Глава 14. Настройки и состояние приложения
- Сохранение состояния приложения
- Создание и получение настроек SharedPreferences
- PreferenceFragmentCompat
- Глава 15. Работа с файловой системой
- Чтение и сохранение файлов
- Размещение файлов во внешнем хранилище
- Глава 16. Работа с базами данных SQLite
- Подключение к базе данных SQLite
- SQLiteOpenHelper и SimpleCursorAdapter, получение данных из SQLite
- Добавление, удаление и обновление данных в SQLite
- Использование существующей БД SQLite
- Динамический поиск по базе данных SQLite
- Модель, репозиторий и работа с базой данных
- Глава 17. Перелистывание страниц и ViewPager2
- ViewPager2 и разделение приложения на страницы
- Заголовки страниц и TabLayout
- Глава 18. Сервисы
- Введение в сервисы Android
- Глава 19. Диалоговые окна
- DatePickerDialog и TimePickerDialog
- DialogFragment и создание своих диалоговых окон
- Передача данных в диалоговое окно
- Взаимодействие диалогового окна с Activity
- Глава 20. Анимация
- Cell-анимация
- Tween-анимация
- Глава 21. Провайдеры контента
- Работа с контактами
- Добавление контактов
- Создание провайдера контента. Часть 1
- Создание провайдера контента. Часть 2
- Создание провайдера контента. Часть 3
- Асинхронная загрузка данных
- Глава 22. JSON
- Работа с json
- Глава 23. Работа с XML
- Ресурсы XML и их парсинг
- Получение xml по сети
В этой статье собраны полезные ресурсы, которые могут пригодиться всем Android-разработчикам, независимо от уровня знаний.
Также советуем взглянуть на наш вводный материал — рассказываем, как начать разрабатывать под Android.
Для новичков
Ресурсы, которые могут оказаться полезными для любого Java-программиста, начинающего разрабатывать под Android.
- Android-разработка для начинающих
Простой курс для новичков, разработанный Google, поможет быстро изучить основы и фундаментальные концепции Android-разработки.
- Знакомство с Android-разработкой
Простое, легкое и полное руководство для начинающих разработчиков, желающих написать своё первое приложение на Android.
- Android Development CodeLabs
Это один из лучших ресурсов, о котором должны узнать все начинающие Android-разработчики.
- Глоссарий Google Android
Если вы вступаете в огромный мир разработки под Android, то очевидно, что вы столкнётесь со множеством новых понятий и терминов. Не беспокойтесь, Google разработал интерактивный и простой в использовании глоссарий с примерами кода, который облегчит вашу жизнь.
- Официальное руководство по Android-разработке
Официальное руководство для разработчиков под Android от Google. Оно охватывает основные концепции с большим количеством примеров кода.
- Основы XML
Не знакомы с XML? Самое время изучить, потому что он используется для дизайна макетов в Android. Это не займет много времени.
- Руководство для начинающих по HTTP и REST
Если вы собираетесь использовать интернет-сервисы через API для вашего Android-приложения, тогда стоит познакомиться с HTTP и REST.
Для опытных разработчиков
Если вы занимаетесь разработкой под Android не первый год, то вот несколько хороших ресурсов, которые помогут улучшить ваши навыки программирования на Android.
- Разработка приложений для Android
Хороший курс от Google, который идеально подходит для повышения квалификации.
- Распространённые шаблоны проектирования для Android
Если вы ищите элегантные способы решения критических проблем в разработке программного обеспечения, то обратите внимание на подборку самых распространенных шаблонов проектирования. Они смогут вам в этом помочь.
- Как освоить Android: что разработчики могут извлечь из 21 приложения
Существует большое количество open source Android-приложений. Не беспокойтесь, если вы не знаете, какие из них могут помочь улучшить навыки разработки. Эта статья расскажет вам об этом.
- MVC против MVP против MVVM на Android
Чтобы усовершенствовать процессы разработки, тестирования, отладки и обслуживания вашего Android-приложения, ознакомьтесь с лучшими подходами к архитектуре.
- Современный Android: Activity и Fragment
Эта статья расскажет вам о современных способах создания приложений.
- Учебник RxAndroid
Погрузитесь в мир реактивного программирования под Android с помощью этого простого учебника.
- Погружение в конструкторы Android View
Получите подробное представление о конструкторах Android View, о том, как они работают и как их эффективно использовать при разработке приложений.
- Изучение Android Core: Looper, Handler и HandlerThread
Если вы хотите понять, как устроен асинхронный мир фреймворков Android, и использовать его для создания высококачественных приложений — прочтите эту статью.
- Views и ViewGroups
Подробный учебник, рассказывающий о том, как работают Views и ViewGroups в Android и как вы можете совершенствовать компоненты пользовательского интерфейса.
- Режимы запуска Android Activity
Не все разработчики правильно понимают, как работают различные режимы запуска в Android и как использовать их для создания идеальной навигации в своём приложении. Это статья расставит всё по своим местам.
- Как опубликовать собственную библиотеку
Вы уже давно используете библиотеки в своих приложениях под Android и хотите внести свой вклад в сообщество? Вот полное и подробное руководство по публикации собственной библиотеки.
- Релиз приложения в Google Play Store
Узнайте, как сделать успешный запуск своего приложения в Play Market.
- Архитектура Android
Этот GitHub-репозиторий станет жемчужиной для всех тех, кто хочет узнать о различных инструментах и шаблонах для разработки приложений для Android.
- Android Instant Apps
Если вы не знаете, что выбрать: нативные или веб-приложения — эта статья для вас.
- Лучшие инструменты для разработчиков Android-приложений
Если вы разрабатываете приложения для Android уже довольно давно и хотите улучшить свою производительность и рабочий процесс разработки, то эти инструменты помогут вам.
- Профессиональное использование Android Studio
Вы используете Android Studio каждый день для разработки своих приложений, но, возможно, и не догадываетесь, что эта IDE может быть еще мощнее.
Лучшие практики Android-разработки
Следование лучшим практикам поможет повысить качество приложения и облегчить командную разработку.
- Рекомендации по разработке под Android
Легкая и полезная статья, объясняющая некоторые аспекты лучших практик разработки под Android.
- Знакомство с strings.xml
В этой статье мы расскажем о лучших методах использования файла ресурсов strings.xml
.
- Гайдлайны Android
Один из лучших и наиболее полных ресурсов о лучших практиках и гайдлайнах по различным аспектам разработки Android, охватывающий почти все, что вам нужно знать.
- Android for Work
Эта статья поможет узнать, как наилучшим образом использовать Android for Work в ваших проектах.
- Android-разработка: некоторые из лучших практик
Чрезвычайно полезный список лучших практик Android-разработки.
- Шпаргалка по Java для Android
Книга «Effective Java» считается одной из лучших для написания высококачественного поддерживаемого Java-кода. Эта статья посвящена тому, как вы можете наилучшим образом использовать описанные в ней методы и принципы в разработке под Android.
- Топ-7 советов для RxJava под Android
Если вы выбрали реактивный способ создания приложений под Android, то эти советы помогут вам избежать распространенные ошибки и использовать RxJava максимально эффективно.
- Прячем данные в Android-приложениях
Углубленная статья о плюсах и минусах некоторых распространенных приемов хранения секретов (паролей, ключей API и другой информации) в приложениях Android.
Проектирование красивых приложений
Приложение считается неполным без хорошего пользовательского интерфейса. Чистый и красивый интерфейс — вот что делает ваше приложение привлекательным и выделяет его среди остальных.
- Material Design: глубокий взгляд
Хорошо написанная статья, дающая глубокое понимание Material Design для Android.
- Анимируйте все. Переходы в Android
Узнайте, как создать прекрасные и выразительные анимации в своем Android-приложении, чтобы порадовать своих пользователей и сделать его выделяющимся среди остальных приложений.
- Построение интерфейсов с помощью ConstraintLayout
Свежий ConstraintLayout полностью меняет приложение, когда дело доходит до разработки макетов для ваших приложений для Android. Эта статья поможет понять основы ConstraintLayout.
- Восемь советов для вашего приложения с Material Design
Создавайте качественные приложения, не допуская распространенных ошибок, в то же время применяя Material Design.
- Material Design is Design Science
Полезная статья, которая рассказывает, как наилучшим образом использовать Material Design при разработке своего приложения.
Бонус
Интересные ресурсы, которые нельзя пропустить.
- Следите за разработчиками Android в Twitter
Если вы хотите быть в курсе последних событий разработки в мире Android, следите за передовыми разработчиками Android в Twitter.
- Начните работу с Android Things Today!
Хотите погрузиться в мир IoT с помощью инструментов Android и его инфраструктуры? Вот хороший ресурс, чтобы начать это путешествие.
- Знакомство с Android Wear
Если вы заинтересованы в разработке приложений для носимых устройств на Android, то вот исчерпывающий урок, который поможет вам начать разработку.
- Ресурсы и атрибуты Android
Интересная статья о деталях повседневной работы с ресурсами и атрибутами в Android, которые могут быть вам неизвестны.
- Введение в Android TV
Хотите разрабатывать приложения для телевизоров с большим экраном? Вот отличная статья, которая послужит хорошим введением в эту среду разработки
Полезные сайты
Хотите быть в курсе последних новостей в мире Android? Вот некоторые из лучших ресурсов для вас.
- Android Weekly
Вы никогда не пропустите новости о развитии, статьи, видеоролики и другие события в мире Android.
- Подкасты
Если вы любите слушать подкасты, то этот сайт для вас. Здесь можно обсуждать инструменты, шаблоны и лучшие практики. Вы наверняка не захотите пропустить двухнедельные эпизоды.
- CodePath Android
Один из лучших и самых современных ресурсов с большим количеством пользователей для Android-разработчиков, где можно найти руководства и учебные пособия обо всех аспектах разработки. А главным плюсом является то, что он полностью открыт для вас, чтобы каждый мог внести свой вклад в развитие сообщества.
- Скринкасты
Получайте высококачественные еженедельные скринкасты для Android с широким спектром тем для разработки.
- Стили для Android
Ресурс, где вы найдете всю информацию, необходимую для проектирования пользовательского интерфейса и UX вашего приложения.
- Официальный блог разработчиков Android
Это официальный блог, через который Google напрямую взаимодействует с разработчиками Android. Все последние новости и анонсы, связанные с разработкой, появляются здесь раньше, чем где-либо еще.
Мы надеемся, что эти ресурсы помогут вам узнать больше о разработке Android и создать более качественные приложения.
Перевод статьи «50+ Ultimate Resources to Master Android Development»