Пишем, собираем и запускаем Hello. World для Android в блокноте / Хабрахабр. Когда я начал изучать Android, захотелось полностью написать и скомпилировать Android- приложение вручную — без использования IDE.
- . Т.е. у вас должен быть настроен драйвер usb, включена отладка по. Мы намерены сделать приложение с именем TestApp, которое .
- Основные правила ввода текста в Блокноте. Как сделать переход к новому абзацу и как его удалить? Зачем в Блокноте нужно включать перенос по словам?
- Процесс нехитрый, но достаточно муторный – снова найти драйвера. эта статья расскажет, как самостоятельно сделать восстановление системы. Откройте файл G:Autoexec.bat в блокноте (правой кнопкой – «изменить»).
Однако эта задача оказалась непростой и заняла у меня довольно много времени. Но как оказалось — такой подход принёс большую пользу и прояснил многие тонкости, которые скрывают IDE. По- сути эта статья является переводом и переработкой статьи Building Android programs on the command line под современные на данный момент JDK (7) и Android SDK (API level 1.
Кроме того, я многое упростил и добавил кое- что от себя. Используя только блокнот, мы напишем совсем маленькое учебное Android- приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу. Вступление. Я был поражён, насколько сложным и запутанным является шаблонное приложение в android studio. Оно просто нагромождено ресурсами. И в меньшей степени — кодом и скриптами.
Хотя всё что оно должно делать — это выводить на экран Hello. World! Кроме того, в книгах и руководствах, которые я просмотрел, объясняется, как с помощью диалоговых окон создать IDEA- шный или эклипсовый Hello. World — и от него уже идёт дальнейшее повествование. А что происходит «под капотом» — остаётся только гадать.
Долгие поиски были почти безрезультатны — на русском языке статей по данной теме я не нашёл, а на английском — была устаревшая информация и кое- что пришлось дорабатывать напильником, гуляя по stackowerflow и документации. Когда я разобрался, то решил восполнить пробел — вдруг кому- то пригодится? Собственно, так и появилась эта статья. Мы создадим свой шаблонный проект, который идеально использовать для обучения. Там не будет ничего лишнего, только всё самое необходимое. А потом детально разберём, как его собрать и запустить на вашем Android- устройстве.
В конце статьи будет ссылка на скачивание архива с итоговым проектом — если возникнут какие- то вопросы — можете свериться с ним. Таким образом, вы будете на 1. Хотя этот тестовый проект предназначен для обучения, при небольшой доработке его можно будет использовать как прочный фундамент для ваших реальных проектов. Подготовка. Для начала у вас должен быть установлен JDK 7 и android SDK.
Последний кстати нужно чуточку настроить после установки. Главное требование перед прочтением этой статьи — кроме установленного софта вы должны уже уметь запускать на вашем девайсе тот Helloworld, который поставляется вместе с Eclipse или Android Studio. Т. е. у вас должен быть настроен драйвер usb, включена отладка по usb на вашем девайсе и т. Или же создан и настроен эмулятор. Это совсем элементарные вещи, и их рассмотрение выходит за рамки данной статьи — в сети достаточно информации. Кстати прочитать пару глав из книг тоже будет не лишним — хотя бы понимать, как устроен манифест, ресурсы, да и вообще основы языка Java.
А в этой статье я опишу то, о чём книги молчат. Написание проекта. Для начала, создайте некоторую папку, где будет ваш проект. Назовём её mytestapp. В ней создайте ещё 4 папки — bin,obj,res и src.
Создайте пустой текстовый файл и измените его имя на Android. Manifest. xml. Если вы начинающий пользователь Windows, вам нужно включить показ расширений, иначе файл будет по- прежнему текстовым. Добавьте в него следующее: < manifest xmlns: android="http: //schemas. Sdk. Version="1. 9" />. Test. App">. < activity android: name=". Main. Activity">.
MAIN" />. < category android: name="android. LAUNCHER" />. < /intent- filter>. Тут всё просто. Мы намерены сделать приложение с именем Test. App, которое при старте запускает класс Main. Activity. Осталось только написать этот небольшой класс — и приложение готово. Если нужно — отредактируйте в теге uses- sdk свойство android: target. Sdk. Version — поставьте ту версию, которая у вас.
Далее — создадим простейший ресурс — строку Hello test app. Вообще- то мы могли обойтись и без ресурса, вставив эту строку прямо в Java код. Но некоторые шаги сборки работают с ресурсами, и чтобы увидеть интересные моменты — мы всё- таки поработаем с ними. Давайте создадим в папке res папку values. Все ресурсы следует разбивать по папкам. Далее — в ней создадим пустой файл strings.
Откроется блокнот Windows с правами администратора Отключение проверки цифровой подписи драйверов Windows 10, 8.1, 8, 7.
Hello test app!< /string>. Вот и все ресурсы, нам необходимые. Просто, не так ли? Далее создадим внутри src папку com, в ней папку example, потом ещё ниже по иерархии папку testapp — а там уже наш класс Main. Activity. java. Добавим туда кодpackage com.
Activity. import android. Bundle. import android. Text. View. public class Main. Activity extends Activity {. Create(Bundle saved. Instance. State) {.
. Откроется блокнот Windows с правами администратора. Отключение проверки цифровой подписи драйверов Windows 10, 8.1, 8, 7, . . Подборка драйверов (по просьбе трудящихся). С помощью блокнота посмотрим содержимое раздела Recovery и скопируем файлы с. (Если планируете в дальнейшем сделать резервную копию с помощью .
Create(saved. Instance. State). Text. View text. View = new Text. View(this). View. set. Text(get. String(R. string. Content. View(text.
View). Структура каталогов должна получится такая│ Android. Manifest. xml. │ strings.
Main. Activity. java. И это собственно всё, что нам было нужно для простейшего проекта. Для сравнения — Hello.
World от android studio│ . Android. Studio. HWProject. Artifacts. │ cache. Hashes. bin. │ file. Snapshots. bin. │ output. File. States. bin. Artifacts. bin. │ │ compiler.
Com. Android. Support. Appcompat. V7. 19.
Android. Studio. HW. Android. Studio. HW. Android. Manifest. Main. Activity. java. Собственно, автоматизация через gradle, работа с git и IDE — вещи очень важные, однако на этапе изучения Android мне бы очень хотелось от них абстрагироваться.
Сборка. Теперь же подходим к самому важному и сложному этапу. Мы будем много работать с командной строкой, поэтому рекомендую вам все команды, данные здесь, записывать в один файл и назвать его comp. В конце файла после команд можете добавить pause, чтобы был виден результат и ошибки — если таковые возникнут. Подготовка путей.
Первое, что мы сделаем для удобства и краткости — создадим специальные переменные, в которых будем хранить пути. Для начала — определим наши основные директории. Вам нужно заменить пути к JDK и Android SDK на те, которые у вас.
JAVA_HOME=C: progsdkjdk1. ANDROID_HOME=C: progsdkandroid- studiosdk.
DEV_HOME=%CD%. Далее — пути непосредственно к программам. Я рекомендую вам просмотреть каталоги ваших SDK и убедится в том, что всё на месте. Также подкорректировать версии, которые присутствуют в путях. AAPT_PATH=%ANDROID_HOME%/build- tools/1. DX_PATH=%ANDROID_HOME%/build- tools/1. ANDROID_JAR=%ANDROID_HOME%/platforms/android- 1. ADB=%ANDROID_HOME%/platform- tools/adb.
Между прочим, в более старых версиях утилита aapt находилась в platform- tools — и я не исключаю что она иили другие могут слинять куда- нибудь ещё. Так что будьте внимательны. Если вы всё правильно сверите сейчас — то остальная часть статьи должна пройти гладко. И ещё — в пару переменных забьём наши пакеты и классы. Если заходите их сменить — вам не придётся бегать по коду — все настройки вначале. PACKAGE_PATH=com/example/testapp.
PACKAGE=com. example. MAIN_CLASS=Main. Activity. Подготовка к компиляции.
А теперь самое интересное. Помните, как классические Java- программы компилируются и запускаются в 2 строчки?
Здесь мы используем тот же самый javac, однако кроме него нам предстоит использовать ещё много утилит. Для начала спрошу — а вы никогда не задумывались, как работает загадочный класс R? Собственно меня он сперва смутил из- за его сверхъестественных возможностей. Как на этапе компиляции можно через поля класса обращаться к XML- файлам в других каталогах?
Я предположил, что тут орудует прекомпилятор — так оно и оказалось. Собственно, есть специальная утилита AAPT — она проходится по каталогам ваших ресурсов и создаёт тот самый R. Оказывается, всё очень даже просто — это просто класс, в составе которого другие статические вложенные классы с целочисленными константами. И всё! Он выглядит примерно так. R. java/* AUTO- GENERATED FILE. DO NOT MODIFY. * This class was automatically generated by the. It. * should not be modified by hand.
R {. public static final class attr {. Теперь давайте создадим его у вас. Для этого используем следующие команды: call %AAPT_PATH% package - f - m - S %DEV_HOME%/res - J %DEV_HOME%/src - M %DEV_HOME%/Android. Manifest. xml - I %ANDROID_JAR%. Давайте разберёмся, что к чему. AAPT — Android Asset Packaging Tool — буквально «упаковщик андроид- имущества».
Его опции: package — говорит, что нам нужно именно упаковать ресурсы (а не добавить или удалить)- f — перезапись существующего R. R. java в надлежащих пакетах, а не в корне указанного в - J пути- S — после этой опции мы указываем каталог с ресурсами- J — после этой опции мы указываем куда сохранить получившийся R.
I — после этой опции мы указываем путь к подключаемой библиотеке — включаем android. После его выполнения в каталоге src должен появится тот самый файл R.
Проверьте. Теперь в нашем проекте нет никакой магии и он полностью синтаксически корректен для обычного Java- компилятора. Давайте скомпилируем его. JAVA_HOME%/bin/javac - d %DEV_HOME%/obj - cp %ANDROID_JAR% - sourcepath %DEV_HOME%/src %DEV_HOME%/src/%PACKAGE_PATH%/*. Если вы ранее работали с java, то понять эту строчку для вас не составит труда. Однако я всё- таки объясню, что к чему: -d — куда поместить итоговые пакеты и *. После выполнения в папке obj должны находится пакеты с нашими классами в виде байт- кода (*.
Но вот ведь незадача — виртуальная машина андроида с ним не совместима! Но так было задумано и на это есть причины. А мы используем конвертер, который делает из class- файлов dex- файл, понятный для нашего зелёного R2. D2. call %DX_PATH% - -dex - -output=%DEV_HOME%/bin/classes. DEV_HOME%/obj. Опция - -dex указывает на то, что нам нужно преобразовать из *. Затем после опции - -output мы задаём путь к итоговому файлу classes.
И последний аргумент в этой команде — путь непосредственно к пакетам, содержащим *. Убедитесь в том, что в папке bin находится наш classes.
Теперь осталось только упаковать его вместе с ресурсами в APK- файл. Сделаем это: call %AAPT_PATH% package - f - M %DEV_HOME%/Android. Manifest. xml - S %DEV_HOME%/res - I %ANDROID_JAR% - F %DEV_HOME%/bin/Android. Test. unsigned. apk %DEV_HOME%/bin.
Ручная установка драйвера ADB / Хабрахабр. Я хочу поделиться с вами простым способом установки ADB драйвера под Windows. Эта статья понадобится тем, у кого этот драйвер или не устанавливается вовсе, или устанавливается, но adb все равно в упор не видит устройство(как было у меня), или вы вообще этот драйвер не нашли. Так что всех, у кого есть/были похожие проблемы, или кому просто интересно, прошу под кат. Начну с предыстории. Решил я купить себе недорогой планшетик на Android для чтения книг(DJVU/PDF), и выбор пал на устройство российского конечно же китайского производства Te. Xet TM- 7. 02. 5.
Жаба давила покупать что- то дорогое, а для простого чтения книг каких- то сверх- характеристик не требуется. Позже я обнаружил что на нем неплохо идут большинство игрушек, удобно полазить в инете пока ты сидишь in da kabin и т. А поскольку передо мной маячило изучение Android, я решил, что будет весьма удобно пользоваться для этого железным девайсом вместо мучений с эмуляторами. И вот тут меня ждал неприятный сюрприз — то ли родной драйвер оказался кривым, то ли винда, то ли провод… вообщем драйвер то встал, диспетчер устройств Windows рапортовал о полной работоспособности девайса, но на запрос adb devices в консоли я получал пустой список и, естественно, тестировать приложение на планшете не удавалось.
Я написал запрос в службу поддержки Te. Xe. T, мне даже ответили ссылкой на сам драйвер, который, как я уже убедился, не работал.
Я начал искать ответ в интернете и нашел кучу разных сборок этого драйвера и мануалов, но все равно ни один из них не завелся как надо, и даже родной драйвер из SDK вообще никак не становился, что повергло меня в уныние… но не отчаяние. Вот тут я решил попробовать свои силы в написании драйверов старом добром методе научного тыка и открыл inf- файл драйвера. Надежду мне давало понимание, что софтверная часть adb интерфейса со стороны планшета должна быть идентичной для всех устройств, а USB и так работал. И вот, после нескольких неудачных проб ручной правки inf- файла я нашел рецепт лечения приправы inf- файла так, чтобы оно поставилось и, главное, работало. Итак, приступим. Шаг 1. Скачать драйвер. Если вы этого еще не сделали, откройте Android SDK Manager, найдите раздел Extras, поставьте галочку напротив Google USB Driver и нажмите Install Packages.
Все просто. Ждете, пока загрузится. Шаг 2. Найдите драйвер и сделайте его копию в отдельную папку. Зайдите в папку %android- sdk%extrasgoogle и увидите там заветную папочку usb_driver. Вот ее скопируйте куда- то, и там же будем проводить дальнейшие манипуляции.
В принципе, можете править и «оригинал», но я предпочел сохранить оригинал нетронутым на всякий пожарный. Шаг 3. Правим inf- файл. В папочке открываем файл android_winusb. Google Nexus One. Single. Adb. Interface% = USB_Install, USBVID_1.
D1& PID_0. D0. Composite. Adb. Interface% = USB_Install, USBVID_1. D1& PID_0. D0.
MI_0. 1. %Single. Adb. Interface% = USB_Install, USBVID_1. D1& PID_4. E1. Composite. Adb. Interface% = USB_Install, USBVID_1.
D1& PID_4. E1. MI_0. 1. Делаем копию этих строк, заменяем Google Nexus One на %имя_вашего_девайса% для идентификации в будущем и… открываем диспетчер устройств Windows. Ищем там наше устройство(Android, Android Composite ADB Interface или что- то в этом стиле). Открываем свойства устройства, вкладка «Сведения», в списке выбираем пункт «ИД оборудования» и видим такую вот картину. Копируем строчку, которая больше всего похожа на ту, что показана на рисунке(Она, по идее просто немного короче), и вставляем ее в наш inf- файл.; TEXET TM- 7. Single. Adb. Interface% = USB_Install, USBVID_1. D1& PID_0. 00.
Composite. Adb. Interface% = USB_Install, USBVID_1. D1& PID_0. 00. MI_0. 1. %Single. Adb. Interface% = USB_Install, USBVID_1. D1& PID_0. 00. Composite. Adb. Interface% = USB_Install, USBVID_1. D1& PID_0. 00.
MI_0. 1. В %Single. Adb. Interface% мы конец строки удаляем, как видно, в %Composite.
Adb. Interface% вставляем целиком. Повторять два раза все, наверное, не надо, но у меня уже все стоит и мне лень экспериментировать : ). Сохраняемся(будьте внимательны — в некоторых случаях для этого нужно запускать блокнот с правами администратора, т.
Шаг 4. Установка драйвера. Теперь, когда все подготовлено, возвращаемся в диспетчер устройств и удаляем все ранее установленные adb драйверы(если были). Обновляем список устройств и видим наш девайс без драйверов.
Открываем его свойства и выбираем «обновить драйверы», выбираем установку из папки, указываем папку с поправленым inf- ом и запускаем установку — наш драйвер моментально находится, но при установке он может ругаться о несовместимости с вопросом «продолжать ли, насяльнека?». Продолжаем. Все, драйвер установлен. Шаг 5. Финал. Для точности делаем вынь- всунь USB- порта, ждем пока все обнаруживается, открываем консоль(Win+R, вводим cmd) и пишем adb devices.
Если все прошло хорошо — видим заветный пункт списка, обозначающий, что adb теперь видит наш девайс. С этого момента можно спокойно запускать eclipse и строить программы, наслаждаясь удобной автоматической сборкой, установкой и возможностью дебага прямо на нашем устройстве.
Если команда adb у вас вообще не работает. Компьютер - > Свойства - > Переменные среды. Ищем переменную Path и в конце дописываем(ни в коем случае не перезаписываем) в конце точку с запятой, а после адрес папки, где живет adb(обычно %android- sdk%platform- tools). После перезагрузки должно заработать. Иногда adb не запускается автоматически при старте системы.
Запустите вручную. Что это было? На самом деле все просто. В силу неких причин(винда мастдай/у прогеров кривые руки/гугловский инф- файл писался только для родных гугловских девайсов/в вашем компьютере все испортили бозоны Хиггса) винда не хочет кушать гугловский драйвер для негугловских девайсов, не записанніх в inf- файл. Видимо, там все как раз завязано на этих ИД- оборудования. Но ведь софтверная часть на подавляющем большинстве андроид- устройств в части дебаггер- коннектора к ПК идентична, потому драйвер должен нормально общаться с любым Андроид- устройством.
Наша задача — обмануть Windows и заставить ее принять девайс за «драйверо- подходящий», что мы и сделали путем дописывания его ИД в inf- файл драйвера. Надеюсь, кому- то данный мануал поможет завести свой китайский или другой девайс, для которого при сборке системы забыли сделать нормальный драйвер adb, или тем, кого задалбывает качать официальный драйвер от производителя устройства(это бывает настолько гемморно, что быстрей сделать все вышеописанное — у меня так было с драйвером для телефона LG E5. P. S. Я не проводил массового тестирования данного метода, так что не могу гарантировать, что он заработает в 1. Но у меня он заработал на Windows 7, а после и на Windows 8.
Файл приходилось править для каждого раза отдельно, но не думаю, что это такая уж проблема.