kivy-iosで開発したiPhoneアプリを、AppleDeveloperProgram登録なしで、検証用に実機で稼働する方法について紹介する。
筆者のマシン | |
---|---|
Mac | mac mini (M1, 2020) |
OS | Big Sur バージョン 11.4 |
ここでは次の手順で説明する。
- はじめに
- kivy-iosでのiPhoneアプリの開発
- XCodeプロジェクトの作成とSimulator実行
- 実機での稼働
はじめに
開発環境は次の通り。
ソフトウェア | Version | |
---|---|---|
Python | 3.8.2 | インストール手順 |
kivy-ios | 12.5 | インストール手順 |
XCode | 12.5 | インストール手順 |
kivy-iosでのiPhoneアプリの開発
今回は、kivy-iosを用い、次のような四角形が表示されるアプリを開発した。
ソース main.py は下記。今回 kvファイルは使わず、全てpythonで記述した。RelativeLayoutについては、こちらの記事を参考にさせて頂いた。
from kivy.app import App
from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import Color, Line, Rotate
class RootWidget(RelativeLayout):# RelativeLayoutを指定
def __init__(self):
super(RootWidget, self).__init__()
self.size_hint = (None, None)
self.pos = (350, 100) # このcanvasの左下ポジション座標
with self.canvas:
Rotate(angle=0)
Color (rgb=(1,1,1)) # 白
Line(points=[0, 0, 270, 0, 270, 270, 0, 270], width=2, close=True)
class SubWidget(RelativeLayout):
def __init__(self, **kwargs):
super(SubWidget, self).__init__()
self.size_hint = (None, None)
self.size = kwargs.get('size')
self.pos = kwargs.get('pos')
self.rgbcolor = kwargs.get('rgbcolor')
self.addLine(0)
self.addLine(20)
self.addLine(20)
def addLine(self, myangle):
with self.canvas:
Rotate(angle=myangle) #反時計回りにmyangle度回転
Color(rgb=self.rgbcolor)
Line(points=[0, 0, 200, 0, 200, 200, 0, 200], width=2, close=True)
class MyApp(App):
def build(self):
# root widget
# 緑線での四角形が1つ
root = RootWidget()
# sub widget-1
# 緑線での四角形が3つ
# parent Widget の中心点から相対で X軸へ+50,Y軸へ+50移動
sw1 = SubWidget(size=(200, 200), pos=(50,50), rgbcolor=(0,1,0))
root.add_widget(sw1)
# sub widget-2
# 赤線での四角形が3つ
# parent Widget の中心点から相対で X軸へ-220,Y軸へ-50移動
sw2 = SubWidget(size=(200, 200), pos=(-220,-50), rgbcolor=(1, 0, 0))
root.add_widget(sw2)
return root
if __name__ == '__main__':
MyApp().run()
このコードを下記コマンドで実行すると、上に示したような、白、緑、赤の四角形が描画される。
user@hogenoMac-mini kivy % python3 main.py
XCodeプロジェクトの作成とSimulator実行
下記コマンドを実行し、XCodeプロジェクトを作成する。ここで、main.py は、xcode-sample/sample8 ディレクトリに存在する。
user@hogenoMac-mini xcode_sample % toolchain create Sample8 sample8
アプリのタイトルは「Sample8」とした。
下記コマンドを実行し、作成したXCodeプロジェクトを起動する。
user@hogenoMac-mini xcode_sample % open sample8-ios/sample8.xcodeproj
XCodeの上部で Simulator を選択し、▶︎アイコンをクリックして実行する。ここでは、Simulatorで「iPhone 12」を指定した。
実機での稼働
筆者の実機iPhone(iPhone SE, OS 14.6)で起動する。実機で動かす手順はこちらを参考にさせて頂いた。AppleDeveloperProgramへ登録せずに、実機テストする方法である。
以下、実機で稼働させるアプリのXCodeプロジェクトを起動した状態で作業を実施する。
XCodeにAppleIDを登録
メニュー[XCode] > [Preferences…]で「Accounts」を指定し、自分のアカウントを追加する。
XCodeを実行しているMacと実機iPhoneを接続
筆者はiPhoneの充電で使用しているケーブルを利用した。
iPhone側に、「このコンピュータを信頼しますか?」と表示された場合は、「信頼」をタップする。
XCodeプロジェクトの設定
特に設定変更せずにビルドすると、幾つかの問題が発生しBuild Failedとなった。ここでは、その時の対応方法を紹介する。
(1)XCodeに「The iOS deployment target ‘IPHONEOS_DEPLOYMENT_TARGET’ is set to 8.1, but the range of supported deployment target versions is 9.0 to 14.5.99.」
‘IPHONEOS_DEPLOYMENT_TARGET’が8.1になっておりサポート対象と一致しない、と言うことなのでデプロイOSの最小バージョンを今回は11.0に設定する。
具体的には、下記の双方を値を11.0に設定する。
- [PROJECT] > [Info]タブ > [Deployment Target] > [iOS Deployment Target]の値
- [TARGETS] > [General]タブ > [Deployment Info] > [iOS]の値
(2) XCodeに「Signing for “sample8” requires a development team. Select a development team in the Signing & Capabilities editor.」
こちらを参考にし、[TARGETS] > [Signing & Capabilities] > [Team] の値で、実機のiPhoneを選択する。
(3) XCodeで「キーチェーン”ログイン”のパスワードが要求」
こちらを参考にし、筆者のMac miniマシンのログインパスワードを入力する。
(4) XCodeで「Could not launch “sample8” Security」
実機側には「信頼されたいないデベロッパ」と表示される。このメッセージを「キャンセル」で閉じ、下記の手順で実機に対しアプリの使用を許可する。
- 「設定」>「一般」>「プロファイルとデバイス管理」へ進む
- 「デベロッパApp」に、「Apple Development:自分のXCodeに設定したAppleID」が表示されているのでタップする
- 「実行するには開発元を信頼する必要があります。」とあるので、XCodeに設定したAppleIDアカウントのApple Developmentをタップする
- このAppleIDのアプリを信頼するかどうかの確認画面が表示されるので「信頼」をタップ
(5) XCodeで「dyld: Library not loaded: /System/Library/Frameworks/AVFAudio.framework/AVFAudio」
こちらを参考にし、下記手順でXCodeプロジェクトにライブラリを追加した。
- [TARGETS] > [Build Phases] > [Link Binary With Libraries]
- “AVFAudio.framework”を追加し、Statusは”Optional”を指定
これらの設定後、XCodeのSimulatorで実機iPhoneを指定し実行すると、実機側でアプリが起動する。
以上