처음으로 티스토리에 글을 쓰게 만든 놈..

사실 그동안 만난 무수한 에러들을 해결할 때마다 글이라도 써야하나? 생각했지만

나보다 깔끔하고 정확하게 해결하신 분들이 많아서 그냥 넘어가게 됨

하지만 몇일 밤을 컴퓨터 앞을 떠나지 못하게 만든 놈..

 

사실 이것도 아주 기깔나고 정성스럽게 정리된 글이 많았음ㅠㅡㅠ

내가 참고했던 글은

 

(1) wsl을 사용, 우분투로 buildozer 사용하기

https://codealone.tistory.com/36

 

[kivy] 파이썬으로 안드로이드 스마트폰 앱(apk 파일) 만들기/buildozer, wsl

목차 1. kivy와 buildozer 소개 2. wsl 소개 3. buildozer를 이용해서 kivy 앱을 apk 파일로 만들기 Python Software Foundation과 JetBrains가 협력하여 실시한 설문조사 결과에 따르면 파이썬은 주로 데이터 분석, 머

codealone.tistory.com

(2) Virtual Box를 사용해서 리눅스 환경을 만들어 buildozer 사용하기

https://m.blog.naver.com/dong961015/222053979983

 

파이썬 kivy 이용 앱 만들기(비전공 대학생) [6] - Kivy 불도저이용 [python에서 apk변환]

지금까지 Layout을 통해서 밑바탕을 그리고, widget을 통해서 한 장의 그림을 완성시키고 screenmanager를...

blog.naver.com

 

그치만 첫번째 방법에서는 사용할 수 없는 android sdk api level이라는 에러를

수십번을 넘게 만났다.. android sdk를 따로 설치해줘도, android studio를 다운받아서 설치해도

별의 별걸 다 해봤지만 결국 내가 만난 에러는 고쳐지지 않음 ㅠ

 

그리고 두번째 방법에서는 gradlew 에서 에러를 만났다..

사실 안드로이드 앱 개발이 처음이라 어색한 이름들 투성이었는데

구글링을 진짜진짜 열심히 해서 이런 저런 방법을 써봤지만 결국 고쳐지지 않음ㅠ

이 과정에서 가상환경을 몇번이나 지우고 다시 설치하고

이상한짓을 했는지 모르겠음 ㅠㅠ흑흑

 

이런 이유로 몇일을 제대로 잠도 못자고 시도했는데도 안되니까

도대체 어떤게 문제인지 모르겠고

다 만든 프로젝트를 빌드를 못해서 버리게 되나 싶은 생각이 들어서

너무너무 슬프고 깜깜했음

 

그치만 마음이 얘를 포기할 수가 없어서

또 미친듯이 구글링을 하기 시작...

그리고 문득 Google colab을 사용해서 빌드하는 유튜브를 발견하게 됨

근데 이마저도 꽤 오래 전에 올린 영상이고

해봤는데 같은 문제로 빌드 안됨 ㅎㅎ

그러다가 힌두어(?)를 사용하시는 분이 올린 유튜브를 보고 했는데 이게 웬걸!!

드디어 만난 나의 apk 파일!!!!!

 

kivy로 안드로이드 어플을 만드는 사람이 많은지는 모르겠지만

누군가 나처럼 잠도 못이루고 눈물을 훔치는 사람이 있을지도 모르니까..

도움이 되길 바라면서..! (미래의 나일지도)

 

 

 

 

1. Colab에 들어가서 새 노트를 만든다!

(처음 새 노트를 만들면 sample_data라는 파일이 생기는데,

이 파일에 있는건 다 삭제해주시면 됨)

 

2. 빌드하고자 하는 파일 (.py파일 - 이름이 main.py여야 하는 것 같다)

&&

빌드에 들어가야 하는 .mp3/.ttf 등 다른 파일들도 함께 업로드 해주면 됨

 

3. 그리고 이제부턴 코드!

 

(1) 차례 차례 실행시키면 됩니다용

!pip3 install --user --upgrade buildozer

 

(2)

!sudo apt update
!sudo apt install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
!pip3 install --user --upgrade Cython==0.29.33 virtualenv

이건 2024년 4월 24일쯤 사용했던 코드인데

https://buildozer.readthedocs.io/en/latest/installation.html#targeting-android

 

Installation — Buildozer 0.11 documentation

Installation Buildozer is tested on Python 3.8 and above but may work on earlier versions, back to Python 3.3. Depending the platform you want to target, you might need more tools installed. Buildozer tries to give you hints or tries to install few things

buildozer.readthedocs.io

여기에 들어가면 Andorid on Ubuntu ~ 라면서

올려두신 코드를 넣은거니 이 코드랑 달라졌는지 확인해야할듯

 

(3)

!git clone https://github.com/kivy/buildozer
%cd buildozer
!python setup.py build
!pip install -e .
%cd ..

 

얘까지 실행시켜주고 나면 이제 빌드할 준비가 거의 다 됐다!

 

(4)

!buildozer init

 

그리고 이놈을 실행시키면

이렇게 나오는데

Are you sure you want  to continue [y/n]? 옆에 y, 그리고 Enter!

 

그러고 나면 아까 업로드한 공간에 buildozer.spec파일이 생성된다

그 파일을 더블클릭해서 눌러주시면 됩니다용

 

# (str) Title of your application
title = My Tablet Keypad

# (str) Package name
package.name = mytabletkeypad

 

요기 title과 package.name에 만들고 있는 어플의 이름을 입력하고,

 

혹시 빌드에 필요한 다른 파일들을 넣어주셨다면

 

# (list) Source files to include (leave empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas,ttf,txt,mp3

 

요자리에 (ttf, txt, mp3는 제가 추가한 것이에용) 넣어주시면 됩니다용

 

그리고 

# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy,docutils,Kivy-Garden,pygments,pypiwin32

 

이부분에 원래 python3, kivy만 적혀있다

그러면 내 kivy project로 돌아가서, terminal에

pip show kivy

를 입력하면

 

저어~~기 아래 Requires: 옆으로 docutils, kivy-deps.angle, ~ 등이 나온다

kivy-deps. 이후로 나오는 것들은

buildozer에서 자동으로 다운받아주는 것 같고,

앞쪽의 docutils, 뒤쪽의 Kivy-Garden 이후로만 추가해줬다

(사실 힌두어로 강의하시던 분이 그렇게 하심)

 

그리고 어플의 아이콘을 변경하고 싶다면!

# (str) Icon of the application
icon.filename = %(source.dir)s/keypad-icon.png
요 부분을 내가 원하는 파일이름을 넣어서 수정하면 된당

 

그리고 혹시 안드로이드 permission이 필요한데,

안드로이드 스튜디오로 작업하시는 분들은 .xml파일을 쉽게 찾아볼 수 있지만

kivy엔 그런거 따윈 어디에서 찾을지도,, 있긴 있는지도,, 모르겠는 분들이 있다면..(사실 나ㅠ)

 

# (list) Permissions
# (See https://python-for-android.readthedocs.io/en/latest/buildoptions.html for all the supported syntaxes and properties)
#android.permissions = android.permission.INTERNET, android.permission.ACCESS_NETWORK_STATE, android.permission.ACCESS_WIFI_STATE, android.permission.ACCESS_WIFI_MULTICAST_STATE, android.permission.READ_EXTERNAL_STORAGE, android.permission.WRITE_EXTERNAL_STORAGE

 

이부분에 필요한 permission을 추가하시면 됩니다용

 

무튼 이렇게 수정하고 .spec파일을 저장해주고 닫으면 된다!

 

그리고 마지막 (5)!!

!sudo apt update
!buildozer -v android debug

 

요놈을 실행시켜주고!

(실행시키면 Are you sure you want to continue?라는 문구가 나온거에 y,

그리고 한참 진행하다 보면 두번정도 약관 동의하는 것들이 나오는데 걔네도 y 누르면 잘 진행됨)

 

어차피 안되겠지..라고 생각하면서 한참을 기다리다 보면

이게 웬걸~

요롷게 bin 파일이 생겨있고, 그 안을 열어보면 .apk파일이 만들어져 있다!!

저 apk파일을 처음 봤을 때 을~~매나 짜릿했는지 ㅎㅎ

 

무튼 이렇게 해서 저 apk파일을 다운받아주면 잘 실행이 된당

(난 퍼미션도 추가 안하고, 그냥 막 빌드해버려서 삽질을 또 한참 했지만..ㅎㅎ)

 

험난했던 kivy to apk의 길..

이렇게 완성됐다!!

 

누군가에겐 도움이 됐으면 좋겠다!!!

+ Recent posts