Help us understand the problem. What is going on with this article?

buildozerを使ってスマホ向けKivyアプリを開発する取っ掛かり

More than 5 years have passed since last update.

pythonのクロスプラットフォーム開発ライブラリにKivyというものがあります。
Kivy自体の細かい仕組みはとかは一旦置いておいて(まだそこまで使えていません)、
Kivyが提供しているiOS/Android用パッケージを作成するまでの大まかな方法を紹介していこうと思います。

python-for-android と kivy-ios

python-for-android

Kivyのandroid向けパッケージングを行うプロジェクトです。(Google Codeにあるものとは別物らしいです)
Android SDK + NDKをベースにARM向けPythonをビルドして(=hostpytthon)、hostpythonに実際のアプリを動かす仕組みみたいです。

$ cd python-for-android
$ ./distribute.sh -m "openssl pil kivy"
$ cd dist/default
$ ./build.py --package org.test.touchtracer --name touchtracer --version 1.0 --dir ~/code/kivy/examples/demo/touchtracer debug

実行自体はそんなに難しい手順を必要としないのですが、

  • 環境変数を何個か定義しないといけない
  • Kivyアプリ実行時に必要なパッケージをAndroid向けビルドをするには、recipesにビルド用のレシピを用意しないといけない。

というあたりが少々面倒。

kivy-ios

こちらは、iOS向けのxcodeプロジェクトを作成してするプロジェクト。

$ ls 
kivyapp <- ここにKivyアプリが入っている
$ git clone https://github.com/kivy/kivy-ios
$ ./tools/build-all.sh
$ ./tools/create-xcode-project.sh kivyapp ./kivyapp

コマンド自体はpython-for-androidと同様にシンプルですし割りとあっさり実機動作の確認が出来るのですが、

  • xcoeproject がtools/ 以下に生成されてしまう。
  • 何故かxcodeproject生成時の対応端末がiPadのみになっている。
  • ApplicationDelegate 探すのが大変
  • シミュレータでは動かない。
  • pythonの標準ライブラリをかなり詰め込むらしく、ファイルが肥大化しやすい

といったのも抱えてるのが気になります。

buildozer でAndroid/iOSビルド環境をまとめて準備する

Buildozer は上記2プロジェクトをまとめてコントローする事ができるツールで、
最終的には

  • (Android側)
    • Android-SDK, NDKのダウンロード
    • SDKのtools,buildtoolsのダウンロード
    • python-for-androidのダウンロード
    • パッケージング
  • (iOS側)
    • Cythonのインストール
    • kivy-iosのダウンロード
    • xcodeprojectの生成
    • パッケージング

と言ったパッケージングに関わることの大部分を取り扱ってくれます。

インストールしてみる

PyPIにも登録されているのですが、個人的にはgithubのソースからインストールする方がいいです。(stableでは、いろいろな問題でandroid系環境構築が進みません)

$ git clone git://github.com/kivy/buildozer
$ cd buildozer
$ python setup.py install

基本的にはインストール時に使用可能になるbuildozerコマンドで大半が片付きます。

$ buildozer init
$ ls -l
(アプリのソース)
buildozer.spec <- ここにビルド/パッケージングに必要な項目を記述していきます(アプリ名、iOSのAppIDなど)
$ buildozer android debug <- android向けapkファイルのパッケージング。途中の過程もこのコマンド一発で実行してくれる
$ buildozer ios debug <- ios向けipaパッケージング。途中の過程もこのコマンド一発で実行してくれる

ね、簡単でしょ?

buildozer.specには、AndroidSDKやNDKのパスなども記述できるため、既にダウンロードしているものを使うことも可能です。
また、--profileオプションを用いて個別の変数も設定できるので細かいビルドもできます。

気をつけた方がいい点

上に書いたとおり、SDK,NDKなどのパスを指定できるのですが、何も編集せずに実行すると全部ダウンロードしようとします。
また、あくまでpython-for-androidやkivy-iosをダウンロードして、特定コントロール下のみでまとめて取り扱うため、
上の課題がまるまる残っています。

それでも、よほど変わったPythonパッケージを使わない限りKivy上でのアプリ開発に集中できるのでオススメです。

オマケ

スクリーンショット 2014-12-10 22.39.02.png

Hello worldのボタンだけ表示するアプリをパッケージングしてみた結果です。

見事にipaファイルが肥大化しました。逆にApkファイルは思いの外小さかったのが印象に残りました。

attakei
東京湾岸にて勤務中。 【公私】主にインフラ・サーバサイドWeb担当。Pythonista 【他】徒歩バカ
nijibox
ニジボックスの開発は、社内のUI/UXデザインチームと連携をとりながらワンストップで行う開発支援サービスです。Reactを始めPHP(Laravel)・Ruby on Rails、Swift・Kotlinを使った開発実績も多く、バックエンドからアプリまで幅広く対応しています。Twitterで情報発信しています: https://twitter.com/nijibox_jp
https://nijibox.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away