구름IDE에서 빌드하기 + 폰에 설치하기
참고영상: https://youtu.be/Pi510YawopE
1. 구름 컨테이너(가상머신) 만들기
1. 구름IDE가 처음이시라면 회원가입 후 [콘솔로 가기]를 눌러 콘솔에 접속해주세요
2. [새 컨테이너]를 만들어줍니다.
[새 컨테이너]를 누르면 만들 수 있습니다.
새 컨테이너를 클릭합니다.
적당히 이름을 부여합니다.
소프트웨어 스택으로 Python을 선택합니다.
그리고 OS는 Ubuntu 18.04 LTS를 사용하도록 하겠습니다.
Python 버전은 3.7.4 라고 합니다.
소프트웨어 스택으로 Python을 선택합니다.
그리고 [생성하기]버튼을 누르고 잠시 기다리면 무료 컨테이너(가상머신)이 생성됩니다.
2. 가상머신 내에 패키지 설치하기
새로 설치해주거나 업데이트 해줘야하는 패키지가 많습니다.
그러나 중간에 오류가 발생할텐데, 그것을 먼저 해결해줍시다.
(저는 영상에서 후순에 설명하는 내용부터 진행하겠습니다. 영상의 순으로 진행하셔도 상관 없습니다.)
발생 가능한 오류1) "인증할 수 없습니다: NO_PUBKEY"
우선 아래의 코드를 실행해주세요. (둘 중 하나에서 나올 수도 있고, 안 나올 수도 있습니다. 물론 다 나올 수도 있죠.)
sudo apt update
sudo apt-get update
위의 코드를 실행하면 아래와 같은 에러가 발생할 수 있습니다.
root@goorm:/workspace/kivy# sudo apt update
# (생략)
오류:5 https://cli-assets.heroku.com/apt ./ InRelease
다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다: NO_PUBKEY 6D************CF
오류:4 https://cf-cli-debian-repo.s3.amazonaws.com stable InRelease
다음 서명이 올바르지 않습니다: EXPKEYSIG 17************F8 CF CLI Team <cf-cli-eng@pivotal.io>
#(생략)
W: https://cli-assets.heroku.com/apt/./InRelease 파일을 받는데 실패했습니다 다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다: NO_PUBKEY 6D************CF
W: Some index files failed to download. They have been ignored, or old ones used instead.
에러가 발생했다면 해결해줍시다.
여기서 NO_PUBKEY *********** 가 나타나는데, 이 key를 복사한 뒤, 아래와 같이 입력하시면 됩니다.
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "본인의 key"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6D************CF
# 결과
# Executing: /tmp/apt-key-gpghome.B********w/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 6D************CF
# gpg: key 70************53: public key "Heroku, Inc. <support@heroku.com>" imported
# gpg: Total number processed: 1
# gpg: imported: 1
발생 가능한 오류2) "서명이 올바르지 않습니다: EXPKEYSIG"
이번에도 우선 아까와 같은 코드를 실행해주세요.
sudo apt update
sudo apt-get update
이번엔 아래와 같은 유형의 에러가 발생할 수 있습니다.
# (생략)
오류:4 https://cf-cli-debian-repo.s3.amazonaws.com stable InRelease
다음 서명이 올바르지 않습니다: EXPKEYSIG 17************F8 CF CLI Team <cf-cli-eng@pivotal.io>
# (생략)
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://cf-cli-debian-
repo.s3.amazonaws.com stable InRelease: 다음 서명이 올바르지 않습니다: EXPKEYSIG 17************F8 CF CLI Team <cf-cli-eng@pivotal.io>
W: http://packages.cloudfoundry.org/debian/dists/stable/InRelease 파일을 받는데 실패했습니다 다음 서명이 올바르지 않습니다: EXPKEYSIG 17************F8 CF CLI Tea
m <cf-cli-eng@pivotal.io>
W: Some index files failed to download. They have been ignored, or old ones used instead.
이 경우엔 공개키를 다시 받아줘야합니다.
아래의 코드로 키를 업데이트를 해줍니다.
wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | apt-key add -
# 결과
# OK
키를 모두 인증하였거나 인증할 필요가 없었다면 아래의 코드를 터미널에서 모두 실행시켜줍니다.
sudo apt update
sudo apt-get update
sudo apt install git
git clone https://github.com/kivy/buildozer.git
cd buildozer
sudo apt install dialog
sudo apt install apt-utils -y
sudo apt-get install -y python3-setuptools
sudo python3 setup.py install
cd ..
다만 아직 경고가 중간에 나타납니다. 이건 나중에 해결해줍시다.
debconf: 프론트엔드를 초기화할 수 없음: Dialog
debconf: (dialog나 그와 비슷한 프로그램을 설치하지 않았으므로, 다이얼로그 프론트엔드는 사용할 수 없습니다. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76,
<> line 1.)
debconf: 다음 프론트엔드를 대신 사용: Readline
여기까지 진행된 상태입니다.
3. 새 프로젝트 폴더와 main.py 만들기
여기서부터 다시 또 오기가 생깁니다.
영상에서는 kivy의 github에서 제공하는 문서를 그대로 가져왔지만, 저는 이전에 실습했던 그림판 어플을 배포하고 싶습니다.
어처피 main.py의 내용만 다르니 크게 문제는 없을 것이라고 믿으며 따로 진행해봅니다.
새 폴더와 파일을 만드는 방식은 Pycharm이나 VScode와 같으니 어려울건 없습니다.
MyPaintApp 폴더 안에 main.py 파일을 만들어 주었습니다.
그리고 이전에 만들었던 그림판 코드(https://brain-nim.tistory.com/6)를 main.py에 복붙해줍니다.
3. 가상머신 PATH 설정하기
vim을 이용해 PATH를 설정해줍니다.
아래의 코드로 .bashrc 문서를 열어줍니다.
vi ~/.bashrc
문서의 가장 아래줄로 내려가서 아래의 내용 한줄을 추가해줍니다.
export PATH=~/.local/bin/:$PATH
안내) vim 편집 방법
- 처음 문서로 들어간 상태에서 키보드의 i 키 를 누르면 위의 사진처럼 "-- 끼워넣기 --" 글자가 뜹니다. 즉, 수정모드로 바뀐겁니다.
- 내용을 다 입력해서 이제 마무리하고 나오기 위해서는 키보드의 esc 키 를 먼저 눌러줍니다. 이러면 수정모드에서 빠져나옵니다.
- 이후 :wq 를 입력하고 엔터를 눌러주면 문서수정이 완료되어 vim에서 빠져나옵니다.
그리고 편집한 bashrc를 실행시켜줍니다.
. ~/.bashrc
4. 가상머신 내에 패키지 설치하기 2
새로 설치해주거나 업데이트 해줘야하는 패키지가 여전히 많습니다.
bashrc편집을 안했다면 설치가 힘들었을 패키지들을 추가로 설치해줍시다.
pip install --upgrade pip
pip3 install --user --upgrade cython virtualenv
# 바로 위에서 cython을 설치하였지만, apt-get으로 다시 설치해주겠습니다.
# pip3 install cython으로 설치했을 때는 중간에 에러가 발생했었습니다.
# apt-get만 사용할 경우 에러가 생기는지는 테스트해보지 않아서 잘 모르겠습니다. (시도해보신 분 있으시다면 알려주시면 감사드리겠습니다.)
sudo apt-get install cython
sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev
sudo apt-get install build-essential curl file
sudo apt-get install autotools-dev
sudo apt-get install -y lld
sudo apt-get install autoconf
pip3 install colorama appdirs sh jinja2 six
5. buildozer init
설치가 모두 완료되었다면 buildozer init 명령으로 .spec 파일을 만듭니다.
당연하지만 main.py가 있는 디렉토리에서 실행하셔야 합니다.
buildozer init
root@goorm:/workspace/kivy/MyPaintApp# buildozer init
Buildozer is running as root!
This is not recommended, and may lead to problems later.
Are you sure you want to continue [y/n]? y
File buildozer.spec created, ready to customize!
buildozer가 현재 root에서 돌아가고 있는데 괜찮겠냐고 물어보네요.
우리는 우리 컴이 아닌 구름의 가상머신을 사용하고 있으니 별 문제 없을겁니다. y 라고 답해줍니다.
buildozer.spec 파일이 새로 생성되었습니다.
5. buildozer android debug
buildozer.spec 파일이 만들어졌으니 이제 apk 파일을 만들어봅시다!
제가 제 컴퓨터에서 잘 작동시킬 수 있었다면 폰을 usb로 연결한 상태로 deploy와 run까지 진행할 수 있었을텐데 아쉽네요...ㅠㅠ
저는 debug만 진행해서 .apk 파일을 만든 뒤, 이 파일을 밖으로 가지고 나와서 직접 폰에 설치해 보겠습니다.
buildozer android debug # deploy run
중간에 두번 y를 눌러줘야 합니다.
처음 실행하시는 것이라면 매우 오래걸리실 겁니다. (저는 약 2시간정도 소요되었습니다.)
구름 유료계정이 아니시라면 계속 창을 유지하셔야 하기에 그 점은 조금 번거로웠습니다.
그래도 한번 진행하고 나면 그 이후부터는 몇분안으로 빠르게 해결될겁니다. (저는 약 4분 걸렸습니다.)
BUILD SUCCESSFUL!! Android packaging done!
.apk 파일로의 패키징이 완료되었습니다!
bin 폴더 안에 .apk 파일이 생성되었습니다!
*TIP
에러가 있을 시 포기하지 말고!! 에러 문구를 읽어보기
저는 JAVA쪽 이슈가 있어서
```
# apt-get 업데이트
sudo apt-get update && sudo apt-get upgrade
# java 11 설치
sudo apt-get install openjdk-11-jdk
# java 11 적용. 아래 명령어 입력후 11 버전에 해당하는 번호를 입력하고 엔터 키를 누르세요.
sudo update-alternatives --config java
sudo update-alternatives --config javac
# 버전 확인
javac -version
java -version
```
로 해결했습니다!
6. 안드로이드 폰에 .apk 설치하기
어플을 설치하면 완료!!!
'파이썬 > Kivy_파이썬으로 앱만들기' 카테고리의 다른 글
Python만으로 어플을 만들어보자 A SimplePaint App with kivy (0) | 2023.02.08 |
---|---|
Python만으로 어플을 만들어보자 (create an application) (0) | 2023.01.20 |
댓글