안드로이드에서 코딩 - andeuloideueseo koding

언젠가, 태블릿 PC에서도 프로그래밍을 해 볼 수 있겠다는 생각을 해 본적이 있습니다. 그때는 그냥 생각에 그쳤지만, 어쩌다 보니 실제로 할 기회가 생겼습니다. 기왕 하는 거, 어디까지 할 수 있을까 하는 마음으로 가 봅시다.

Android용 IDE

Play Store에는 수많은 개발 도구들이 올라와 있습니다. 이미 2012에 Android Java를 위한 AIDE가 출시되어 아직까지도 업데이트되는 중입니다. 탭으로 하려는 게 PS나 간단한 스크립트 작성이라면 마켓에서 코드 에디터 하나 받아 사용하면 충분할 정도가 되었습니다. 제약이 좀 있지만  Visual Studio Code Web도 쓸만합니다. 최근 Python 코딩에는 PyDroid를 사용하고 있습니다. 웹개발을 하신다면 Spck Code Editor 를 추천합니다.

Termux

하지만 본격적인 웹 프론트, 서버 개발을 위해 결국 UNIX 스타일의 Shell 환경이 필요할 때가 옵니다. 이럴 때는 Termux가 최적의 선택입니다.

안드로이드에서 코딩 - andeuloideueseo koding
이미지 클릭 시 공식 홈페이지로 이동

Termux는 Android 터미널 에뮬레이터입니다. Android는 Linux 기반이며, 어플리케이션에서 내장 코드를 호출하는 것이 가능합니다. 이를 활용해서, Termux에서는 프로그램을 실행하는 Linux 함수 execve()를 실행하여 표준 입출력을 통해 실제 CLI 환경에서 작업하는 것처럼 구현하였습니다. 다만 Linux 배포 패키지를 그대로 활용할 수는 없는데, Android는 시스템 파일 접근을 허용하지 않으며 chroot를 사용하려면 루팅이 필요하므로 일반적으로는 FHS를 따를 수 없기 때문입니다. 그래서 Termux에서는 직접 포팅한 패키지를 배포하여 이러한 문제를 해결하고 있습니다.

Termux | F-Droid - Free and Open Source Android App Repository

Terminal emulator with packages

안드로이드에서 코딩 - andeuloideueseo koding
Free and Open Source Android App Repository

안드로이드에서 코딩 - andeuloideueseo koding

위 페이지에서 설치할 수 있습니다. F-Droid 어플 설치할 필요는 없고 해당 페이지에서 직접 설치 가능합니다. Play Store에도 Termux가 있지만, Android 버전 문제로 더 이상 업데이트되고 있지 않으며 개발자도 해당 사항을 경고하고 있으므로 위 링크나 GitHub 페이지를 통하여 설치하는 것이 좋습니다.

안드로이드에서 코딩 - andeuloideueseo koding
Termux 실행 화면

기본적으로 bash나 zsh 등의 터미널 프로그램에서 사용할 수 있는 명령어는 대부분 사용할 수 있고, Termux에서 자체적으로 제공하는 명령어도 있습니다.

Termux Repo Setup

패키지 설치 시 오류가 발생하는 경우가 있습니다. Mirror Server와의 연결이 안 되어 있기 때문인데, pkg install 등이 작동하지 않는다면 다음 명령어를 사용합시다.

termux-change-repo
안드로이드에서 코딩 - andeuloideueseo koding
명령어 실행 시

셋 모두 체크합시다. 터치 조작도 가능합니다.

안드로이드에서 코딩 - andeuloideueseo koding

여러 Repository 중 되는 걸로 설정하면 됩니다. pkg updatepkg upgrade가 정상적으로 작동하면 됩니다.

Termux Storage Setup

개발 자체는 위 콘솔만으로도 충분히 가능하지만, IDE 어플 등을 사용하려면 내장 메모리와 연결할 필요가 있다. 다음 명령어를 실행합시다.

termux-setup-storage

위 명령어를 실행 시 Android 기기의 내장 그래픽 경로의 심볼릭 링크를 현재 폴더에 생성합니다.

It appears that directory '~/storage' already exists. This script is going to rebuild its structure from scratch, wiping all dangling files. The actual storage content IS NOT going to be deleted.

storage 폴더가 이미 있는 경우 위와 같은 경고를 출력합니다. 내용이 삭제되는 것이 아니며 남아있는 불완전한 데이터만 삭제한다는 뜻입니다. 생성된 storage 디렉토리 내용은 다음과 같습니다.

안드로이드에서 코딩 - andeuloideueseo koding
Termux storage 폴더에 나타나는 디렉터리 -> 연결된 실제 디렉터리
안드로이드에서 코딩 - andeuloideueseo koding
storage 폴더 내의 shared 폴더. SD카드 내의 파일을 그대로 볼 수 있다.

이제 위 폴더에서 작업하면 다른 어플과도 작업 내역을 공유할 수 있습니다.

💡

550 이상으로 권한 상승을 원하는 파일은 storage 폴더 밖으로 빼서 사용해야 합니다!

활용 예시

안드로이드에서 코딩 - andeuloideueseo koding
왼쪽의 코드 에디터는 PyDroid

참고

패키지 관리 도구로 pkg, dpkg, nano, apt,

termux-setup-storage
0,
termux-setup-storage
1를 사용할 수 있다. 설치 및 사용은 여타 UNIX 계열에서의 방식과 같습니다. 다만 apt 대신 pkg 사용을 권장합니다.

Package Management - Termux Wiki

안드로이드에서 코딩 - andeuloideueseo koding
Termux Wiki


GitHub - termux/termux-app: Termux - a terminal emulator application for Android OS extendible by variety of packages. - GitHub - termux/termux-app: Termux - a terminal emulator application for Android OS extendible by variet...

또 무슨 바람이 들어서인지, 태블릿으로 코딩을 해보고 싶다는 생각이 들었습니다. 가벼운 작업을 할때는 무거운 노트북을 들고다니는 것보다 가볍게 태블릿과 휴대용 키보드를 들고 다니면 효율적이지 않을까? 라는 생각 때문이었습니다.

제 이런 생각에 뽐뿌를 집어 넣어준 첫번째 계기는 삼성 갤럭시 시리즈에 들어있는 Linux on Dex 때문이었습니다. 휴대폰에 모니터를 연결해서 코딩을 한다니! 매력적이다! 라는 생각이 가장 컸습니다. 게다가 갤럭시 시리즈에 LoD를 설치하면 기본적으로 탑재된 프로그램이 Visual Studio Code와 IntelliJ라고 하니, 누가 봐도 개발자를 위해서 만들어졌구나! 싶었습니다.

그러나

The Linux on DeX app will still be available to registered beta users on the Google Play store until February 2020.

NOTE – Linux on DeX beta will not be supported on Android 10 beta. Once you update your device to Android OS 10, you will not be able to perform a version rollback to Android Pie. If you decide to update your device to Android 10 beta, we recommend backing up data first.

네, LoD 공식 페이지에서 2020년 2월 이후에 지원 종료를 하고, AOS 10 이상부터는 더이상 업데이트 계획이 없음을 밝혔습니다. 😭 참 아쉬운 부분이 아닐 수 없었는데요. 아무래도 안드로이드 버젼 업데이트마다 유지 보수를 해야 하는 점과, 태블릿으로 Linux를 실행하는 것에 대한 수요가 적다보니 내려진 결정 같습니다.

대안이 있을까?

해외 사이트에서는 위와 같은 대안들을 제시하고 있지만, 사실 이거다 싶은 뾰족한 무언가가 있어 보이지는 않습니다. 오픈 소스로 공개된 것들도 있어서 살펴보았지만 다들 업데이트가 정기적으로 이루어지지 않고 있는듯 보이며, 또한 앱도 불안정해서 PlayStore에서 낮은 평점을 받는 경우가 수두룩한 것을 알 수 있었습니다.

대안 2: 클라우드 서비스

대안을 찾던 도중 세가지 대안을 생각해볼 수 있었습니다. AWS Cloud9, Goorm IDE, Visual Studio Online 이렇게 세가지 입니다.

아직 세가지 서비스를 모두 써보지는 않았습니다. 그래서 그냥 가볍게 살펴본 부분만 이야기 하고자 합니다.

  • Goorm IDE ☁
    • 무료로 이용이 가능하다.
    • 유료 플랜도 가격대가 저렴하다.
  • AWS Cloud9 ☁️
    • AWS 서비스이니만큼 AWS와 연동이 유연하다.
  • Visual Studio Online 🐛
    • VS code의 웹 버젼이라고 생각하면 좋다.
    • Azure와 연동이 필요하다.

사실 저 같은 경우는 주로 사용하는 IDE 툴이 VS code라서 VS Online을 쓰는 것이 좀 더 마음이 갑니다. 익숙한 인터페이스에서 작업한다면 퍼포먼스도 잘 나오지 않을까? 하는 기대가 됩니다. :)

결론

태블릿에서 개발하는 것에 대한 로망은 아직 접히지 않았습니다. 다만 이제 남은 대안으로서 클라우드 서비스를 이용한 코딩을 경험해보는 일이 필요합니다. 아마 다음 블로그에서는 구름, Cloud9, VS Online 세가지를 비교하는 글을 쓰고자 합니다. 집에서 유튜브만 보고 있는 동생의 아이패드를 빌려서 코딩 경험을 공유하도록 하겠습니다. 다음 글에서 만나요. 😃