본문 바로가기
SW 개발/Android

Android에서 Python 실행 (SL4A와 Termux 활용)

by Kibua20 2020. 8. 29.

Python은 Google Android OS에서 공식적으로 지원하고 언어가 아닙니다.  하지만 Open source의 SL4A라는 Project, Kivy Project와 함께 Termux와 같은 Linux Emulator를 통해서 Python을 설치하고 실행할 수 있습니다. SL4A를 Android Playstore에서 검색하면 QPython 3L, Pydroid3와 같은 App을 다운로드할 수 있습니다.   본 포스팅은 SL4A는 유튜브 동영상으로 설명을 대신하고 Termux에서 Python 사용하는 사례를 설명하고자 합니다. 

 

SL4A 기반의 app과 Termux에서 Python을 실행하는 경우에 대한 비교는 아래와 같이 정리할 수 있습니다.

SL4A 기반의 Python (e.g. QPython 3L) Linux Emulator(e.g. Termux)에서  Python 실행
Android App을 다운로드 하고 설치   Termux에서 Python 설치 후 py 파일 실행
Python script 관리 및 실행하는 전용 GUI 지원 Command line interface만 지원
부팅 시 script 자동 실행 미지원 부팅 시 script 자동 실행 지원 및 API 지원
속도 느림 (특히 Rooting 단말인 경우 초반 script 로딩 지연) 속도 빠름 (루팅 단말, Non-rooting 단말 동일)
Android 기능과 연동하여 팝업 표시, TTS 기능 사용 가능 
 e.g)  Import droid
안드로이드와 연동되지 않음
Termux: API 사용 시 일부 가능
루팅 필요 없음 루팅 필요 없음
루팅 단말에서 sudo 실행 가능 루팅 단말에서 sudo 실행 가능

 

1. QPython 3L에서 Python 설치 및 실행

QPython 3L은 아래 동영상을 참고해주세요.  QPython 3L 앱에서 Python Py 파일을 실행과 간단한 Editor를 지원합니다.  앱 설치 후 샘플 Py 프로그램을 확인할 수 있습니다. 

SL4A 기반의 QPython 3L : 출처: https://www.youtube.com/watch?v=XD0N-ZMNfFQ

 



2. 스마트 폰 Linux Emualtor(Termux) 설치 후 Python 실행

Termux에 대한 설치 및 개발 환경 설정은 이전 포스팅을 확인 부탁드립니다.  Termux의 터미널 환경 설정을 완료한 상태에서는  Termux 터미널에서 pkg  install python 명령어를 사용해서 Python을 설치하면 3.8 버전이 설치됩니다.  우분투와는 달리 Python 명령어가 Python 3.8 버전으로 symlink가 되어 있으며, pip로 같이 설치됩니다. 

 

#Termux에서 Python 설치 

$ pkg install python

  →python 3.8 버전 설치 (관련 lib까지 설치됩니다.)

$ pip3 install {module name}

  →python 모듈 update

Android 스마트폰 Termux에서 Python 설치
Termux에서는 Python 3.8.5 버전과 pip 20.1.1  설치됨

pip 명령어로 requests 모듈을 설치하면 우분투와 동일하게 whl 파일을 다운로드 자동 설치합니다. 

pip 명령어로 python module 업데이트

 python을 실행하고 code를 넣으면 PC 환경과 동일하게 구동됩니다.  Python을 빌드 내용을 보면 CLang 9.0.8으로 컴파일 되어 있을 알 수 있습니다. 

python 파일 구동

Python Web framework인 Flask를 pip를 설치하고 아래와 같이 구동하면 스마트 폰에서 간단한 webserver도 만들수 있습니다. 주의해야 할 점은 안드로이드오 리눅스와 동일하게 Port 1000 이하는 root 권한이 있어 사용할 수 있기 때문에 그 이후 port를 사용해야 합니다.  아래 Flask web 서버에서 Local IP 192.168.219.115:5000을 사용하고 있고 접속에 대한 200 OK 응답을 보내고 있습니다.

 

$ pip install flask

$ python [your server.py]

Android 스마트 폰에서 Python Webserve flask 구동

 

관련 글

[모바일 SW 개발/Android] - Android 에서 리눅스 App 실행: Linux Terminal Emulator (Termux) 활용

[개발환경/Web Server] - 우분투 20.04에서 Flask를 서비스 등록: 부팅 시 자동 실행

[개발환경/Web Server] - Python: Web Framework Flask 사용하기

[개발환경/Web Server] - 우분투 20.04에서 lighttpd의 fastcgi 개념 및 사용법

[모바일 SW 개발/Python] - 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러

[모바일 SW 개발/Python] - Python code 숨기는 방법: PyInstaller로 실행 파일 만들기

[개발환경/우분투] - 우분투 작업 스케줄러 Crontab 사용법, 디버깅, 주의 사항

[개발환경/Web Server] - 우분투 20.04에서 Web 서버 설치 방법 (apache2, tomcat9)

[개발환경/윈도우와 WSL] - 윈도우용 MobaXterm - SSH 및 X-Server 지원

[개발환경/우분투] - 리눅스 시스템 정보 확인 방법 (우분투 버전, gcc 버전, libc 버전)

[모바일 SW 개발/Android] - Ubuntu에서 Android 10 빌드하기

[개발환경/우분투] - Ubuntu 20.04에서 sshfs 를 이용한 원격 폴더 마운트




댓글