13 декабря 2010 в 18:24

Пишем своё первое приложение на Android из песочницы


Предисловие


Цель данного поста — с одной стороны поделиться своим успешным опытом старта разработки приложений на платформе 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-картинку с прозрачным фоном размером в 72x72, в drawable-mdpi соответственно 48x48 и в drawable-ldpi самую маленькую размером 36x36. Делать это можно простым перетаскиванием файлов прямо на дерево. Следующим шагом будут элементы управления. В моей программе было необходимо всего три элемента интерфейса: ImageView (просто картинка логотип приложения), Button (обновить значение температуры) и TextView (вывод значения температуры). Все эти элементы управления нужно описать в специальном xml-файле. В дереве он расположен по адресу res → layout → main.xml. Во-многом разметка элементов управления сходна с вёрсткой веб-страниц, тут есть и padding, и margin, и аналог align. Код main.xml моего приложения:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://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("http://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:\workspace\Test\gen\com\example\test\R.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:\Android\tools). Сохраняем. Запускаем Eclipse, запускаем программу.

UPD 05.10.2011, во что превратилось данное приложение можно лицезреть на следующих скринах:


Это результат развития той самой болванки, которая выше дана в качестве примера.
Разработка Android-приложений
+108
566080
1090
Hoorsh 64,9 G+

Комментарии (93)

НЛО прилетело и опубликовало эту надпись здесь
+1
Coderr, #
dl-ssl.google.com/android/eclipse/

Not Found
The requested URL /android/eclipse/ was not found on this server.

А так, спасибо огромное за пост, было интересно читать.
+1
Hoorsh, #
Спасибо за замечание, дополнил в статье, что можно загрузить ADT-плагин вручную по ссылке developer.android.com/sdk/eclipse-adt.html
0
lizanin, #
0
lizanin, #
блин...http:// вообщем, потом адрес
+2
Exabiche, #
А в другом редакторе работать нельзя? Только eclipse?
0
Hoorsh, #
Можно в IntelliJ IDEA и NetBeans и даже на C# в MonoDroid
0
michaelarshinov, #
очень интересно, пишешь на шарпе получаешь яву или как?
0
Hoorsh, #
Получаешь байт-код для Dalvik. Вполне возможно, что в будущем будет и компиляция в нативный код.
0
michaelarshinov, #
интересно, какие Activity быстрее выведут на экран «Hands off Soviet rule», Java Dalvik, или заврапленные через JNDI Mono C#? Что то мне кажется одинаковая скорость будет
+1
Hoorsh, #
Тут дело не в скорости выполнения, а в удобстве. Многие не хотят отказываться от привычных им C# и .Net
0
gasyoun, #
Разница?
–1
AStahl, #
Плохо то, что Android очень привязан к Java.
Теоретически можно писать и на C++, но это делается через ряд костылей.
Лично мне это решение разработчиков очень не нравится.
0
pilgr, #
Все равно GUI нужно писать на Java и xml-ках. Даже в случае с С++, в результате получается все тот-же байт для Dalvik. NDK хорош для использования множества уже написанных на С++ библиотек.

Да и Java, сам по себе, как язык не очень то и сложен. Особенно в том объеме, что он используется в повседневном программировании под Android.
–1
redchrom, #
>Даже в случае с С++, в результате получается все тот-же байт для Dalvik
Что? Код на C/C++ в обычную эсошку собирается.
0
pilgr, #
Правильно ли вы меня поняли? Я имел ввиду байт-код. Ошибся.
0
redchrom, #
Я понял вашу фразу как: «из c++ получается байт-код для dalvik», что не верно. Или я всё-таки я не правильно понял?
0
pilgr, #
Да, в конечном итоге приложение все-же исполняется внутри виртуальной машины Dalvik. Разве я не прав?
0
Hoorsh, #
This can provide benefits to certain classes of applications, in the form of reuse of existing code and in some cases increased speed
Посмотрите, на официальном сайте утверждается, что использование C/C++ может сократить избыточное использование одного и того же кода и увеличить в некоторых случаях скорость. Такой вариант возможен только если код на C/C++ компилируется в машинный код, не так ли?) Если бы компилировалось в байткод, то это были бы те же яйца, но с другой стороны.
0
Hoorsh, #
The Android NDK provides headers and libraries that allow you to build activities, handle user input, use hardware sensors, access application resources, and more, when programming in C or C++. If you write native code, your applications are still packaged into an .apk file and they still run inside of a virtual machine on the device. The fundamental Android application model does not change.
Возможно из-за фразы, что код все равно исполняется виртуальной машиной, многие считают, что на выходе программы на C/C++ такой же байткод, как и на выходе с Java. А сделано это для того, как видно из цитаты, чтобы не нарушать фундаментальной модели Android.
Истина же в том, что NDK существует как раз таки для того, чтобы особо критические куски приложения компилировать в машинные команды ARM-процессоров (в будущем и x86), так что программа на C/C++ компилируется в ничто иное как машинный код. Я бы сравнил это с ассемблерными вставками, только на уровень выше :)
+4
VolCh, #
Насколько точен эмулятор? Реально ли разработать рабочее приложения не имея ни одного девайса с Android?
+1
Hoorsh, #
В плане отрисовки? Точен на 100%. Он полезен не только для тестирования разных разрешений экрана и версий Android, но и геолокации, работы с сетью, sms и многого другого.
+1
TWINc, #
Откуда такая уверенность? Можно с легкостью создать приложение, которое в эмуляторе будет выглядить нормально, а на реальном устройстве как пустой прямоугольник (если использовать текстуру в opengl с размерами != ^2).
+1
serzhb, #
Есть отличия. Вот с чем я столкнулся при использовании эмулятора.
1. Эмулятор обладает только 16-битной глубиной цвета, т.е. например градиенты отображаются как бы «ступеньками».
2. Отсутствует аппаратное ускорение. Так как я разрабатываю игры с использованием OpenGL для меня это очень большой минус эмулятора. Максимальный FPS достигает в лучшем случае 15-20 кадров в секунду.
3. На реальном девайсе плотность пикселей больше (для hdpi однозначно), поэтому на мониторе не так четко всё отображается как на мобильном. Вместо этого просто картинка, которая визуально гораздо больше экрана монитора.
Поэтому я всегда разрабатываю с использованием реального девайса (HTC Desire + adb driver), а не эмулятора.

Но если вы хотите ориентироваться в основном на разработку программ, а не игр, тогда нет особых неудобств при использовании эмулятора.
+2
Hoorsh, #
Значение dpi и даже размер экрана можно ведь задавать в настройках виртуальной машины



А на мониторе компьютера желательно поставить разрешение «пиксель-в-пиксель»
+1
serzhb, #
Да можно сжать визуально до размера экрана девайса, но такой четкости даже близко не будет.
Ибо тут 96dpi у монитора против 240dpi у hdpi-android-телефона.
0
BiFive, #
Если приложение использует акселерометр то без девайса не обойтись.
Не раз сталкивался, что приложение на симуляторе работает, а на реальном устройстве косяки. Если приложение вычислительно затратное (графика), то сложно определить будет ли тормозит на устройстве (некоторые вещи на машине работают быстрее, некоторые на девайсе).
0
michaelarshinov, #
да, к примеру в емуляторе айфона есть мультитач точно, есть ли он в эмуляторах анроидных девайсов?
+1
bulbazaur, #
зависает вот тут:
0
Hoorsh, #
На этом момент даже в WinXP компьютер доволно долго что-то усиленно выполнял, может это не зависание? Стоит дать шанс я думаю, подождите
–1
Prescott, #
По-моему ваша программа начнет показывать неверную температуру если создатели сайта вставят туда еще какой-нибудь span с числом в innetHTML, плюс не очень рационально грузить весь код сайта на телефон, для таких вещей есть специальные сервисы со своим API. А сама статья наверняка многим пригодится.
0
Hoorsh, #
Да, согласен. Зато будет повод выпустить версию 1.1 :) Единственная ценность этой проги в том, что данные на сайте — с реального датчика температуры на одном из объектов. Писалось это всё для самообучения. Сейчас пишу виджет этой проги
0
Blackside, #
Новичкам могу посоветовать «App-Inventor» от Google.
Подойдeт для написания несложных аппликаций без особых знаний в программировании.
Check it: appinventor.googlelabs.com/
0
crosser, #
Линк не открывается?
0
Nerten, #
0
crosser, #
вот сейчас откр, спс
0
EugeneGavrin, #
Посоветуйте нормальный и удобный редактор интерфейса, в IntelliJ IDEA все хорошо, но нет визуального редактора — без него грустно
+2
serzhb, #
Для создания layoutов отлично подойдёт:
www.droiddraw.org/
+2
Defite, #
Когда я создавал свое первое приложение, у меня появилась ошибка вот такого рода:

ERROR: Unable to open class file C:\workspace\Test\gen\com\example\test\R.java: No such file or directory.


Собственно, у кого она может появиться, у кого-то нет, но на всякий случай решение — сохраниться и перезагрузить Eclipse. Проблема, как выяснилось, банальна — по какой-то причине на этапе создания проекта не успел сгенерироваться R.java, после перезапуска Eclipse он генерируется, и проблема исчезает.

Также я столкнулся с еще одним «камнем» — на этапе создания конфигурации виртуального устройства может появиться ошибка:

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. Лучше если это будет корень диска. Создаем, далее ищем там же переменную Path, открываем и в поле значений через точку с запятой добавляем путь до папки tools Eclipse. Сохраняем. Запускаем Eclipse, запускаем программу.
+3
Hoorsh, #
Когда я создавал свое первое приложение, у меня появилась ошибка вот такого рода:
ERROR: Unable to open class file C:\workspace\Test\gen\com\example\test\R.java: No such file or directory.
Собственно, у кого она может появиться, у кого-то нет, но на всякий случай решение — сохраниться и перезагрузить Eclipse.
Тоже с этим столкнулся. Решить проблему можно так Project → Clean
+1
Defite, #
ага, спасибо, это более нормальное решение.
0
michaelarshinov, #
ага, или удалить из импортов класс, R, а потом, затем ctrl+shft+o по-моему
0
VYBGSS, #
Спасибо. Улетело в избранное, на выходных поиграюсь.
+4
bO_oblik, #
Да что со всеми не так, каждый зачем-то описывает как установить eclipse, посмотрите с этого начинается любая статья про разработку под android, зачем писать одно и то же?

Может лучше писать о самой разработке под андроид? Было бы классно.
0
msfs11, #
так самое интересное, что на оф.сайте тоже самое написано, токо английскими буковками, но необразованные быдло-хомячки все равно плюсуют, поощряя увеличение информационного мусора…
было бы клево про разработку игр почитать что-то конкретное, вместо
google:// android game developing framwork
0
FTM, #
подскажите, почему на разных телефонах написанное приложение может вести себя по-разному? вот в sdk — все ок. на многих телефонах все ок, а на некоторых — вылетает с ошибкой какой-то. причем независимо от версии ОС.
0
FTM, #
ошибка, кстати, такая: «Приложение неожиданно остановилось. Повторите попытку»
0
thevery, #
смотрите логи
0
tehnolog, #
Скажите, а распространять свои проги можно, минуя магазины, как это было раньше с Windows Mobile? А то напридумывали всякие AppStore, MarketPlace, Android Market.
0
thevery, #
если вы про андроид, то можно, но смысла почти никакого нет
0
tehnolog, #
В смысле?
0
thevery, #
потенциальная аудитория будет в тысячи раз меньше
0
tehnolog, #
а мне и не надо )). Есть программки, которые интересны мне и моим знакомым. Ну и на сайте выложить для единомышленников. Это и имелось в виду.
0
Hoorsh, #
Выложи, кто ж будет против) На тематических форумах многие разработчики выкладывают проги, которые не представлены в Маркете. Если ты просто планируешь распространять, например, бесплатную программу, то и думать нечего, выложил *.apk файл и пусть себе качают. А если ты хочешь какую защиту а-ля серийные ключи встраивать, то это, как правильно сказал thevery, возврат в прошлое.
0
thevery, #
даже в этом случае скачать из маркет значительно удобнее.
но вообще никто не мещает выложить .apk
0
Shirixae, #
Но это заставит потратить 25 баксов.
0
pilgr, #
Android Market сделал ПО действительно доступным на расстоянии пары кликов и зарубил пиратство на корню. Вы хотите в прошлое?
0
thevery, #
А почему не используете в приложении AsyncTask и подобные асинхронные обработчики? Если будут проблемы с интернетом, то при обновлении погоды приложение может подвисать…
0
BelArt, #
Есть еще одна распространенная ошибочка: установив SDK Android не в домашнюю папку пользователя, запустить эмулятор будет невозможно, будет писать об отсутствующем образе системы. Т.е. в AVD все создается нормально, а при запуске — облом.
Лечится путем создания линка на папку с установленным SDK из директории домашней папки пользователя (mklink /d).

0
zzzmmtt, #
Лечится установкой не распаковыванием архива куда хочется, а запуском именно установщика SDK, тогда и танцы с бубном не нужны будут.
0
Coper, #
Вчера ставил с нуля всё окружение, в инструкции написано устанавливать JDK (не достаточно JRE). Можете поправить в статье, у вас наверное JDK уже стояло.
0
Hoorsh, #
Спасибо, исправил
+5
Monyag, #
а я думал, что мануалы helloAndroid даже на заборах уже не пишут.
0
bearpaw, #
И ни одного примера на хабре на предмет использования NDK или графики…
0
thevery, #
по NDK точно был, правда тоже уровня хелловорлд
0
OlexU, #
Если проект не 1.5, то есть гораздо более удобный способ навесить клик на кнопку, чем setOnClickListener

Пример:
создаем метод в активити

public void play(View v) {
}

а во view указываем атрибут для кнопки
android:onClick=«play»
0
Argnist88, #
Строчки с R.id.* выдают ошибки. R.java в начале создается, а если Project — Clean сделать — удаляется))
0
Argnist88, #
С этим вроде разобрался, была ошибка с названием файла.
А вот:
Создаем новую переменную с именем ANDROID_SDK_HOME и значением – путем, где находится папка AVD. Лучше если это будет корень диска. Создаем, далее ищем там же переменную Path, открываем и в поле значений через точку с запятой добавляем путь до папки tools Eclipse.

1. Где находится папка AVD?
2. В Eclipse нет папки tools, где она?
0
Hoorsh, #
1. Укажите папку, где у вас Android SDK, к примеру. У меня C:\Android
2. Там очепятка, папка tools не у Eclipse, а в папке с Android SDK. У меня C:\Android\tools
0
cybd, #
Подскажите что делаю не так? Голый проект и уже пишет ошибку «R cannot be resolved to a variable»
0
Hoorsh, #
1. Попробуйте Project -> Clean
2. При создании проекта в поле Create activity напишите что-то без точек, например habrtest
0
cybd, #
На самом деле помогло избавиться от ошибки, подведя мышу к проблемному участку, там в попап окне предлагалось решить проблему одним из методов, выбрал import com.app.habr.R; Добавил инфу в указанные файлы, из xml вырезал ImageView. Компилируется, но в результате вижу черный экран с надписью ANDROID
0
cybd, #
Таки заставил заработать приложение. Спасибо за пример. Таки нужно было дождаться загрузки эмулятора и добавить строчку import com.app.habr.R;
+1
ihoru, #
Спасибо. Опробовал, все получилось, хоть и с небольшими поправками (Ubuntu).
Загорелся сделать что-то полезное для себя на новеньком HTC Legend ;) (кстати, на нем тоже заработало, не только в эмуляторе)
0
reality, #
На линуксе безумно тормозит эмулятор, хотя памяти 4гига и куча свободно, процессор тоже вроде не особо нагружен. Это у всех такое счастье или надо искать причины у себя. А то чую это мазахизм разрабатывать более менее крупное приложение ((
0
reality, #
нашел выход, подключил для дебага свой HTC Desire ) мануал кстати тут: developer.android.com/guide/developing/device.html, гораздо приятнее теперь
НЛО прилетело и опубликовало эту надпись здесь
0
Droy, #
Только что сам столкнулся с подобной проблемой :)
0
Hoorsh, #
Известная проблема, касающаяся x64

Вот решения:
http://stackoverflow.com/.../
http://code.google.com/../

Короче говоря, нужно подправить bat-ник, иначе он не распознает установленную jdk

Same problem (on Windows 7 64), I finally solved it doing this:

Look for find_java.bat in android-sdk-windows\tools\lib

Supposing your jdk is in C:\Program Files\Java, replace

for /D %%a in ( "%ProgramFiles%\Java\*" ) do call :TestJavaDir "%%a"

by

for /D %%a in ( «C:\Program Files\Java\*» ) do call :TestJavaDir "%%a"

SDK Setup.exe did work fine afterwards

НЛО прилетело и опубликовало эту надпись здесь
0
Hoorsh, #
Такого быть не может. В папке Android SDK есть папка tools, в ней lib, а в ней лежит батник find_java.bat
НЛО прилетело и опубликовало эту надпись здесь
0
Knave, #
Чтобы решить проблему с JDK 64-bit нужно скачивать Android SDK в виде архива (http://developer.android.com/sdk/index.html) и там менять батник, как написано выше.

Мне помогло, спасибо.
0
avz, #
В окне с ошибкой нажать Back, потом снова Next
0
herfleisch, #
Решение проблемы тут.
НЛО прилетело и опубликовало эту надпись здесь
0
galo4kin, #
У меня всё получилось, спасибо большое) Небольшая проблема была лишь в том, что проект создал в «Program Files», а компилятор не принял пробел(

Сейчас все заработало и это очень радует!)
0
densilvio, #
По старому урлу, указному в коде (http://www.bashkirenergo.ru/weather/ufa/index.asp) — 404
Используйте be.bashkirenergo.ru/weather/ufa/
0
alex4, #
Полезно. Не с полутыку, пришлось повозиться — но, заработало! Спасибо!
0
bit, #
И от меня спасибо! Помогло сделать свою болванку. А дальше — «Пилите, Шура, пилите! Она золотая!» :)
0
theTipok, #
Я не нашел Android SDK and AVD manager. Вместо них отдельно две проги SDK manager и AVD manager. Надеюсь это не мой косяк?
При установки ADT плагина для Eclipse возникает ошибка. Я ставил из архива в ручную.
Нормально установились Android DDMS, Android Hierachy, Android Traceview. При установке Android Development Tools говорит «Cannot complete the install because one or more required items could not be found»
Это критично?
Потом остановился на строчке
«После этого необходимо добавить платформы и прочие дополнительные элементы SDK»
Как это сделать без прямого доступа в интернет? Можно ли скачать какой-нибудь архив?
0
Makcym, #
На моей Win7 x64 глюки сыпятся как снег зимой…
0
gasyoun, #
Интересно.

Только зарегистрированные пользователи могут оставлять комментарии.
Войдите, пожалуйста.