こんにちは.
kivyで作ったpythonアプリをxcodeに入れる際につまづいた話を書いていきます.
開発環境
- macOS:Catalina(10.15.7)
- Xcode:12.2
- python 3.7.4
- kivy:1.11.1
pythonは2系の方がいいという本の忠告をガン無視.BigSurも容量をとるためインストールせず.(こういうことをしているからエラーが起きるのでは,と思いつつ)
一応参考程度にmain.pyの中身だけ置いておきます.
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.uix.camera import Camera import numpy as np class CaptureButton(Button): def __init__(self,**kwargs): super(CaptureButton, self).__init__() def on_press(self): print(self.parent.children[0]) self.parent.children[0].export_to_png('test.png') class Root(BoxLayout): """docstring for Root""" orientation = 'vertical' X3 = np.array([1,2,3]) def __init__(self,**kwargs): super(Root, self).__init__() btn = CaptureButton() cmr = Camera(resolution=[0,0]) self.add_widget(btn) self.add_widget(cmr) class TestTitle(App): """docstring for TestTitle""" def build(self): return Root() TestTitle().run()
カメラで写真を取れるアプリ.(ターミナル上ではちゃんと動く)
確認用なのでコードは適当,numpyとかも適当に入れました.
エラー1
building for iOS Simulator, but linking in object file built for iOS, file ‘/Users/…/kivy-ios-master/dist/lib/libnpysort.a’ for architecture arm64
のエラーが出た.
これはXcode12から起こるもので,arm64をアーキテクチャから除外しないといけないらしい.
リリースするときは上の画像の他にReleaseでも同じことをしなきゃいけないっぽい.
このエラーはこれで解決.
エラー2
targeted OS version does not support use of thread local variables in __PyArray_SigintHandler for architecture x86_64
こんなのが出てきた.なんやこいつは.
対象のOSではサポートされていない技術が使われてしまっているらしい.
ここが8.1になっていたので,9.0とすることで解決.
参考
- https://stackoverflow.com/questions/52282646/build-error-targeted-os-version-does-not-support-use-of-thread-local-variables
- https://stackoverflow.com/questions/63607158/xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios
おしまい
コメント