Extreme Thinking
wsl + docker + python3(kivy) 編譯 apk

2021-07-11


安裝 wsl 的 ubuntu

由 ubuntu 去做 kivy 的編譯

安裝 widdows 版的 docker

https://docs.docker.com/docker-for-windows/wsl/

不用啟動 wsl2 我用 wsl 的(wsl安裝安卓模擬器是可以的)

要選 tcp://localhost:2375 without TLS

進去 wsl 的 ubuntu 安裝 docker-ce 去控制 windows 內的 docker

sed -i 's/archive.ubuntu.com/free.nchc.org.tw/g' /etc/apt/sources.list
apt update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
apt remove gpg
apt install gnupg1
apt install software-properties-common
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get -y update
apt-get -y install docker-ce
echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc

先編譯一個 Helloword.py

import kivy
from kivy.app import App
from kivy.uix.label import Label
class MyFirstKivyApp(App):
    def build(self):
        return Label(text ="Hello World !")
MyFirstKivyApp().run()

進入 python-for-android(docker)

複製 Helloword.py 進去 改為 main.py

docker run --rm -i -t kivy/python-for-android bash
mkdir /home/user/app/kivy
docker cp kivy/hello.py 2dc1c3bb7688:/home/user/app/kivy/main.py

開始編譯….很久要下載一些東西

source venv/bin/activate
venv/bin/p4a apk --private /home/user/app/kivy --package=org.example.myapp --sdk_dir /home/user/.android/android-sdk/ --ndk_dir /home/user/.android/android-ndk/ --bootstrap=sdl2 --name "Hallo World" --version 0.1 --requirements=python3,kivy

編譯完不要退出要存起來這個 image 下次編譯才會快

docker commit 2dc1c3bb7688 chio/python-for-android
docker image ls

要確認可進去才刪除舊的

docker run --rm -i -t chio/python-for-android bash
docker rmi kivy/python-for-android

下次用 chio/python-for-android 就可再編譯了

docker 複製到 wsl 然後複製到 windows 再複製到 手機測試

docker cp 2dc1c3bb7688:/home/user/app/*.apk .
\\wsl$\Ubuntu\root

Helloword.py 是可以在 windows 執行的

安裝 python3+kivy 是可以的