Пишем и собираем приложения для Android в linux консоли
В данной статье я покажу как можно собрать apk файл в Ubuntu используя лишь
утилиты командной строки.
Обычно для создания приложений для Adroid используется Android Studio. Но для сборки небольших программ можно обойтись командной строкой. Например, когда ресурсы компьютера ограничены и ваше приложение очень простое.
В качестве постоянной среды разработки это, возможно, не очень удобно, но если вам нужно
иногда собирать какие-нибудь мелкие утилиты — это в самый раз.
Введение
Разработка под Android не является основным направлением моей деятельности, я иногда делаю какие-то небольшие приложения для своих нужд.
Раньше я использовал QPython, но он достаточно тяжел и неудобен в работе. Поэтому я перешел к разработке нативных программ. Даже при поверхностном знании Java
это не составляет больших трудностей.
Данное руководство в большой степени базируется на этом документе: Building an Android App
Научись Linux: сборка программ из исходников (эпизод 13)
from the Command Line. Кому интересны подробности, обращайтесь к первоисточнику.
Похожая статья: Пишем, собираем и запускаем HelloWorld для Android в блокноте уже встречалась на этом ресурсе, но в ней было рассмотрена разработка в Windows.
Здесь же я рассмотрю, как можно собрать приложение в linux.
Железо
Тестирование проводилось на стареньком нетбуке с процессором Атом, 1Гб ОЗУ
и 8Гб SSD диска.
Операционная система
Я тестировал приложение на Ubuntu 17.04. Начиная с Ubunu 16.04 android-sdk можно установить через пакетный менеджер.
В принципе, тот же SDK можно
скачать с сайта.
Качать файл из раздела ‘Get just the command line tools’
По сути это не сильно меняет процесс, но через пакетный менеджер все гораздо проще.
Разница будет лишь в путях и установке дополнительных пакетов «android-platform».
Установка пакетов
Итак, приступим к установке.
Будет установлено большое количество пакетов, включая Java.
Далее, в зависимости от требуемой версии Android, необходимо установить нужную
версию пакетов. Для lolipop 5.1 необходимо ставить:
Так же необходимо установить дополнительный пакет.
Если вы планируете устанавливать apk-пакет через adb, то необходимо немного дополнительных настроек.
Настройка adb
С помощью lsusb найти подключенное устройство
И создать файл с правилом:
В файл добавить одну строку:
Здесь «1782» взято из вывода lsusb.
После подключения через adb, на устройстве необходимо подтвердить соединение.
Теперь все готово к работе.
Постановка задачи
Приложение, которое будем собирать немного сложнее, чем ‘Hello world’.
- Требуется по нажатию кнопки взять строку из буфера обмена.
- Вырезать подстроку
- Записать подстроку обратно в буфер.
- С помощь Toast вывести подстроку или сообщение об ошибке.
В общем-то все просто.
Я подготовил пример который возьмем за основу.
Создание подписи
Сначала создадим ключ для подписи файла:
Это нам пригодится позже.
Манифест
Здесь указываем имя приложения в атрибуте «android:label». Так же приложение будет использоваться свою иконку, она указана в атрибуте «android:icon». Сама иконка лежит в каталоге «res/drawable-mdpi» файл «icon.png». В качестве иконки можно взять любой небольшой png файл.
Layout
Файл с расположением элементов находится в каталоге «/res/layout/».
В него можно добавлять виджеты, если вы захотите расширить функционал.
Исходный код приложения
Исходный код приложения находится здесь «java/ru/kx13/extractvidid»
Код весьма прост и примитивен, но этот шаблон можно использовать в других приложениях.
Скрипт для сборки
Я не стал использовать утилит сборки типа make или ant, т.к. весь код находится в одном файле и особых преимуществ это не даст. Поэтому это обычный shell скрипт:
Некоторые замечания по поводу путей.
- По умолчанию, переменная BASE указывает на путь, в который пакетный менеджер сохраняет файлы. Если вы ставите SDK вручную, то путь надо будет изменить.
- Если вы используете версию API отличную от 22, то вам надо подправить переменные BUILD_TOOLS и PLATFORM
Сборка и установка
Для сборки просто запустите
Если все настроено правильно никаких сообщений не будет выведено, а в каталоге «build» появится файл «Extractor.apk»
Теперь надо установить наше приложение
Если все прошло нормально, на устройстве появится новое приложение. Можно запускать и пользоваться.
В общем случае можно перекинуть файл apk на устройство любым удобным способом.
Заключение
Как видно из статьи начать разработку в консоли совсем несложно.
Консольные утилиты позволяют разрабатывать программы при весьма небольших ресурсах.
Сборка Android под Ubuntu Linux
Эта заметка является косвенным продолжением моей первой публикации Сборка Android под Mac OS X и имеет аналогичную цель — решение проблем сборки относительно старых версий Android 4.0.x.
Коротко вводная. В одном из проектов я занимаюсь доработками оригинального кода Android для создания прошивки под специфичную железку. Версия для сборки была выбрана уже относительно старая — AOSP 4.0.4, но на ней базируется стабильная ветка кода от производителя железки. Первоначально я работал на MacOS, но для этого проекта решил переключиться на Linux для удобства разработки. Итак волею судеб я перешел с MacOS на более менее свежий Ubuntu Linux 12.04.3, рекомендованную на данный момент версию Linux для сборки Android.
Основной сложностью в новом окружении осталась старая проблема — старые версии AOSP не отслеживаются и новые правки в сборочную систему не вносятся. Поэтому если сборка master’а особой сложности не представляет, то сборка предыдущих версий Android под более свежие версии Ubuntu требует исправления ряда проблем.
В моем случае рабочее окружение выглядит так:
- AOSP 4.0.4 r1.1
- Ubuntu Linux 12.04.3 x64
- GNU Make 3.81 и другие рекомендованные утилиты
Все основные моменты и сложности сборки AOSP хорошо описаны в официальной документации. Как и для MacOS, в случае с Ubuntu, для сборки AOSP 4.0.x версий предлагается использовать более старые версии базовой ОС. В частности в разделе «Known Issues» для решения проблемы «Build error with 4.0.x and earlier on Ubuntu 11.10» предлагается использовать старый релиз Ubuntu 10.04, что не очень хочется делать, если предполагается заниматься в ОС и другими задачами, кроме сборки AOSP.
Решение
Установка производилась на практически чистую Ubuntu, за исключением нескольких прикладных программ. Первичная настройка окружения производилась в соответствии с официальным описанием.
Ниже я привожу тексты ошибок из консоли и методы исправления. В зависимости от версии AOSP и вашего окружения они могут проявляться все или частично. Большинство решений можно найти в интернете, я привожу лишь краткое описание необходимых действий.
Ошибка 0
Или вовсе и не ошибка, а необходимость установить для сборки проприетарные пакеты Oracle Java, которые с некоторых пор не входят в поставку Ubuntu.
Исправление
Для сборки Android нам необходим JDK 6ой версии, соответственно для этого прописываемыем репозиторий Oracle с нужными пакетами и устанавливаем требуемый:
Аналогично можно установить последний JDK 7ой версии, если это требуется для других целей:
Ошибка 1
При установке необходимых пакетов не устанавливается пакет libgl1-mesa-glx:i386 в котором паходится нужная нам библиоткеа libGL x86. Не устанавливается со следующей причиной:
Вместе с ним для установки указан пакет libgl1-mesa-dev в котором содержится libGL, но x64 версия, что нам не подходит для сборки AOSP.
Если попробовать сборку с libgl1-mesa-dev для x64 архитектуры, то при линковке получим ошибку:
Исправление
Вместо пакетов libgl1-mesa-glx:i386 и libgl1-mesa-dev установить пакет libgl1-mesa-dev:i386:
Более подробное описание содержимого пакета можно найти в описании Ubuntu, видно что он содержит и нужный libgl1-mesa-glx.
Также при установке пакета будет создан и симлинк в директории /usr/lib/i386-linux-gnu/, поэтому дополнительно его создавать не нужно, как указано в руководстве командой:
Ошибка 2
Используемая в системе версия компилятора gcc (4.6.x) имеет проблему с переопределением символа _FORTIFY_SOURCE, о чем так же написано в официальных «Known Issues». Как решение предлагается откатиться на Ubuntu 10.04, что очевидно не самый лучший вариант. Текст предупреждения и ошибки будет такой:
Исправление
Эту проблему можно решить установив gcc-4.4 и необходимые библиотеки:
Подробнее про настройку 2х версий gcc и использование gcc-4.4 как приоритетной версии можно прочитать в этом блоге. Для наших же целей достаточно установить нужные пакеты и запускать сборку командой с указанием версии компилятора:
После приведенных выше операций Android соберется как мы и хотели, но постфактум можно столкнуться еще с парой неприятностей.
Ошибка 3
При запуске эмулятора с указанным параметром «-gpu on» для включения аппаратного ускорения отрисовки вы получите слежующее сообщение и черный экран в эмуляторе:
В обычном режиме эмулятор запускается нормально, но разобраться было интересно и к тому же выяснилось что после перезагрузки компьютера вентиляторы продолжают работать на максимуме и не глушатся. Мягко говоря очень не приятный эффект, при таком шуме работать крайне не удобно.
Исправление
Путем проверки пакетов выяснилось что при установке одного из них был удален проприетарный графический драйвер от NVidia и как следствие система забыла как регулировать скорость вращения вентилятора, а также где искать нужную библиотеку. Вредоносным пакетом оказался libncurses5-dev:i386, обратите внимание что при его установке будет следующий запрос:
Соответственно решением проблемы будет просто переустановка проприетарного драйвера в консоли или через панель управления.
Ошибка 4
Возникает при запуске эмулятора без указания файла ядра системы. В предыдущей статье я забыл указать этот момент, в этой исправляюсь чтобы описание было до конца полным. Итак при запуске эмулятора AOSP 4.0.4 мы получим сообщение:
Проблема возникла из-за того что в более свежих версиях AOSP prebuilts перенесли в другую директорию и это исправление попало в сборочные скрипты для старых версий, а вот местоположение не изменили.
Исправление
Указать при запуске эмулятора расположение ядра, путь относительно корня сборки:
Как установить Android Studio на Linux
Узнайте о том, что такое Android Studio (Linux), и как погрузиться в мир мобильного девелопмента. Пошаговая инструкция по установке популярной среды разработки на персональный компьютер под управлением Linux.
Android Studio — это IDE или интегрированная среда разработки, реализуемая в рамках проекта компании Google. Сборник инструментов и плагинов распространяется бесплатно и дает возможность желающим попробовать себя в роли разработчика мобильных приложений.
Интегрированная среда разработки приложений на Android доступна для всех операционных систем. Но часто молодых разработчиков интересует установка Android Studio на Linux.
Нет ничего сложного в том, чтобы начать пользоваться популярнейшей средой для мобильного девелопмента в ОС Linux. Используйте один из способов из пошаговой инструкции — установите IDE: с официального сайта, из PPA или с помощью утилиты umake.
Установка Android Studio на Linux mint и другие производные
С официального сайта
Установка Android Studio на Linux mint потребует для начала загрузки на компьютер инструментарий Java. Для скачивания Oracle Java 8, наберите команду «sudo apt install oracle-java8-installer».
Введя в консоли «sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386» вы получите дополнительные библиотеки, требуемые для установки среды.
По аналогии с вариантом загрузки IDE на Ubuntu произведите установку Android Studio Linux клиент с официального сайта и запустите из директории загрузки.
Если установочный пакет сохранился в папке Downloads, его потребуется перенести командой «sudo mv
/downloads/android-studio/usr/local/» в директорию usr/local/ соответственно.
Затем запустите установку, набрав:
./studio.sh Дальше обращаться к консоли не потребуется. Как и в случае работы с Ubuntu, установка будет происходить в окне.
Из PPA
Для установки из PPA интегрированной среды разработки на «Линукс минт», потребуется использовать уже знакомый репозиторий:
sudo add-apt-repository ppa:paolorotolo/android-studio.
Начните установку программы с ввода в терминал команды:
sudo apt update
sudo apt-get install android-studio
Готово. Запускается IDE так же, как и на Ubuntu.
Установка Android Studio в Ubuntu
С официального сайта
Android Studio в Ubuntu установка производится в несколько шагов. До начала работы IDE, первым шагом установите виртуальную машину Java. Подходящей версией будет Java 8 Oracle. Для загрузки инструментария на компьютер введите команду ниже.
sudo apt-get install oracle-java8-installer
Далее с сайта разработчика вам потребуется скачать установочный файл Android Studio для Linux с дальнейшей распаковкой его в директорию с помощью команды:
sudo unzip android-studio-ide-141.2178183-linux.zip -d /opt
А запустить программу из папки вы сможете строкой — /opt/android-studio/bin/studio.sh
Дальнейшее управление процессом не потребует использования терминала и будет происходить в окне приложения. На выбор будет предоставлен вариант ручной или автоматической установки, показан список компонентов программы. По окончании продолжительной загрузки, нажмите кнопку «Finish».
Из PPA
Если с официального сайта установить среду разработки мобильных приложений не удалось или потребовалась старая версия программы, можно взять Андроид Студио из PPA.
Для начала добавьте директорию, вписав строчку:
sudo add-apt-repository ppa:paolorotolo/android-studio
Затем наберите в консоли «sudo apt-get install android-studio», чтобы установить программу. По окончании установки запустите инструментарий разработки, набрав Dash: studio.
Или напрямую из папки /opt, введя в консоли: /opt/android-studio/bin/studio.sh.
Через Umake
Сократить продолжительность установки Android Studio на компьютер поможет Ubuntu make. Эта утилита распространяется бесплатно и создана специально для того, чтобы облегчить разработчику процесс установки ряда программ.
Более того, пользователям системы Ubuntu версии 15.04 и выше Umake доступна с самого начала. Из официального репозитория установить ее можно командой «sudo apt install ubuntu-make».
Владельцам операционной системы ранних версий (14.10 и ниже) потребуется установка из PPA, набрав в консоли:
sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make.
Далее установите мобильную среду через строчку в терминале:
umake android -accept-license
или umake android.После установки ярлык будет создан автоматически.
В каждом из перечисленных случае вам потребуется заблаговременно установить виртуальную машину Java и использовать терминал для написания команд. В остальном установка Андроид Студио от способа к способу имеет минимальные различия.
Источник: deviceadvice.ru
linux собрать программу — как.
Значит, просто у программы нет возможности настройки.
Дальше — make, наверное?
[ new]# ./configure
bash: ./configure: Нет такого файла или каталога
Ржунимагу
Конфигуре идёт к сорцам, если специально позаботились о том, чтобы оно там было. Строится всё, исходя из мэйкфайла, а конфигуре лишь меняет этот мэкфайл, вставляя нужные ключики, параметры условной компиляции, поддержку фич и тд.
а хулержать? Цитирую инструкцию:
18. Сборка программ
18.1 Как собрать/удалить программу из исходников? Как установить программу из tar.gz/tar.bz2?
Скорее всего в tar.gz/tar.bz2 лежит не программа, а ее исходники (иногда исходники с собранной программой).
Прежде чем ее ставить, нам необходимо ее собрать. Для этого нужно выполнить (не бросайтесь сразу это делать):
linux# ./configure
linux# make
linux# make install
Если после любого из пунктов возникли сообщения об ошибках, значит не все вышло так, как хотелось. Можно попробовать `./configure —help` для вывода опций настройки и попробовать использовать некоторые из них.
Поскольку при таком способе установки информация о том, что ставилось и куда, остается только в памяти админа (которая частенько еще какая временная , лучше для контроля этого процесса использовать checkinstall — http://checkinstall.izto.org, или похожие программы (почему выше и мы говорили не выполнять команды сразу).
После того, как вы ее установите (прочитав документацию) и настроите ее конфиг, на этапе установки программного обеспечения вместо sudo make install будете писать sudo checkinstall. Checkinstall соберет «настоящий» пакет для указанной (tgz, rpm и deb в зависимости от настроек установит его в систему и поместит в указанный в конфигурационном файле каталог (удобно для централизованного обновления нескольких машин). Удаление установленных таким образом программ осуществляется стандартными средствами дистрибутива, например, removepkg для Slackware.
Также будет полезным прочитать о том, как уменьшить размер бинарных файлов.
Если вы пренебрегли нашим советом и собрали и поставили программу не используя специальных утилит (или своего менеджера пакетов тогда нужно заново распаковать исходники (ведь вы после сборки наверняка удалили папку, в которой собирали программу сконфигурировать ее с теми же параметрами (напрягайте память но вместо make install сделать make uninstall. Если повезет, то все удалится.
делал, как написано. В ТОЧНОСТИ.
Всегда, когда читаю какие-нибудь доки (особенно — переведённые натыкаюсь на просто КУЧУ опечаток.
в корне программы должны быть файлы типа:
readme.txt
install.txt
install
или в директории doc
Там всё должно быть написано.
Только README, INSTALL и т.п. Никаких txt обычно.
Источник: zavelos.ru
Как собрать ядро linux? Сборка ядра Linux
Сборка ядра Linux
Здравствуйте, уважаемые читатели. Сегодня я расскажу о таком интересном занятии как сборка ядра Linux. Зачем может понадобиться самостоятельно собирать ядро? На самом деле причин может быть множество: необходимость задействовать дополнительные возможности ядра, оптимизировать ядро под ваш компьютер, обновить ядро до самой свежей версии. В этой статье я продемонстрирую процесс получения исходных кодов, настройки, компиляции и установки в систему ядра Linux, в рамках решения задачи включения в ядро поддержки cryptoloop(петлевые шифрующие устройства).
Получение исходного кода
В первую очередь мы должны получить исходный код, это можно сделать разными способами и из разных источников. Я предлагаю рассмотреть только два: системные репозитории, официальный сайт ядра. В репозиториях, скорее всего, будут версии ядра более старые чем он официальном сайте, но в эти исходники должны быть включены патчи и исправления от производителя вашего дистрибутива Linux. Такой подход предпочтительнее если вы не нуждаетесь в какой-то новой технологии или возможности, которая поддерживается только более новыми ядрами. Просмотреть все версии исходников ядра, которые содержатся в репозиториях вашей системы, вы можете введя в терминале(справедливо для Ubuntu Linux, в других дистрибутивах название пакета может отличаться):
apt-cache search linux-source
Команда выведет список доступных пакетов:
Как видите, у меня есть только пакет с текущей версией и пакет с версией 3.5 (на самом деле текущая версия ядра тоже 3.5). Расширить список ядер, доступных таким образом, стоит подключить дополнительные репозитории. Получить ядро мы можем командой:
sudo apt-get install linux-source
linux-source — имя пакета с исходным кодом, в вашем случае может быть другим.
После завершения работы команды в директории /usr/src появится файл, в моем случае — linux-source-3.5.0.tar.bz2. Перейдем в папку, распакуем архив и ради удобства создадим символическую ссылку:
cd /usr/src sudo tar -xjvf linux-source-3.5.0.tar.bz2 sudo ln -s linux-source-3.5.0 linux
Если же вам нужна самая свежая версия ядра, то её всегда можно скачать с сайта kernel.org. Стоит заметить, что на сайте выкладываются как стабильные версии ядер так и версии предназначенные для тестирования и доработки(обычно в их названии есть содержится аббревиатура «RC» — Release candidate). Если вы не желаете лишних проблем с системой, советую скачивать стабильную версию:
Сохраним архив с исходниками в папку /usr/src. Чтобы распаковать полученный архив вам может понадобиться установить дополнительные утилиты:
sudo apt-get install xz-utils
Теперь, как и в случае с загрузкой ядра из репозиториев, мы должны распаковать архив с исходниками и создать ссылку:
cd /usr/src sudo tar -xpJf linux-3.8.5.tar.xz sudo ln -s linux-3.8.5.tar.xz linux
Конфигурация и компиляция.
Вот мы и подошли к самому интересному. Прежде чем начать, установим несколько дополнительных пакетов:
sudo apt-get install build-essential kernel-package libncurses-dev
Будем создавать новую конфигурацию, на основе используемого системой в данный момент ядра:
cd /usr/src/linux sudo make oldconfig
Если вы конфигурируете более новую версию ядра чем есть в системе, то вполне вероятно что в ней появились параметры, которых нет в конфигурации нынешнего ядра. В таком случае программа будет просит сделать выбор вас, вы можете оставлять значения по умолчанию просто нажимая клавишу Enter. В любом случае конфигурирование ещё не завершено. Теперь мы можем выполнить нужные нам настройки через меню создания конфигурации:
sudo make menuconfig
В терминале запустится программа конфигурирования:
Здесь параметры конфигурации разделены на разделы, чтобы в них было удобнее ориентироваться. Как я уже говорил выше, мне нужно включить в ядро поддержку cryptoloop. Для этого нужно перейти в раздел «Device Drivers», а из него в подраздел «Block Devices»:
Находим параметр «Cryptoloop Support», рядом с ним стоит буква «М» что означает что поддержка шифрующих устройств будет добавлена как модуль ядра, который можно будет включить командой modprobe. Нам же надо включить поддержку данной технологии непосредственно в ядро, чтобы она поддерживалась всегда. Переводим фокус на параметр «Cryptoloop Support» и нажимаем на пробел. Буква «М» должна смениться символом «*» это означает что поддержка данной технологии будет «вшита» в ядро. Осторожно, пробел означает что технология вообще поддерживаться не будет.
Нажимаем клавишу «Tab» и нажимаем на кнопку «Exit» до тех пор пока не появится запрос на сохранение изменений:
Отвечаем «Yes». Мы успешно закончили конфигурирование!
Приступим к компиляции. Сначала удаляем файлы оставшиеся от предыдущих сборок, если вы запускаете сборку впервые выполнять эту команду не обязательно:
sudo make-kpkg clean
sudo make-kpkg -j4 —initrd —append-to-version=-mykernel kernel_image kernel_headers
-j4 — флаг, указывает какое количество потоков использовать для компиляции. Позволит сильно ускорить компиляцию на многоядерных процессорах. Цифра 4 тут указывает на 4 потока. Ставьте столько потоков сколько ядер вашего процессора «видит» система.
-mykernel — префикс указывающий что ядро было собрано вручную, можете его изменить, фактически ни на что не влияет.
Вот и начался процесс компиляции. Он может занять от 10 минут, до нескольких часов в зависимости от того насколько мощный у вас компьютер:
Установка ядра в систему
После завершения компиляции, в директории /usr/src должны появится два файла с расширением «deb» они являются установочными пакетами нашего нового ядра и установить их можно с помощью утилиты dpkg:
sudo dpkg -i linux-image-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb
sudo dpkg -i linux-headers-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb
Поздравляю! Ядро установлено, теперь система будет загружаться с этим ядром по умолчанию, но если у вас возникнут проблемы с новым ядром вы всегда можете загрузится со старым выбрав его на экране загрузки — Grub. На этом я завершаю сегодняшнюю статью и желаю успехов, вам, уважаемые читатели!
Вебинар: «Конфигурирование, сборка и установка ядра Linux»
Источник: ubuntolog.ru