Программирование на телефоне используя эмулятор терминала Termux

    Приветствую читателей! В этой статье я расскажу о том, как можно, имея android телефон, писать программы. Говорю сразу — root права не нужны.

    Что нам понадобится?


    Первое, что нам понадобится — андроид телефон со установленным на него приложением Termux (есть в Google Play). Для полноценной работы с терминалом, нам нужно достаточно памяти. У меня с десятками установленных пакетов приложение занимает 1.5 ГБ памяти.
    Так же, для комфортного кодинга желательно, чтобы телефон был с поддержкой OTG, и у вас была клавиатура с подключением по USB, чтобы писать код на клавиатуре (куда удобнее). Если уж нет этого, то качаем клавиатуру Hacker's Keyboard. В ней есть клавиша Ctrl, что нам важно.



    Почему именно Termux?


    Termux имеет в арсенале достаточно пакетов для работы с языками программирования: C/C++, Python, Golang, PHP, Lua.
    Так же присутствуют базы данных, я знаю только о mariadb и postgresql.

    Начало


    image
    При каждом запуске приложения мы видим приветствие, в котором указаны основные команды для работы с терминалом:
    • 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
      +4
      Сейчас напишут, зачем писать на телефоне, это неудобно и т.д.
      Продолжайте, конечно!
        +2
        Спасибо! Это и правда не удобно, но если нет пк рядом, то почему бы и нет? Всякое в жизни бывает.
          0
          На телефоне неудобно, но вот на хромбуках (клавиатура, экран, стоит копейки) этот termux даёт практически полноценный линукс для разработки и это круто.
            0
            На хромбук же вроде можно поставить Линукс нативно? Или ChromeOS очень удобная?
        +6
        Зачем писать на телефоне? Ведь это и неудобно, и т.д.!
          +6
          Это и правда не удобно, но если нет пк рядом, то почему бы и нет? Всякое в жизни бывает.
            +2

            рекурсия )
            а из нее выход будет? /sarcazm

          +1
          Я иногда по пути на работу пишу на мобилке, используя decoder. Достаточно удобно, чтобы проверять мелкие нюансы. Раньше на скучных парах, когда не давали сидеть за ноутбуком, тоже писал код на телефоне на CppDroid. На безрыбии, как говорится, и рак рыба.
            0
            Тоже пробывал использовать телефон как компьютер. Оказалось что одновременно подключить BT клавиатуру и BT мышь андройду не подсилу. Работает только по очереди. По SSH для vim и mc достаточно клавиатуры. А вот всякие IDE без мыши очень печально выглядят.
              0
              Есть синезубые мини-клавиатуры со встроенным тачпадом. Вполне удобное решение.
              0
              Не советую использовать `pkg`, это всего лишь обертка над `apt` и `dpkg`, используйте лучше их.
                0
                У меня клавиатура и мышка подключаются через один приёмник, и это работает. А вот через ВТ да, не получится.
                  0
                  На Xiaomi-mi4 они подключаются одновременно, но работают очень забавно. Видно как идёт борьба за то кто главный. То мышь побеждает, то клавиатура. Работать так всё равно не возможно. На других телефонах вообще только строго по очереди либо мышь либо клавиатура. При этом в ubuntu и в винде такое подключение работает как часы, а в андройде это просто позор и ужас.
                    0
                    У меня Xiaomi Redmi Note 3 Pro. Идеально работает. Возможно проблемы в самом комплекте.
                      0
                      Что-то мне подсказывает что идеально не работает
                      Вот что пишется в лог. (Подключена 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 или я чего-то не понимаю?

                        0
                        Комплект будет работать. Т.к. оно одно устройство. А мышь и клавиатура отдельно как два устройства — нет.
                    0
                    Пишите дальше, пожалуйста! Очень интересно.
                      0
                      Благодарю. В скором времени допишу продолжение.
                      0
                      О, статья о моем любимом приложении! Пишите еще! И было бы круто, если бы написали о том, как коннектиться под Termux под ssh к стационарной машине. Для меня это пока только мечта.
                        0
                        Спасибо. Хорошо, обязательно напишу об этом.
                          0
                          Для меня это пока только мечта.

                          Это ведь очень просто :)
                          0

                          Интересная статья. Частенько приходится править код игр, чтобы они прилично выглядели и удобно рулились на десктопе и в мобильнике одновременно.

                            0
                            Уже на втором подряд андроиде ставлю Termux. Установил Golang и Beego, PHP с composer, Symfony, Vim, open-ssh. Настроил ssh-доступ к домашнему компу. Всё работает стабильно, Go компилится, серверы поднимаются.
                            В общем, доступны все плюшки для обдумывания в долгом пути простеньких жизненных задач, накидывания черновиков, подручного интерпретатора при чтении книг.
                              0
                              Не сравнивали с linuxdeploy?
                                0
                                что там сравнивать? У меня на планшете( экран 8') Debian стоит в чруте. Запускаю через LD+Xserver XSDL+Simple Protocol Player(если звук нужен). Стоит QT Creator(можно Eclipse или NetBeans заюзать или ещё много чего. В репах 50к пакетов.). Всякие termux-ы и aide рядом не стояли. Желательно конечно девайс помощнее.
                                0

                                Не обязательно хакерская клавиатура, гугл тоже удобна, ведь в термуксе можно включить отображение дополнительных клавиш. только F1-12 недоступен, очень не хватает.
                                В отпуске без ноута дико захотелось Rust поизучать)


                                Скрин

                                image

                                  0
                                  TerminalIDE не пробовали?
                                    0
                                    Когда мне нужно было на мобильнике доработать небольшое игровое приложение, я использовала AIDE. В качестве клавиатуры использовала маленькую bt-клавиатуру со встроенным тачпадом.

                                    Для работы в дороге с Unity3D портировала на очки Epson Moverio BT-200 VNC-клиент: github.com/YanaArtis/ARtisVNC
                                    Правда, руки так и не дошли устранить небольшую, но досадную ошибку :(
                                      0
                                      Продолжайте!
                                      Отличное приложение. Не раз выручало, когда нужно было подключиться по ssh к хосту.
                                      Так же есть полноценная возможность работать с GIT'ом.
                                        0

                                        Тоже возникала необходимость в программировании "на ходу". Часто бывало что идея о том, как решить какую-нибудь заковырку с работы, появлялась в голове во время пребывания в общественном транспорте, и записать ее необходимо было, что называется прямо здесь и сейчас, но, стоя в метро, использовать ноутбук, как правило, неудобно.
                                        Стал искать способ как писать код на телефоне и наткнулся на termux. После того как обнаружил что в термуксе есть и clang и neovim (который я использую на работе как основной редактор уже довольно долгое время) очевидным решением стало перенести свой рабочий конфиг на телефон. Примечательно что работает всё — плагины (некоторым плагинам пришлось подсовывать свои пути к библиотекам, в частности deoplete_clang, из за специфики организации структуры папок внутри фс термукса), автодополнение, переход по тегам и прочие вкусности. В итоге телефон превратился в полноценный инструмент для работы.


                                        Вопросом было также какой клавиатурой пользоваться, у стандартной нехватает кнопок для комфортного пользования вимом. В термуксе можно включить дополнительный ряд наэкранных кнопок, но тем не менее он неудобен. Остановился на полноразмерном режиме hackers keyboard. К сожалению данная клава особо не разрабатывается, а активных форков я не нашел.


                                        Под спойлером скриншот неовима с исходным текстом небольшого парсера, который я набросал как раз в метро когда-то пока ехал на работу.


                                        Скриншот (осторожно, он здоровый)

                                        image

                                          +1
                                          Вот у одного человека были мучения
                                          Тот кто хоть раз пробовал писать код со стандартной клавы Андроида наверное также как и я испытывал немыслимые судроги, страшные мучения и желание разбить девайс о ближайшее дерево. В итоге я написал свою клавиатуру для кодинга.

                                          Подробнее о клавиатуре на 4pda
                                          Может кому пригодится, ежели не клава, так идея
                                            0
                                            Идея хорошая :) А почему не купить «железную» карманную bt-клавиатуру?
                                            0
                                            Потому что карманные не удобны
                                            Только если такое
                                            image

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

                                          Самое читаемое