初めに

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

これは python2kivy を含むディストリビューションをまず構築してから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

さらに進んで

特定のトピックの詳細についてはドキュメントの他のページを参照してください: