kivyアプリをxcodeにいれる時につまづいた話

error

こんにちは.

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をアーキテクチャから除外しないといけないらしい.

Debugの部分から除外

リリースするときは上の画像の他にReleaseでも同じことをしなきゃいけないっぽい.

このエラーはこれで解決.


エラー2

targeted OS version does not support use of thread local variables in __PyArray_SigintHandler for architecture x86_64

こんなのが出てきた.なんやこいつは.

対象のOSではサポートされていない技術が使われてしまっているらしい.

iOS9.0に

ここが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

おしまい

コメント

タイトルとURLをコピーしました