初めに¶
Python-for-android(p4a)を起動して実行するのは簡単なプロセスでほんの2~3分かかるだけです。 このドキュメントではandroid用のPythonをp4aと呼んでいます。
コンセプト¶
要件:p4aの場合はアプリケーションの依存関係は標準の requirements.txt と似ていますがp4aはpipで要件をインストールする代わりにまずレシピを検索する違いがあります。
レシピ:レシピは要件をコンパイルする方法を定義するファイルです。Python拡張機能を持つライブラリはp4aにレシピがある必要があります。そうでなければコンパイルは失敗します。 要件のレシピがない場合はpipを使用してダウンロードされます。
ビルド:ビルドはコンパイルされたレシピを参照します。
ディストリビューション:APKに直接変換できるAndroidプロジェクトとしてコンパイルされた、すべての要件の最終「ビルド」です。 p4aにはさまざまな要件のセットを含む複数のディストリビューションを含めることができます。
bootstrap:ブートストラップはアプリケーションを起動するアプリケーションバックエンドです。 アプリケーションでSDL2をBase、Pygame、またはWebViewのブートストラップを持つFlaskのようなWebバックエンドとして使用できます。 異なるブートストラップは異なるビルドオプションを持つことができます
Installation¶
p4aをインストールします¶
p4aはPypiにあるのでpipを使用してインストールできます:
pip install python-for-android
Githubのマスターブランチのテストを使用するには
pip install git+https://github.com/kivy/python-for-android.git
依存関係のインストール¶
p4aにはいくつかの依存関係がインストールされていなければなりません:
- git
- ant
- python2
cython(pipからインストールできます)
- a Java JDK (e.g. openjdk-7)
zlib(32bitを含む)
libncurses (32 bitを含む)
- unzip
virtualenv (pipからインストールできます)
ccache (オプション)
autoconf (ffplayerのコーデックレシピのため)
libtool (ffplayerのコーデックレシピのため)
最近のバージョンのUbuntuとその派生のOSでは、これらのほとんどを以下のように一緒にインストールできます:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y build-essential ccache git zlib1g-dev python2.7 python2.7-dev libncurses5:i386 libstdc++6:i386 zlib1g:i386 openjdk-7-jdk unzip ant ccache autoconf libtool
Arch Linux(64ビット)では以下を実行してほとんどの依存関係をインストールできるはずです(このリストは完全ではないかもしれません)。 gcc-multilibはインストールされていない場合はgccと衝突します(置き換えられます)。 インストールがすでに32ビットである場合は、「lib32-」または「-multilib」を使用せずに同じパッケージをインストールします。
sudo pacman -S jdk7-openjdk python2 python2-pip python2-kivy mesa-libgl lib32-mesa-libgl lib32-sdl2 lib32-sdl2_image lib32-sdl2_mixer sdl2_ttf unzip gcc-multilib gcc-libs-multilib
Android SDKのインストール¶
Android SDK と NDKをダウンロードしてディレクトリ(let’s say $HOME/Documents/)に解凍する必要があります:
「~/.bashrc」や他のお気に入りのシェルを編集してandroid上に構築するために必要な新しい環境変数を含めることができます:
# Adjust the paths!
export ANDROIDSDK="$HOME/Documents/android-sdk-21"
export ANDROIDNDK="$HOME/Documents/android-ndk-r10e"
export ANDROIDAPI="14" # Minimum API version your application require
export ANDROIDNDKVER="r10e" # Version of the NDK you installed
You have the possibility to configure on any command the PATH to the SDK, NDK and Android API using:
--sdk_dir PATH
と同じ $ANDROIDSDK--ndk_dir PATH
と同じ $ANDROIDNDK--android_api VERSION
と同じ $ANDROIDAPI--ndk_ver PATH
と同じ $ANDROIDNDKVER
使用方法¶
Kivyアプリのビルド¶
アプリケーションをビルドするには、名前、バージョン、パッケージ識別子が必要で、それに加えて使用するブートストラップと要件を明示的に記述する必要があります。
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My application" --version 0.1 --bootstrap=sdl2 --requirements=python2,kivy
これは python2 と kivy を含むディストリビューションをまず構築してからSDL2ブートストラップを使用します。 Python2は、kivyがpython2またはpython3で動作できるように明示的に書かれています。
--bootstrap=pygame
も使用できますが、pygameのブートストラップはKivyで使用することは推奨されてなくてSDL2が推奨されています。
WebViewアプリのビルド¶
アプリケーションをビルドするには、名前、バージョン、パッケージ識別子が必要で、それに加えてWebビューのブートストラップと要件を明示的に使用する必要があります。
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My WebView Application" --version 0.1 --bootstrap=webview --requirements=flask --port=5000
flaskを別のWebフレームワークに置き換えることもできます。
--port=5000
をアプリでウェブサイトを提供するポートに置き換えます。 Flaskのデフォルトは5000です。
SDL2ベースのアプリケーションのビルド¶
例えばPySDL2 を含む場合
アプリケーションをビルドするには名前、バージョン、パッケージID、sdl2ブートストラップを明示的に以下の要件で記述する必要があります。
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My SDL2 application" --version 0.1 --bootstrap=sdl2 --requirements=your_requirements
your_requirements
の代わりに必要なモジュールを追加します。例えば --requirements=pysdl2
や --requirements=vispy
です。
その他のオプション¶
その他のコマンドライン引数を渡して、orientation(方向)、WakeLock、アプリの権限などのアプリの動作を制御できます。 Bootstrap options を参照してください。
すべてをリビルドする¶
何かうまくいかない場合にダウンロードとビルドのすべてをクリーンにして再実行したい場合は次のコマンドを実行します:
p4a clean_all
依存関係の再ダウンロードを避けて、ビルドのクリーンアップのみしたい場合は次のコマンドを実行します:
p4a clean_builds && p4a clean_dists
ヘルプの利用¶
何かうまくいかなくて修正方法がわからない場合は、 --debug
オプションを追加して出力ログを kivy-users Google group またはirc.freenode.netのirc channel #kivyに投稿してください。
詳細は Troubleshooting を見てください。
高度な使い方¶
レシピ管理¶
利用可能なレシピのリストを見るには:
p4a recipes
p4aをコントリビュートしていて、レシピをもう一度テストしたい場合はビルドをクリーンしてディストリビューションを再ビルドする必要があります:
p4a clean_recipe_build RECIPENAME
p4a clean_dists
# then rebuild your distribution
アプリケーションの “private” レシピを書けます。ビルドディレクトリに p4a-recipes
フォルダを作成してレシピを配置します( __init__.py
を編集):
mkdir -p p4a-recipes/myrecipe
touch p4a-recipes/myrecipe/__init__.py
出力の管理¶
あなたが新しいプロジェクトを開始するたびにpython-for-androidは、コマンドラインで追加した要件に従って内部的に新しいディストリビューション(Pythonを含むAndroidビルドプロジェクトとAndroid用にコンパイルされた他の依存関係)を作成します。既存のディストリビューションを強制的に再利用するには次のものを追加します:
p4a apk --dist_name=myproject ...
これによりディストリビューションが常に同じディレクトリに構築されて要件を調整するたびに多くのディスクスペースを使用する必要がなくなります。
使用可能なディストリビューションをリスト化できます:
p4a distributions
すべてをクリーンします:
p4a clean_dists
設定ファイル¶
python-for-androidは現在のディレクトリで .p4a
という名前の設定ファイルをチェックします。見つかった場合はオプションとしてすべての行をコマンド行に追加します。例として次のように常に含めるオプションを追加できます:
--dist_name my_example
--android_api 19
--requirements kivy,openssl
さらに進んで¶
特定のトピックの詳細についてはドキュメントの他のページを参照してください: