64비트 우분투에서 buildozer 이용해서 Kivy 프로그램의 안드로이드 패키지(.apk 파일)를 만듭시다.


(팁)

설치할 것이 많아요. 뭐 하나 설치할 때마다 yes/no 자꾸 물어보는데 귀찮으니까 설치 명령어 실행 직후에는 엔터를 꾹 눌러 주세요. 그러면 입력 버퍼에 엔터 입력들이 들어차서 y/n 키 입력 받는 부분을 자동으로 쭉 넘어갑니다.

에러 뜨면 프로그램이 시키는대로 하거나 오류 메시지를 복사해서 구글에 검색하면 거진 해결방법이 있습니다. 다만 유닉스(리눅스) 기본 명령어 정도는 알아야겠죠.


우선 리눅스 패키지들을 괜히 한 번 업데이트 해 줍니다.

$ sudo apt update

$ sudo apt upgrade


아나콘다 파이썬을 설치합니다. 아나콘다는 최신 버전의 파이썬과 함께 널리 쓰이는 파이썬 모듈들을 기본 제공해서 복잡한 파이썬 패키지 관리를 쉽게 해 줍니다.

  1. https://www.continuum.io/downloads에서 Anaconda3 설치 파일을 다운로드 받아 실행합니다.
  2. ~/.bashrc 파일을 열어서 마지막 라인에 PATH=/user/<<사용자이름>>/Anaconda3/bin:$PATH 추가합니다.
  3. 터미널을 껐다 켭니다.

$ sudo wget https://repo.continuum.io/archive/Anaconda3-4.3.1-Linux-x86_64.sh

$ sudo bash Anaconda3-4.3.1-Linux-x86_64.sh

$ echo 'PATH=/user/<<사용자이름>>/Anaconda3/bin:$PATH' | sudo tee -a ~/.bashrc

$ exit


빌도저가 안드로이드 패키지를 빌드하기 위해서는 자바 컴파일러가 필요하기 때문에 JDK를 설치합니다. JDK 설치 방법입니다.[각주:1] (설치 중간에 무시무시한 화면으로 넘어가면서 뭐라고 뜨면 yes 선택해 주세요.)

$ sudo add-apt-repository ppa:webupd8team/java

$ sudo apt update

$ sudo apt install oracle-java8-installer


그밖에 빌도저가 좋아하는 패키지들을 깔아 줍니다. 없으면 빌도저 돌릴 때 에러 납니다.

$ sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev zlib1g-dev


이런 것들도 설치합니다. 역시 빌도저가 좋아하는 패키지들입니다. 없으면 에러까지는 아니고 Warning 일으킵니다.

$ sudo apt install autoconf automake libtool


pip는 아나콘다 같은 파이썬 패키지 관리 툴입니다. pip를 이용해서 pip 자신, kivy, bulidozer를 순서대로 설치합니다. sudo pip 하지 마세요. 이 pip 명령어들은 sudo로 실행하면 잔소리하더군요.

$ sudo apt install python-pip

$ pip install --upgrade pip

$ pip install --upgrade kivy

$ pip install --upgrade buildozer


이제 빌도저 설치법 문서에 나와 있는 대로 따라합니다. Ubuntu 16.04 (64bit)에서 명령어는 아래와 같습니다.

$ sudo pip install --upgrade cython==0.21

$ sudo dpkg --add-architecture i386

$ sudo apt-get update

$ sudo apt-get install build-essential ccache git libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 python2.7 python2.7-dev openjdk-8-jdk unzip zlib1g-dev zlib1g:i386


설치는 끝입니다. Kivy 프로그램의 프로젝트 폴더를 만들어 봅시다.

$ mkdir hi

$ cd hi

$ touch main.py

$ sudo nano main.py


main.py에 Kivy 프로그램의 소스코드를 입력합니다.

from kivy.app import App
from kivy.uix.button import Button

class Hello(App):
	def build(self):
		btn = Button(text='Hello World')
		return btn

Hello().run()


마지막으로 Kivy 프로젝트 폴더 안에서 빌도저를 실행합니다. 참고로 buildozer는 sudo로 실행하면 안 돼요. 잔소리합니다.

$ buildozer init

$ buildozer android debug


buildozer init 명령어를 실행시킨 폴더 안에 buildozer.spec이라는 빌도저 빌드 설정 파일이 생깁니다. 이 파일의 내용을 편집해서 빌드할 프로그램의 이름, 버전, 의존관계 따위를 설정할 수 있습니다.


buildozer init을 수행한 뒤에 buildozer android debug의 명령어로 APK 컴파일합니다. 이 때 필요한 안드로이드 SDK나 JDK를 자동으로 설치하기 때문에 처음으로 컴파일하는 중이라면 오래 걸릴 수 있습니다.


여기에서 hostpython 오류가 발생하면 다음 게시물을 참고해 주세요.

2017/05/17 - [Methods] - buildozer 빌드시 hostpython 오류


그렇게 해서 빌드가 성공하면 bin 폴더에 결과물인 .apk 파일이 생성되어 있는 것을 확인할 수 있습니다.


  1. https://askubuntu.com/questions/673633/installing-java-on-ubuntu [본문으로]
Top