kivy-iosで開発したiPhoneアプリを実機で稼働

kivy-iosで開発したiPhoneアプリを、AppleDeveloperProgram登録なしで、検証用に実機で稼働する方法について紹介する。

筆者のマシン
Mac mac mini (M1, 2020)
OS Big Sur バージョン 11.4


ここでは次の手順で説明する。

  1. はじめに
  2. kivy-iosでのiPhoneアプリの開発
  3. XCodeプロジェクトの作成とSimulator実行
  4. 実機での稼働

はじめに

開発環境は次の通り。

ソフトウェア 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」

実機側には「信頼されたいないデベロッパ」と表示される。このメッセージを「キャンセル」で閉じ、下記の手順で実機に対しアプリの使用を許可する。

  1. 「設定」>「一般」>「プロファイルとデバイス管理」へ進む
  2. 「デベロッパApp」に、「Apple Development:自分のXCodeに設定したAppleID」が表示されているのでタップする
  3. 「実行するには開発元を信頼する必要があります。」とあるので、XCodeに設定したAppleIDアカウントのApple Developmentをタップする
  4. このAppleIDのアプリを信頼するかどうかの確認画面が表示されるので「信頼」をタップ

(5) XCodeで「dyld: Library not loaded: /System/Library/Frameworks/AVFAudio.framework/AVFAudio」

こちらを参考にし、下記手順でXCodeプロジェクトにライブラリを追加した。

  1. [TARGETS] > [Build Phases] > [Link Binary With Libraries]
  2. “AVFAudio.framework”を追加し、Statusは”Optional”を指定

これらの設定後、XCodeのSimulatorで実機iPhoneを指定し実行すると、実機側でアプリが起動する。

以上

シェアする

  • このエントリーをはてなブックマークに追加

フォローする