Что нам понадобится?
Первое, что нам понадобится — андроид телефон со установленным на него приложением Termux (есть в Google Play). Для полноценной работы с терминалом, нам нужно достаточно памяти. У меня с десятками установленных пакетов приложение занимает 1.5 ГБ памяти.
Так же, для комфортного кодинга желательно, чтобы телефон был с поддержкой OTG, и у вас была клавиатура с подключением по USB, чтобы писать код на клавиатуре (куда удобнее). Если уж нет этого, то качаем клавиатуру Hacker's Keyboard. В ней есть клавиша Ctrl, что нам важно.
Почему именно Termux?
Termux имеет в арсенале достаточно пакетов для работы с языками программирования: C/C++, Python, Golang, PHP, Lua.
Так же присутствуют базы данных, я знаю только о mariadb и postgresql.
Начало
При каждом запуске приложения мы видим приветствие, в котором указаны основные команды для работы с терминалом:
- pkg search — команда для поиска пакетов. Пример: pkg search vim
- pkg install — команда для установки пакета. Пример: pkg install vim
Для кодинга нам понадобится текстовой редактор. Здесь есть разные варианты, я выбирал Vim и вкратце расскажу, как с ним работать.
Установка vim:
$ pkg install vim
Для примера работы с vim напишем «Hello World» на С.
$ vim main.c
После этого запустится Vim. Чтобы начать писать код, нужно нажать на клавишу «i».
Пишем код:
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
После этого нажимаем на клавишу «Esc», ставим двоеточие и пишем wq (":wq"). Это сохранит наш файл и изменения в нём (w — write) и закроет его (q — quit).
Важно знать!
w — сохранить изменения в файле
wa — сохранить изменения во всех файлах
q — закрыть файл
qa — закрыть все файлы
wq — сохранить изменения и закрыть файл
Теперь нам нужно скомпилировать этот код. Для начала установим компилятор:
$ pkg install gcc
Далее пишем следуюющее:
$ gcc -Wall main.c -o program
main.c — файл с нашим кодом
program — наша програмка.
Теперь можем запустить нашу програмку и посмотреть, работает ли она:
$ ./program
или
$ sh program
Результат:
Hello World!
Конец
Эта была вводная статья по программированию на телефоне. Пишите, пожалуйста, в комментариях, нужно ли продолжение: работа с базами данных, примеры кода и их запуска на других ЯП, работа с самым терминалом и так далее.
Комментарии (35)
Sultansoy
03.12.2017 20:37Я иногда по пути на работу пишу на мобилке, используя decoder. Достаточно удобно, чтобы проверять мелкие нюансы. Раньше на скучных парах, когда не давали сидеть за ноутбуком, тоже писал код на телефоне на CppDroid. На безрыбии, как говорится, и рак рыба.
kovserg
03.12.2017 21:17Тоже пробывал использовать телефон как компьютер. Оказалось что одновременно подключить BT клавиатуру и BT мышь андройду не подсилу. Работает только по очереди. По SSH для vim и mc достаточно клавиатуры. А вот всякие IDE без мыши очень печально выглядят.
telegamochka
04.12.2017 13:53Есть синезубые мини-клавиатуры со встроенным тачпадом. Вполне удобное решение.
asergrisa
03.12.2017 21:23Не советую использовать `pkg`, это всего лишь обертка над `apt` и `dpkg`, используйте лучше их.
SenDu Автор
03.12.2017 21:25У меня клавиатура и мышка подключаются через один приёмник, и это работает. А вот через ВТ да, не получится.
kovserg
03.12.2017 22:02На Xiaomi-mi4 они подключаются одновременно, но работают очень забавно. Видно как идёт борьба за то кто главный. То мышь побеждает, то клавиатура. Работать так всё равно не возможно. На других телефонах вообще только строго по очереди либо мышь либо клавиатура. При этом в ubuntu и в винде такое подключение работает как часы, а в андройде это просто позор и ужас.
SenDu Автор
03.12.2017 22:15У меня Xiaomi Redmi Note 3 Pro. Идеально работает. Возможно проблемы в самом комплекте.
kovserg
04.12.2017 02:53Что-то мне подсказывает что идеально не работает
Вот что пишется в лог. (Подключена BT клава и пытается подключить мышь)
D/BluetoothAdapterProperties( 2279): Before Update: mProfilesConnecting = 0, mProfilesConnected = 1, mProfilesDisconnecting = 0 D/BluetoothAdapterProperties( 2279): Return false: mProfilesConnecting = 1, mProfilesConnected = 1, mProfilesDisconnecting = 0
После чего пишет еще много чего и даже общается с мышью, но потом:
I/[BT][HID][JNI]( 2279): MBTEVT_HID_HOST_CONNECT_FAIL
Возможно найдутся те кто знают java и расскажут мне где я не прав, но меня лично смущают такие строки:
class AdapterProperties { ... private boolean updateCountersAndCheckForConnectionStateChange(int state, int prevState) { ... switch (state) { case BluetoothProfile.STATE_CONNECTING: mProfilesConnecting++; return (mProfilesConnected == 0 && mProfilesConnecting == 1); ...
Если уже кто-то подключен mProfilesConnected=1 то всегда будет return false или я чего-то не понимаю?
kovserg
04.12.2017 03:51Комплект будет работать. Т.к. оно одно устройство. А мышь и клавиатура отдельно как два устройства — нет.
Glycosylase
04.12.2017 00:42О, статья о моем любимом приложении! Пишите еще! И было бы круто, если бы написали о том, как коннектиться под Termux под ssh к стационарной машине. Для меня это пока только мечта.
Bookvarenko
04.12.2017 09:05Интересная статья. Частенько приходится править код игр, чтобы они прилично выглядели и удобно рулились на десктопе и в мобильнике одновременно.
barsuksergey
04.12.2017 11:53Уже на втором подряд андроиде ставлю Termux. Установил Golang и Beego, PHP с composer, Symfony, Vim, open-ssh. Настроил ssh-доступ к домашнему компу. Всё работает стабильно, Go компилится, серверы поднимаются.
В общем, доступны все плюшки для обдумывания в долгом пути простеньких жизненных задач, накидывания черновиков, подручного интерпретатора при чтении книг.
zabbius
04.12.2017 13:10Не сравнивали с linuxdeploy?
PUNK778
04.12.2017 16:02что там сравнивать? У меня на планшете( экран 8') Debian стоит в чруте. Запускаю через LD+Xserver XSDL+Simple Protocol Player(если звук нужен). Стоит QT Creator(можно Eclipse или NetBeans заюзать или ещё много чего. В репах 50к пакетов.). Всякие termux-ы и aide рядом не стояли. Желательно конечно девайс помощнее.
Crandel
04.12.2017 13:46Не обязательно хакерская клавиатура, гугл тоже удобна, ведь в термуксе можно включить отображение дополнительных клавиш. только F1-12 недоступен, очень не хватает.
В отпуске без ноута дико захотелось Rust поизучать)
Скринtelegamochka
04.12.2017 13:58Когда мне нужно было на мобильнике доработать небольшое игровое приложение, я использовала AIDE. В качестве клавиатуры использовала маленькую bt-клавиатуру со встроенным тачпадом.
Для работы в дороге с Unity3D портировала на очки Epson Moverio BT-200 VNC-клиент: github.com/YanaArtis/ARtisVNC
Правда, руки так и не дошли устранить небольшую, но досадную ошибку :(
DmitryLytkin
04.12.2017 16:02Продолжайте!
Отличное приложение. Не раз выручало, когда нужно было подключиться по ssh к хосту.
Так же есть полноценная возможность работать с GIT'ом.
andreyorst
04.12.2017 16:03Тоже возникала необходимость в программировании "на ходу". Часто бывало что идея о том, как решить какую-нибудь заковырку с работы, появлялась в голове во время пребывания в общественном транспорте, и записать ее необходимо было, что называется прямо здесь и сейчас, но, стоя в метро, использовать ноутбук, как правило, неудобно.
Стал искать способ как писать код на телефоне и наткнулся на termux. После того как обнаружил что в термуксе есть и clang и neovim (который я использую на работе как основной редактор уже довольно долгое время) очевидным решением стало перенести свой рабочий конфиг на телефон. Примечательно что работает всё — плагины (некоторым плагинам пришлось подсовывать свои пути к библиотекам, в частности deoplete_clang, из за специфики организации структуры папок внутри фс термукса), автодополнение, переход по тегам и прочие вкусности. В итоге телефон превратился в полноценный инструмент для работы.
Вопросом было также какой клавиатурой пользоваться, у стандартной нехватает кнопок для комфортного пользования вимом. В термуксе можно включить дополнительный ряд наэкранных кнопок, но тем не менее он неудобен. Остановился на полноразмерном режиме hackers keyboard. К сожалению данная клава особо не разрабатывается, а активных форков я не нашел.
Под спойлером скриншот неовима с исходным текстом небольшого парсера, который я набросал как раз в метро когда-то пока ехал на работу.
Скриншот (осторожно, он здоровый)iLi0ni
04.12.2017 17:39Вот у одного человека были мучения
Тот кто хоть раз пробовал писать код со стандартной клавы Андроида наверное также как и я испытывал немыслимые судроги, страшные мучения и желание разбить девайс о ближайшее дерево. В итоге я написал свою клавиатуру для кодинга.
Подробнее о клавиатуре на 4pda
Может кому пригодится, ежели не клава, так идея
kovserg
04.12.2017 19:26Потому что карманные не удобны
Только если такоеBookvarenko
04.12.2017 19:39Кстати, что там с затеей Октодон? geektimes.ru/company/octodon/blog/286096
Pro-invader
Сейчас напишут, зачем писать на телефоне, это неудобно и т.д.
Продолжайте, конечно!
SenDu Автор
Спасибо! Это и правда не удобно, но если нет пк рядом, то почему бы и нет? Всякое в жизни бывает.
david_mz
На телефоне неудобно, но вот на хромбуках (клавиатура, экран, стоит копейки) этот termux даёт практически полноценный линукс для разработки и это круто.
pav5000
На хромбук же вроде можно поставить Линукс нативно? Или ChromeOS очень удобная?