KivyアプリをBuildozerライブラリでAndroidアプリやiOSアプリを作成することができます。WSL2でLinux環境の構築し、Python3.12とBuildozerのインストール手順を解説します。エラーが多発して上手くいかない方はこの記事のインストール方法を試してみてください。手順通りに進めれば問題ないはずです。
Buildozerとは
BuildozerはKivyアプリケーションをAndroidやiOSのモバイルアプリ用のパッケージに変換するライブラリです。AndroidアプリはAPK形式またはAAB形式、iOSアプリはIPA形式としてパッケージ化するために使用します。
BuildozerはLinux OSとmac OSで動作します。Windowsで使用する場合はLinuxの仮想環境を構築するか、Windows上でLinuxを実行できるMicrosoftが提供しているWSLを使います。(Windows Subststem for Linux)
WSLを使う
WSLは基本的にコマンド操作になりますが、フォルダーやファイルへアクセスする際はWindowsのエクスプローラーが使えます。アクセス制限がかかっているフォルダーもありますが今回のように特定の場合のみに使用したい時は手軽に使えて便利です。
WSLは1と2が提供されています。WSL2ではOSのGUI操作やアプリケーションのみのGUI操作も可能です。しかし、OSのGUI操作はPCのスペックやグラフィックボードの関係で動作させるのが難しい場合があります。このGUIは完全なものではないので完全なGUIでLinuxを使用したい場合は仮想マシン(VirtualBoxやVMware)を構築することをお勧めします。
Buildozerの環境構築
色々検証した結果今回は下記の環境で構築します。Buildozerはインストール自体はそれほど苦ではありません。しかしインストールが完了したと安堵しても、依存関係(関連するライブラリ)が足りなかったり、設定ファイル(specファイル)の記述を間違えているとエラーが多発してファイルを作成できません。環境が同じであれば以下の手順通りに行うことでモバイルアプリのファイル変換はできると思います。
- Windows11
- WSL2
- Ubuntu22.04.5
- Python3.12.7
- Buildozer1.5.1dev0
他のバージョンを試してみたい方はインストール時の検証メモを残したのでそちらも参考にしてみてください。
WSL2インストール
Windows10では手順が異なりますので注意してください。また、WSL2ではデフォルトのインストールオプションなしにした場合、Ubuntu24.4.1(現時点で)がインストールされますが、今回はUbuntu22.4.5をインストールします。バージョン24ではBuildozerのインストールはおそらく難しいです。
- Step1Windowsスタートボタンを右クリックして[ターミナル(管理者)]を実行する
PowerShellが起動します。
PS C:\Users\user>
- Step2WSL2のインストール
wslコマンドを実行する。installオプションにUbuntuのバージョンをしています。
wsl --install -d Ubuntu-22.04
- Step3Ubuntuログインユーザー名の設定
ユーザー名の入力を求められるので、ログインユーザー名を入力します。※メモを取るなどして忘れないようにして下さい。
Enter new UNIX username:
- Step4Ubuntuログインパスワードの設定
パスワードの入力が求められるのでパスワードを入力します。Ubuntuではパスワード規制のため8文字以上にしてください。大文字、小文字、数字を混在させたパスワードが推奨されています。短いパスワードを設定すると後で認識されないのでアンインストールする羽目になるので注意してください。※メモを取るなどして忘れないようにして下さい。
New password:
再度パスワードの入力が求められるので同じパスワードを入力します。
Retype new password:
- Step5sudo権限を持つユーザーが作成される
下記のように表示が変わればインストールが完了し、sudo権限を持つユーザーが作成されています。このユーザーはWindouwsで管理者として実行するのと同じです。この状態がUbuntuのターミナルモードです。。
ユーザー名@PC名:~$
- Step6パッケージの最新情報を取得する
Ubuntuのパッケージの最新情報を取得します。以降Ubuntuターミナルモードで実行してください。
sudo apt update
途中で確認のメッセージが表示されるので「y」を入力し「Enter」を押します。
[sudo] password for user:
- Step7最新のパッケージをインストールする
Ubuntuのパッケージを更新します。オプション[-y]はインストールの確認をスキップします。かなりの量のパッケージがインストールされるので、オプション[-y]はつけた方が良いです。
sudo apt upgrade -y
Ubuntuのターミナル画面の起動方法
Windowsスタートボタンを右クリックして[ターミナル(管理者)]を実行し、メニューから「Ubuntu」を選択します。
Ubuntuに標準インストールされているPython
Ubuntuでは標準でPythonがインストールされています。Ubuntu 22.04.5ではPython3.10.12が[usr/bin]にインストールされています。そのバージョンでも良ければそのまま使えると思いますが検証はしていません。UbuntuではPythonを他のツールなどに使用しているらしいので、これはそのままにして新たにPython3.12をインストールします。
UbuntuにPythonをインストールする
Linuxのインストールコマンド(apt install)からPyhtonをインストールすることもできますが3.12.7がUbuntuリポジトリにはないためパッケージからインストールします。
- Step1Pythonの依存関係のパッケージをインストールする
ターミナルはUbuntuモードで実行してください。
Pythonをインストールするために必要なパッケージをインストールします。
以下は必要と思われるパッケージのリストです。(必要ないパッケージもあるかもしれません)。
- build-essential: C/C++コンパイラ(Pythonをビルドするために必要)
- zlib1g-dev: 圧縮解凍
- libgdbm-dev: データベース関連
- libnss3-dev: セキュリティ関連
- libssl-dev: SSL/TLS通信
- libreadline-dev: インタラクティブなコマンドラインの編集機能
- libffi-dev: 外部関数インターフェース
- libsqlite3-dev: SQLiteのサポート
- libbz2-dev: BZ2圧縮形式をサポート
sudo apt update sudo apt install -y build-essential zlib1g-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libsqlite3-dev wget libbz2-dev
- Step2Python公式サイトからLinux用パッケージのバージョンを調べる
Python公式サイトからPythonのバージョンを調べてください。今回は3.12のラストバージョンの3.12.7をインストールします。ダウンロードはコマンドから行うのでここではダウンロードしなくて大丈夫です。
- Step3Pythonのダウンロード
ダウンロードファイルを保存するフォルダーへ移動します。(変更したい場合はパスを変えてください)
※Linuxではフォルダーは「ディレクトリ」といいますが本書では「フォルダー」で統一します。cd /usr/local/bin
wgetコマンドでPythonをダウンロードします。違うバージョンをインストールする場合は変更してください。途中でパスワードの入力が求められます。
sudo wget https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tgz
これで[/usr/local/bin]にダウンロードされました。
- Step4圧縮ファイルを解凍する
ダウンロードした圧縮ファイルを解凍します。
sudo tar xzf Python-3.12.7.tgz
何も表示されませんがおそらく解凍は終わっています。
解凍したフォルダーへ移動しますcd Python-3.12.7
- Step5Pythonをインストール
インストール環境をチェックしてビルド後インストールします。インストール場所を指定したい場合は[–prefix=PREFIX]オプションを指定します。
sudo ./configure --enable-optimizations sudo make -j $(nproc) sudo make altinstall
これで[/usr/local/bin]にPythonがインストールされました。ダウロードしたファイルが残ってるので気になる場合はrmコマンドで削除してください。
sudo rm -r /usr/local/bin/Python-3.12.7.tgz
- Step6インストール確認
Pythonのバージョンを確認します。
python3.12 --version
インストールしたバージョンが表示されているか確認してください。
- Step7デフォルトのPythonバージョンを変更する
update-alternativesコマンドでPython3.10と3.12を登録して切り替えられるようにします。
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 2 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 sudo update-alternatives --config python3
- Step8既定のPythonを登録する
規定で3.12を使用するようにします。
下記のように表示がされるので、「0」を入力し「Enter」を押します。
Selection Path Priority Status ------------------------------------------------------------ 0 /usr/local/bin/python3.12 2 auto mode 1 /usr/bin/python3.10 1 manual mode * 2 /usr/local/bin/python3.12 2 manual mode Press <enter> to keep the current choice[*], or type selection number:
- Step9python3コマンドの確認
python3コマンドで3.12が使えるか確認します。これができないと後で上手くいかないので気を付けてください。
python3 --version
バージョンが3.12.7と表示されていることを確認する
Python 3.12.7
Buildozerに必要なパッケージのインストール
Buildozerに必要なパッケージをインストールします。
- Step1Buildozerに必要なパッケージ
下記は必要そうなパッケージになります。(必要ないパッケージも含まれてるかもしれません)
- Java Development Kit (JDK):AndroidビルドにはJDKが必要
- Git:PythonパッケージをGitリポジトリから直接インストールする
- Python Dev ヘッダー:Python開発用ヘッダーが必要
- SDL2 ライブラリ:Kivyが依存するマルチメディアライブラリ
- Zlib:圧縮に必要なライブラリ
- Autoconf:Androidの依存関係をビルドする際に必要
- libtool: Androidの依存関係をビルドする際に必要
- unzip:zip解凍
- libncurses5-dev: 画面制御
sudo apt update sudo apt install -y openjdk-17-jdk python3-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev autoconf cmake automake libtool pkg-config unzip zip python3-venv python3-pip libtinfo5 libncurses5-dev
仮想環境の構築
仮想環境を作ります。現時点でpipからBuildozerをインストールすると1.5.0がインストールされますが、Python3.12で非推奨になったライブラリが含まれるのでGitHubから1.5.1dev0をインストールします。
- Step1仮想環境フォルダを作る
ユーザーフォルダーへ移動します。このフォルダーは権限のないフォルダーになっていてコンソールのカレントフォルダーになります。下記のようにチルダを入力すると簡単に参照できます。
cd /home/<ユーザー名>
cd ~
venvコマンドで仮想環境フォルダを作ります。ここでは「venv-py312」にしています。
python3 -m venv <仮想環境フォルダー名>
python3 -m venv venv-py312
[home/ユーザー名]に指定したフォルダーが作成されています。
- Step2仮想環境を有効にする
activateで仮想環境を有効化します。
source /home/<ユーザー名>/<仮想環境フォルダー名>/bin/activate
source /home/user/venv-py312/bin/activate
activateするとコマンドラインの表示部分に「(仮想環境フォルダー名)」が追記され、仮想環境モードになっています。
(venv-py312) <ユーザー名>@<PC名>:~$
コンソール画面を閉じると仮想環境のセッションが切断されるので、コンソールを立ち上げる度にactivateする必要があります。
次の章でactivateされた状態でターミナルを起動するショートカットの作成方法を紹介しています。
- Step3pipパッケージの更新
以降仮想環境モードで実行してください。
pipライブラリを最新の状態に更新します。
pip install --upgrade pip
- Step4buildozerと関連ライブラリのインストール
buildozer1.5.1.dv0と必要なライブラリをインストールします。
pip install kivy cython python-for-android pip install git+https://github.com/kivy/buildozer.git pip install --upgrade buildozer python-for-android
- Step5インストールされているライブラリの確認
正常にインストールされたかを確認します。
pip list
下記のように表示されます。
Package Version ------------------ ----------- appdirs 1.4.4 build 1.2.2.post1 buildozer 1.5.1.dev0 certifi 2024.8.30 charset-normalizer 3.4.0 colorama 0.4.6 Cython 0.29.37 docutils 0.21.2 idna 3.10 Jinja2 3.1.4 Kivy 2.3.0 Kivy-Garden 0.1.5 MarkupSafe 3.0.2 packaging 24.2 pexpect 4.9.0 pip 24.3.1 ptyprocess 0.7.0 Pygments 2.18.0 pyproject_hooks 1.2.0 python-for-android 2024.1.21 requests 2.32.3 setuptools 59.6.0 sh 1.14.3 toml 0.10.2 tomli 2.2.1 urllib3 2.2.3
- Step6仮想環境モードを終了したい場合
仮想環境モードから抜けるにはdeactivateコマンドを実行します。
deactivate
activate状態のWSLターミナルのショートカットを作成する
いちいち仮想環境をactivateするのが面倒なので、仮想環境をactivateした状態のWSLターミナルのショートカットの作成方法を説明します。power shell本体から起動した場合もactivate状態で起動されるので任意で行ってください。
- Step1ショートカットのアクセス元を入力
デスクトップなどの任意の場所で右クリック > 新規作成 > ショートカットの作成画面を起動し下記を入力し、[次へ]ボタンを押す。
C:\Windows\System32\wsl.exe -d Ubuntu-22.04
- Step2ショートカットの名前を入力
任意のショートカットの名前を入力する。
- Step3作業フォルダーの入力
作成されたショートカットを右クリック > プロパティを選択し、[作業フォルダー]に下記を入力し、[適用]ボタンを押す。(Ubuntuのユーザーフォルダーを入力します)
\\wsl.localhost\Ubuntu-22.04\home\<ユーザー名>
- Step4アイコンの設定
再度ショートカットのプロパティ画面を起動し、[アイコンの変更]ボタンを押し、[このファイル内のアイコンを検索]に下記を入力し[Enter]を押す。
今回はLinuxのペンギンに設定しますが好きなアイコンを設定してください。
C:\Windows\System32\wsl.exe
[下の一覧からアイコンを選択]欄にペンギンが表示されるので選択して[OK]ボタンを押す。
- Step5WindowsのエクスプローラーからUbuntuにアクセス
WindowsのエクスプローラーからUbuntuにアクセスし下記のフォルダーへ移動し、bashファイルを開く。
VSCodeで開いた場合、警告のメッセージが表示されますが[許可]ボタンを押してください。
\wsl.localhost\Ubuntu-22.04\home\<ユーザー名>
- Step6bashファイルを編集
bashファイルの一番最後の行に下記を追記して保存する。
「venv-py312」の部分は仮想環境フォルダーの名前になります。違う名前にした場合は、2か所変更してください。
# 仮想環境のactivate if [ -d "$HOME/venv-py312/" ]; then source "$HOME/venv-py312/bin/activate" fi
- Step7ショートカットを起動
作成したショートカットから起動して、仮想環境モードになってるか確認します。
WSL2を削除したい場合
WSLを削除したい場合は簡単に行えます。Ubuntu上に有るデータは全て消去されるので大事なデータはWindowsの方へ移動してください。
- Step1Poser Shellを起動
Windowsスタートボタンを右クリックして[ターミナル(管理者)]からPower shellを起動し、下記のコマンドを実行し「登録解除。この操作を正しく終了しました。」のメッセージを確認する。
※Ubuntuのバージョンを指定しないでインストールした場合は「ubuntu」のみになります。
wsl --unregister ubuntu-22.04
- Step2インストールされているアプリ画面の起動
Windowsスタートボタンから[設定] > 左側メニューの[アプリ] > [インストールされているアプリ] 画面を起動する。
- Step3Ubuntuの削除
➀検索で「ub」と入力する。
➁[…]マークのボタンを押す。
➂[アンインストール]を選択する。
④「削除しました」の旨のメッセージを確認する。
最後に
MSL2でのLinuxとPythonの環境構築について説明しました。一つのライブラリを試したいがために4日も費やしてしまいました。そしてUbuntuデビューして4日目です!言い方におかしなところがあるかもしれませんがご容赦ください。次回はBuildozerを使ってAndroidアプリのAPKやAABの作成方法について説明します。
Comment