Android 태블릿으로 개발해 보자
???: 이러시는 이유가 있을 거 아니에요
들어가며
언젠가, 태블릿 PC에서도 프로그래밍을 해 볼 수 있겠다는 생각을 해 본적이 있습니다. 그때는 그냥 생각에 그쳤지만, 어쩌다 보니 실제로 할 기회가 생겼습니다. 기왕 하는 거, 어디까지 할 수 있을까 하는 마음으로 가 봅시다.
Android용 IDE
Play Store에는 수많은 개발 도구들이 올라와 있습니다. 이미 2012에 Android Java를 위한 AIDE가 출시되어 아직까지도 업데이트되는 중입니다. 탭으로 하려는 게 PS나 간단한 스크립트 작성이라면 마켓에서 코드 에디터 하나 받아 사용하면 충분할 정도가 되었습니다. 제약이 좀 있지만 Visual Studio Code Web도 쓸만합니다. 최근 Python 코딩에는 PyDroid를 사용하고 있습니다. 웹개발을 하신다면 Spck Code Editor 를 추천합니다.
Termux
하지만 본격적인 웹 프론트, 서버 개발을 위해 결국 UNIX 스타일의 Shell 환경이 필요할 때가 옵니다. 이럴 때는 Termux가 최적의 선택입니다.
Termux는 Android 터미널 에뮬레이터입니다. Android는 Linux 기반이며, 어플리케이션에서 내장 코드를 호출하는 것이 가능합니다. 이를 활용해서, Termux에서는 프로그램을 실행하는 Linux 함수 execve()
를 실행하여 표준 입출력을 통해 실제 CLI 환경에서 작업하는 것처럼 구현하였습니다. 다만 Linux 배포 패키지를 그대로 활용할 수는 없는데, Android는 시스템 파일 접근을 허용하지 않으며 chroot
를 사용하려면 루팅이 필요하므로 일반적으로는 FHS를 따를 수 없기 때문입니다. 그래서 Termux에서는 직접 포팅한 패키지를 배포하여 이러한 문제를 해결하고 있습니다.
위 페이지에서 설치할 수 있습니다. F-Droid 어플 설치할 필요는 없고 해당 페이지에서 직접 설치 가능합니다. Play Store에도 Termux가 있지만, Android 버전 문제로 더 이상 업데이트되고 있지 않으며 개발자도 해당 사항을 경고하고 있으므로 위 링크나 GitHub 페이지를 통하여 설치하는 것이 좋습니다.
기본적으로 bash나 zsh 등의 터미널 프로그램에서 사용할 수 있는 명령어는 대부분 사용할 수 있고, Termux에서 자체적으로 제공하는 명령어도 있습니다.
Termux Repo Setup
패키지 설치 시 오류가 발생하는 경우가 있습니다. Mirror Server와의 연결이 안 되어 있기 때문인데, pkg install 등이 작동하지 않는다면 다음 명령어를 사용합시다.
termux-change-repo
선택지 모두 체크합시다. 터치 조작도 가능합니다.
여러 Repository가 표시되는데, 처음 것부터 해 보면서 되는 걸로 설정하면 됩니다. pkg update
및 pkg 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 디렉터리에서 작업하면 다른 어플과도 작업 내역을 공유할 수 있습니다.
참고
패키지 관리 도구로 pkg
, dpkg
, nano
, apt
, apt-get
, apt-cache
를 사용할 수 있다. 설치 및 사용은 여타 UNIX 계열에서의 방식과 같습니다. 다만 apt
대신 pkg
사용을 권장합니다.