Google недавно выпустила платформу Android для разработки мобильных приложений. Язык, используемый для разработки программ для Android — это Java, но это не Java Micro Edition. Ни один разработчик беспроводного приложения не может игнорировать Android. Google является самым известным брендом среди пользователей Интернета, а Android — от Google.
Я представляю это практическое руководство, как продолжение моей серии j2me. Предполагается адекватное знание core-java, особенно обработки событий, Swing и внутренних классов. Хотя Android не использует Swing, он использует аналогичные идеи.
Мы можем разрабатывать уроки и приложения для Android в среде Eclipse. Google предоставил Eclipse-плагин для Android. Это популярный метод. Google не оказывает прямой поддержки Netbeans. Но некоторые пользователи Netbeans разработали метод запуска Android в Netbeans. Он доступен по адресу http://undroid.nolimit.cz/ . Вы можете найти больше скриншотов и руководства в http://eppleton.com/blog/ .
Мы можем разрабатывать уроки по Android без использования Eclipse или Netbeans. Необходимые инструменты командной строки были предоставлены Google. Я обнаружил, что использовать эти инструменты командной строки проще, чем метод Eclipse или Netbeans. Итак, я основываю все следующие уроки на этих инструментах. Я думаю, что большинство читателей согласятся с моей точкой зрения после того, как они попробуют этот метод, а также метод Eclipse. Сайт Android по адресу code.google.com/android уже дал пошаговые инструкции об Android в Eclipse. Вы также можете получить более подробную информацию о снимках экрана с замечательного веб-сайта www.tanguay.info/web/welcome.php, озаглавленного «Сайт веб-разработчика Эдварда». Он дает отличное руководство с большим количеством снимков экрана
На сайте Android нет ясности относительно метода командной строки. Поэтому я думаю, что добавляю что-то полезное, записывая метод командной строки вместо простого повторения материала на сайте Android.
Давайте начнем с самого начала. Первым шагом является загрузка Android SDK (версия m5-rc14, 12 февраля 2008 г.). Android был выпущен в ноябре 2007 года. Он был пересмотрен в версии от февраля 2008 года. Некоторые из более ранних примеров могут не работать в более новой версии.
Я работаю в Windows-2000 и поэтому я скачал версию для Windows. Поддерживаемая платформа в Windows — Windows-XP или Vista (другие упомянутые платформы — Mac OS 10 и Ubuntu Linux). Тем не менее, это хорошо работает в моем Win-2000. Желательно иметь как минимум 512 МБ памяти. Android SDK представляет собой ZIP-файл. Я разархивировал его в C: \ unzipped \ android и позже скопировал эту папку в D: \ android . Если вы хотите, вы можете просто скопировать его на другой диск, например G: \ android . В следующих уроках используется D: \ android .
Если вы хотите разрабатывать с использованием Eclipse, вы должны установить Eclipse3.2 или Eclipse3.3 (Europa). Я тестировал с Eclipse3.2. Нет проблем. Работает. Но для Eclipse требуется плагин ADT (т. Е.) Android Development Tools, если вы используете Eclipse. Вы можете получить этот плагин с http://code.google.com/android/adt_download . Вы должны быть осторожны с номером версии ADT. Это ADT-0.3.3.
Поскольку мое настоящее внимание сосредоточено на методе командной строки, позвольте мне начать сразу и дать простую демонстрацию. Данная процедура является общей для всех наших экспериментов, поэтому я не буду повторять ее в каждой демонстрации. Поэтому, пожалуйста, запишите это внимательно.
Демо 1 — TextBox
В моей первой демонстрации у меня будет обычная кнопка и текстовое поле (в Android называется EditField). Когда я нажимаю кнопку, я хочу сообщение «УСПЕХ!» отображаться в текстовом поле. В качестве упражнения я использую две кнопки и два текстовых поля.
Первый шаг — запустить эмулятор
cd to d: \ android \ tools
d: \ Android \ инструменты> эмулятор
Это займет много времени, чтобы начать. Не спешите. Подождите, пока все не начнется. И не закрывайте это окно небрежно по ошибке. В этом случае вам придется запустить его снова и долго ждать снова. Наконец, мы получаем экран эмулятора
Второй шаг — дать следующую команду из другого командного окна.
d: \ Android \ инструменты>
ActivityCreator — без демонстрации mypack.mydemos.demo
Это означает, что мой проект ‘demo’, а мой пакет ‘mypack.mydemos’. Ряд папок создаются автоматически этой командой:
- инструменты \ демо \ SRC
- Инструменты \ демо \ Bin
- Инструменты \ демонстрационная \ Рез.
Нам нужно внимательно отметить папки src и res . Мы поместим исходный файл java в папку src и файл main.xml в res \ layout, перезаписывая все файлы, которые генерируются автоматически. На данный момент мы можем думать о папке res \ layout как о той, которая определяет дизайн графического интерфейса. Как и в asp.net, flex и т. Д., Детали графического интерфейса указаны в xml-файле. Но как нам написать файл XML? рукой? Не слишком сложно. Но …. к счастью, на http://www.droiddraw.org/ есть дизайнер графического интерфейса с открытым исходным кодом DroidDraw . Это хороший инструмент, и если он вам нравится, вы можете отправить Ваша признательность [email protected], Он также дал простое руководство о том, как использовать этот графический инструмент.
Я скачал это программное обеспечение с сайта выше. Я расстегнул молнию. (любая папка). Когда мы нажимаем на значок, мы получаем экран, как показано ниже.
[img_assist | nid = 3267 | title = Droid Draw | desc = | link = none | align = undefined | width = 198 | height = 148]
[img_assist | nid = 3268 | title = Область холста для рисования | desc = | link = none | align = undefined | width = 189 | height = 266]
[img_assist | nid = 3269 | title = Панель инструментов и пустая область | desc = | link = none | align = undefined | width = 204 | height = 222]
Таким образом мы получаем окно, показывающее холст для рисования на левой стороне и панели инструментов и пустую область в правой части. (в целях печати я разделил их на два экрана), как указано выше.
Из набора инструментов мы узнаем, что у нас есть элементы управления, такие как кнопка, флажок, радио, спиннер, edittext (текстовое поле) и textview (метка) и т. Д. Есть также комбо для выбора макета на экране холста. Я выбираю «абсолютное расположение». Я просто перетаскиваю кнопку и окно редактирования на холсте.
Вы заметите несколько вкладок в наборе инструментов. Выберите вкладку «Свойства». После нажатия кнопки на холсте присвойте свойству id кнопки @ id / button1. Точно так же для editview как @ id / text1. Кроме того, button2 и text2 После этого просто нажмите кнопку «Создать» в нижней части пустого окна. Мы получаем автоматически следующий XML-файл (main.xml).
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10px"> <EditText android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/text1" android:layout_alignParentRight="true" android:layout_marginLeft="10px" android:text="click" /> <EditText android:id="@+id/text2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/text2" android:layout_alignParentRight="true" android:layout_marginLeft="10px" android:text="click" /> </RelativeLayout>
Теперь мы можем создать наш исходный файл Java. Код ссылается на main.xml для идентификатора элементов управления.
(d: \ android \ mydemos \ ex1 \ demo.java). Это наша рабочая папка.
package mypack.mydemos; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.*; public class demo extends Activity { Button button1,button2; EditText text1,text2; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); text1= (EditText) findViewById(R.id.text1); button1 = (Button) findViewById(R.id.button1); text2= (EditText) findViewById(R.id.text2); button2 = (Button) findViewById(R.id.button2); button1.setOnClickListener(new clicker()); button2.setOnClickListener(new clicker()); } //----------------------------------- class clicker implements Button.OnClickListener { public void onClick(View v) { if(v==button1){text1.setText("welcome"); } if(v==button2){text2.setText("hello"); } } } }
Документация Android и примеры программ используют анонимный внутренний класс. Я думаю, что это совершенно ненужно и очень утомительно для подражания. Вместо этого я использовал пользовательский «кликер». Это делает код чище и более читабельным. Это как любая программа Swing. В терминологии Android активность — это как колеблющийся кадр (экран). Точно так же как ActionListener, здесь мы также имеем OnClickListener. Я не буду вдаваться в подробные теории сейчас. Я просто хочу показать, как сначала разработать и запустить программу. Теория последует позже.
Мы должны скопировать этот файл (demo.java) в D: \ android \ tools \ demo \ src \ mypack \ mydemos
Перейдите в d: \ android \ tools \ demo
Задайте путь = c: \ winNT \ system32; c: \ jdk1.5 \ bin; e: \ ant1.6 \ bin
(обратите внимание, что это не будет работать с jdk1.4.2. Требуется jdk1.5).
Во-вторых, как насчет ссылки на Ant? Ant — это известный инструмент для сборки от Apache Software Foundation. Для Android требуется последняя версия Ant для Windows (т.е.) Ant1.6. Должен ли я знать, как написать файл Ant’s build.xml? NO. Он автоматически создается командой.
Итак, я скачал ant1.6 с веб-сайта Apache. Это компактный почтовый файл. Я распаковал его и поместил как E: \ ant1.6). Теперь используйте команду ‘муравей’
d: \ Android \ инструменты \ демонстрационная> муравей
Мы получим серию сообщений. Если мы выполнили предыдущие шаги правильно, мы получим сообщение «BUILD SUCCESSFUL». В противном случае мы получим сообщения об ошибках с номерами строк, где произошли ошибки. Мы можем исправить их и построить заново.
Процесс сборки создал бы файл zip с именем ‘demo.apk’ в папке demo \ bin. Осталось только запустить программу в эмуляторе. Как вы помните, мы уже запустили эмулятор и он работает.
Теперь скопируйте d: \ android \ tools \ demo \ bin \ demo.apk в d: \ android \ tools . После копирования введите команду как:
… \ tools> adb install demo.apk
После того, как дал эту команду. перейдите в окно эмулятора. Вы найдете чекпаттерн, отображаемый на некоторое время. Затем на экране появляется дополнительная кнопка с надписью «demo». Наша программа была установлена. Мы можем проверить это, нажав на эту кнопку «демо».
Вы можете выполнить программу «Демо» сейчас. Появятся два текстовых поля и две кнопки. Нажмите на кнопку1. «Добро пожаловать» появится в тексте1. Нажмите на кнопку 2. «Как дела?» появится в text2. Результат показан ниже.
[Img_assist | NID = 3270 | название = | убывание = | ссылка = нет | ALIGN = не определено | ширина = 183 | высота = 313]
Это завершает нашу первую демонстрацию в Android.
Мы будем следовать точно такой же процедуре для всех наших демонстраций. В дальнейшем мы увидим только xml-файл и java-файлы для различных демонстраций. После еще нескольких демонстраций мне будет достаточно, если я дам импорт, объявление, определение и обработчик событий.
Android SDK поставляется с несколькими примерами приложений. В папке APIDemos у нас есть папка с именем ‘ Views ‘. Я читаю это как «GUI». Он имеет дело с макетами, элементами управления, анимацией и т. Д. Существует много демонстраций. Сначала это может сбить с толку. Хотя мы можем захотеть изменить и упростить код позже, полезно попробовать каждую из примеров программ, нажав кнопку «apidemos» на экране эмулятора и ознакомившись с ней. Я перечислю и дам краткий комментарий по этому вопросу позже.
Демо 2 — Spinner
Как обычно, стандартными виджетами являются метка (textview), текстовое поле (edittext), комбо (spinner), чек, радио, тикер и т. Д. Теперь я дам демо для spinner. Я предоставил счетчик, кнопку и текст для отображения выбранного элемента в тексте редактирования.
Мы можем разработать наш макет, как и раньше, используя DroidDraw и получить следующий main.xml.
(получено с помощью DroidDraw).
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/ apk/res/android"> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="70px" android:layout_y="42px"> </Spinner> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="confirm" android:layout_x="70px" android:layout_y="112px"> </Button> <EditText android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="EditText" android:textSize="18sp" android:layout_x="70px" android:layout_y="182px"> </EditText> </AbsoluteLayout>
Соответствующий исходный файл Java приведен ниже.
package mypack.mydemos; import android.app.Activity;
import android.os.Bundle;
import android.widget.*; import android.view.View; public class demo extends Activity
{
Spinner spinner1;
Button button1;
EditText text1; @Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
spinner1 = (Spinner) findViewById (R.id.spinner1); button1 = (Button);
findViewById (R.id.button1);
text1 = (EditText) findViewById (R.id.text1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_ item); spinner1.setAdapter(adapter);
button1.setOnClickListener( new clicker());
} private static final String[] array = { "sunday", "monday", "tuesday", "wednesday",
"thursday", "friday", "saturday" }; class clicker implements Button.OnClickListener {
public void onClick(View v)
{ String s = (String) spinner1.getSelectedItem();
text1.setText(s);
} } }
Как и прежде, разместите файл demo.java в каталоге d: \ android \ tools \ demo \ src \ mypack \ mydemos . Поместите main.xml в d: \ android \ tools \ demo \ res \ layout
Сборка с использованием муравья. Разверните demo.apk в эмуляторе точно так же, как в предыдущем демо. Оригинальная демоверсия перезаписывается. Но наша рабочая папка, в которой у нас есть файлы xml и java, — это d: \ android \ mydemos \ ex1.Они не повреждены. Так что нет проблем .. Текущие файлы java и xml находятся в d: \ android \ mydemos \ ex2.
Когда мы нажимаем на счетчик, мы получаем элементы, отображаемые в раскрывающемся списке. Мы выбираем товар и подтверждаем. Выбранный элемент появляется в text1. Я не собираюсь объяснять код. Это достаточно просто, если мы помним наше ядро Java.
Демо 3 — Тикер
Третья демонстрация — это «тикер», имеющий текстовое поле для ввода текста тикера, тикер (таймер), две метки (editview), одну для статуса, а другую для отображения скользящего сообщения.
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <EditText android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Ticker android:id="@+id/ticker1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dip" /> <TextView android:id="@+id/label1" android:layout_width="wrap_content" android:layout_height="fill_parent" /> </Ticker> <TextView android:id="@+id/label2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dip" /> </LinearLayout>
LinearLayout с вертикальной ориентацией похож на FlowLayout, но в вертикальном направлении.
package mypack.mydemos; import android.app.Activity; import android.os.Handler; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.*; import java.util.Map; public class demo extends Activity implements Ticker.TickerListener { Ticker ticker1; TextView label1, label2; EditText text1; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); ticker1 = (Ticker) findViewById(R.id.ticker1); label1 = (TextView) findViewById(R.id.label1); label2 = (TextView) findViewById(R.id.label2); text1 = (EditText) findViewById(R.id.text1); ticker1.setTickerListener(this); text1.setOnClickListener(new clicker()); } class clicker implements EditText.OnClickListener { public void onClick(View v) { label1.setText(text1.getText()); ticker1.startTicker(); label2.setText("Ticking..."); } } public void onTickerFinished(Ticker view) { label2.setText("Done!"); } }
Демо 4 — Флажок
Скопируйте это в tools \ demo \ res \ layout \
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/ apk/res/android"> <CheckBox android:id="@+id/check1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="java" android:layout_x="50px" android:layout_y="22px"> </CheckBox> <CheckBox android:id="@+id/check2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="C#" android:layout_x="50px" android:layout_y="72px"> </CheckBox> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Confirm" android:layout_x="60px" android:layout_y="122px"> </Button> <EditText android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="EditText" android:textSize="18sp" android:layout_x="60px" android:layout_y="202px"> </EditText> </AbsoluteLayout>
Для копирования в инструменты \ demo \ mypack \ mydemos
package mypack.mydemos; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.*; public class demo extends Activity { Button button1; CheckBox check1, check2; EditText text1; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); text1 = (EditText) this.findViewById(R.id.text1); check1 = (CheckBox) findViewById(R.id.check1); check2 = (CheckBox) findViewById(R.id.check2); button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new clicker()); } class clicker implements Button.OnClickListener { public void onClick(View v) { String r = ""; if (check1.isChecked()) { r = r + "java" + "\n"; } if (check2.isChecked()) { r = r + "c#"; } text1.setText(r); } } }
Это просто обычный Java-код и требует очень мало объяснений. Единственное отличие состоит в том, как определяются элементы управления (через файл res \ layout \ xml).
Демо 5 — RadioButtons
Следующим стандартным элементом управления является RadioButton внутри RadioGroup.
Поместить в инструменты \ demo \ res \ layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <RadioGroup android:id="@+id/group1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/radio1" android:text="madras" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/radio2" android:text="bombay" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RadioGroup> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <TextView android:id="@+id/label1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="where" /> <EditText android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="18sp" android:layout_x="70px" android:layout_y="182px" /> </LinearLayout>
Следующий код Java должен быть помещен в tools \ demo \ src \ mypack \ mydemo
package mypack.mydemos; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.*; public class demo extends Activity { TextView label1; RadioGroup group1; RadioButton radio1, radio2; Button button1; EditText text1; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); group1 = (RadioGroup) findViewById(R.id.group1); radio1 = (RadioButton) findViewById(R.id.radio1); radio2 = (RadioButton) findViewById(R.id.radio2); button1 = (Button) findViewById(R.id.button1); text1 = (EditText) findViewById(R.id.text1); text1.setText("radio"); label1 = (TextView) findViewById(R.id.label1); label1.setText("where?"); button1.setOnClickListener(new clicker()); } // ...inner class ---follows -> class clicker implements Button.OnClickListener { public void onClick(View v) { if (v == button1) { if (radio1.isChecked()) { text1.setText("madras"); } if (radio2.isChecked()) { text1.setText("bombay"); } } } } // ----inner class ends here --- }
Вы бы заметили, что я называю все мои java-файлы как «demo.java». Может быть, сначала сбивает с толку, но я делаю это с целью. Прежде всего, экран эмулятора загромождается слишком большим количеством кнопок, если мы продолжим добавлять мои примеры. Что я сделал, это:
Я создал папку как d: \ android \ mydemos.
В папке mydemos я создал такие подпапки, как (ex1, ex2 и т. Д.). Но внутри каждой папки у меня есть demo.java & main.xml.
Таким образом, мы можем легко протестировать каждую из наших демонстраций по единой процедуре. В моей системе у меня была проблема нехватки памяти. И, благодаря вышеописанному шагу, я смог протестировать все свои программы под тем же именем.
Вот важный совет, однако, если вы решили по-разному называть исходные файлы и файлы XML и хотите уменьшить беспорядок.
Демо 6 — Галерея
Интересно, что в наборе инструментов есть готовый элемент управления, называемый «галерея». Давайте теперь научимся использовать этот элемент управления, хотя синтаксис немного сложен. На этот раз нам понадобятся demo.java, main.xml, а также другая папка в tools \ demo \ res \ drawable . Эта специальная папка должна быть создана нами. Вы можете прочитать «img» вместо «drawable». Итак, мы помещаем все файлы изображений для отображения в галерее, в эту папку.
Давайте, как обычно, создадим XML-файл с помощью DroidDraw следующим образом.
<?xml version="1.0" encoding="utf-8"?> <Gallery xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gallery" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:gravity="center_vertical" android:spacing="5" />
Следующий класс должен быть помещен в tools \ demo \ mypack \ mydemos
package mypack.mydemos; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.*; import android.widget.AdapterView.OnItemClickListener; public class example extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); Gallery gallery = (Gallery) findViewById(R.id.gallery); gallery.setAdapter(new ImageAdapter(this)); gallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { Toast.makeText(example.this, "" + position, Toast.LENGTH_SHORT).show(); } }); } public class ImageAdapter extends BaseAdapter { public ImageAdapter(Context c) { mContext = c; } public int getCount() { return mImageIds.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(mContext); i.setImageResource(mImageIds[position]); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setLayoutParams(new Gallery.LayoutParams(160, 200)); return i; } public float getAlpha(boolean focused, int offset) { return Math.max(0, 1.0f - (0.2f * Math.abs(offset))); } public float getScale(boolean focused, int offset) { return Math.max(0, 1.0f - (0.2f * Math.abs(offset))); } private Context mContext; private Integer[] mImageIds = { R.drawable.cindy, R.drawable.clinton, R.drawable.ford, R.drawable.cybil, R.drawable.demi, R.drawable.colin, R.drawable.david, R.drawable.drew }; } }
Как удалить приложение из эмулятора?
-
Убедитесь, что ваш эмулятор работает
-
Откройте окно с досками в папке android / tools d: \ android \ tools> оболочка adb
-
Вы получите приглашение оболочки
#cd / data / app
#ls
(в нем будут перечислены все * .apk, установленные в вашем эмуляторе)
# rm example.apk
(если вы хотите удалить ‘example’)
#exit
- Вы увидите, как приложение удаляется из эмулятора одновременно
На этом первая часть моего вводного руководства по Android SDK завершена.