こんにちは.
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
おしまい
コメント