読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

PythonでiOSアプリを作ることができるKivy for iosの使い方と注意点

Mac&iphone Programming Python

Kivy: Interactive Applications in Python

Kivy: Interactive Applications in Python

目次

はじめに

先日、Kivyを使った、

マルチプラットフォームにおける

Hello world GUIアプリの作り方を説明しました。

myenigma.hatenablog.com

 

今回はその中でもiOSアプリを作成できる、

kivy for iOSによるアプリの作り方の注意点や、

ツール群の使い方の説明をしたいと思います。

github.com

 

ネットで調べると、

いくつかkivy for iOSでモバイルアプリを作る記事を見かけますが、

build_all.shを使う古いバージョンの説明が多いため、

新しいバージョンの説明をしたいと思います。

 

インストール方法と注意点

kivyのインストール方法は下記を参照下さい。

myenigma.hatenablog.com

 

しかし、いくつか注意点があります。

注意点1: kivy for iosはPython2.7.xしか対応していない。

Python3.3.xは現在対応中らしいので、

MacにはPython2.7.xをインストールした状態で、

kivy for iosを利用する必要があります。

注意点2: build_all.shを使う方法は廃止

以前のkivy for iosではbuild_all.shを使う方法が利用されていましたが、

その方法は新しいバージョンでは廃止されたようです。

もし古いバージョンのソフトを使いたい場合は、

old-toolchainというタグのkivy for iosを使いましょう。

 

kivy for iosで簡単なiOSアプリを作って、端末にインストールする方法

下記の記事を参照下さい

myenigma.hatenablog.com

 

kivy for iosのtoolchain.pyの使い方

kivy for iosは基本的に、

toolchain.pyというスクリプトを使って、

iOS用のアプリをPythonコードから生成します。

下記がそれぞれのtoolchain.pyのオプションの説明です。

 

recipes: kivy for ios用のビルドされたライブラリの一覧を表示

recipesオプションは、

kivy for iosで使用できるライブラリの一覧とそのバージョンを

表示するオプションです。

kivy for iOSでは利用できるPythonモジュールをrecipeと言うようです。

 

下記のコマンドでライブラリの一覧とバージョンを表示することができます。

$ ./toolchain.py recipes

f:id:meison_amsl:20160507111554p:plain

 

つまり、上記のリストに書かれたライブラリは、

iOS用のPythonスクリプトの中で利用できるということです。

逆に言うと、こちらのリスト以外のモジュールは

kivy for iosでは使用できないということのようです。

 

status: kivy for ios用のレシピとビルド状態の表示

statusオプションは、先ほどのrecepiesに似ていますが、

それぞれのrecepiesのビルド状況を

表示するオプションです.

$ ./toolchain.py status

f:id:meison_amsl:20160507112949p:plain

まだビルドされていないライブラリは、

下記のbuildオプションでビルドすることができます。

 

build: 指定したレシピをビルド

buildオプションは、

指定したレシピをビルドするコマンドです。

$ ./toolchain.py build numpy

上記のビルドをすることで、

iOSのアプリ上でそのモジュールが使えるようになります。

 

clean: 指定したレシピをクリーン

cleanは指定したレシピのビルドを

クリーンするオプションです。

$ ./toolchain.py build numpy

レシピを再ビルドしたい時やアップデートしたい時に使うようです。

 

distcleanという似たようなコマンドもありますが、

こちらはどのような用途で使うのかわかりませんでした。。。

 

create: xcodeのプロジェクトを作成

下記のコマンドで指定したディレクトリの

Pythonソフトをxcodeのプロジェクトに変換します。

$ # ./toolchain.py create title app_directory

$ ./toolchain.py create test ~/test

ちなみに、アプリのタイトルはスペースを含まないものである必要があり、

指定するのはディレクトリで、

起点となるPythonスクリプトはmain.pyという名前である必要があります。

加えて、指定するディレクトリはフルパスである必要があります。

(相対パスはNGです)

 

そして、無事xcodeのプロジェクトが生成された場合は、

下記のコマンドでxcodeからプロジェクトを開くことができます。

open test/test.xcodeproj

ちなみに一度プロジェクトを作ってしまうと、

そのパスを使ってビルドを実施するため、

ディレクトリを移動させるとビルドが通らなくなるため注意しましょう。

 

update: 既存のxcodeプロジェクトを更新

前述のbuildコマンドを使って、

必要なレシピをビルドした際に、

その前にcreateで作成してしまったxcodeのprojectに

そのレシピを使いたい場合はこのupdateオプションを使います。

$ ./toolchain.py update test

以上のコマンドでtestプロジェクトが、

最新のビルド結果を使って再構築されます。

 

launchimage: 画像データからアプリのLaunch画像をxcodeのプロジェクトに登録

launchimageは、

アプリが立ち上がる時の画像(Launch画像)を

xcodeの設定に登録するオプションです。

 

まず初めにLaunch画像用の画像ファイルを準備し、

下記のコマンドでcreateで作成したプロジェクトに追加します。

$ #./toolchain.py launchimage app_dir image_path

$ ./toolchain.py launchimage test1-ios launch_image.png

 

しかし、自分の環境の場合

そのままビルドしてもlaunch画像は設定されませんでした。

下記のように、

xcodeの設定 General->Launch Image Sourceを

LaunchImageを設定する必要がありました。

f:id:meison_amsl:20160507155325p:plain

 

すると、アプリを起動した時に

launch画像が表示されるようになりました。

  

icon: 画像データからアプリのアイコン画像をxcodeのプロジェクトに登録

アプリ用の画像データをxcodeのプロジェクトデータに追加するオプションです。

 

まず初めにアプリ用の画像データを作成し、

下記のコマンドでcreateで作成したプロジェクトに追加します。

$ #./toolchain.py icon app_dir image_path

$ ./toolchain.py icon test1-ios icon_image.png

すると、xcodeにアイコンの画像データが追加されるので、

そのままアプリを端末に送ると、

下記のようにアプリのアイコン画像が設定されます。

f:id:meison_amsl:20160507153435p:plain

 

一つ注意点として、

事前に作成したアプリの画像データは縦横同じ長さでなくては、

アプリのビルドが失敗します。

下記のWebサイトを使うことで

アプリ用の縦横同じサイズの画像が作れます。

iconifier.net

 

最後に

これで簡単なiOSアプリはPythonで作れそうです(^^)。

 

あとは、カメラや加速度計などの

センサのデータなどに

どのようにPythonからアクセスできるかを調べて、

追記したいと思います。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

Kivy: Interactive Applications in Python

Kivy: Interactive Applications in Python