python + kivy 앱을 iPhone 실제 기기 전송시주의 사항

전제



이 기사 (필자 작성) 에서 pong.py 를 한 번 실기 전송했는데, pong.pypython2 계로 쓰여져 있기 때문에, python3 계의 앱이라면 조금 궁리가 필요한 것 같습니다.
본 기사에서는 비망을 위해서, 대처 내용을 기재합니다.
또한 lightning 케이블의 상태가 좋지 않아 python3系 의 자작 앱의 실제 기계 전송은 아직 되어 있지 않습니다.
그러나, XCodeiOSSimulator 에서는 기동을 확인할 수 있었기 때문에, 대략 OK라고 생각하고 있습니다.
실제 기계 전송할 수있었습니다!

참고 1 toolchain.py의 시방 수정


toolchain.py 의 시반에는 #!/usr/bin/env python 라고 기재되어 있습니다.
※ toolchain.py는 이쪽.
내 환경에서 env python를 시작하면 python2.7.10가 시작되었습니다.


즉, toolchain.py 를 기동하는 python 를 지정하지 않으면, python2 계에서 실행되어 버립니다.

해결 방법


env pythonpython3 계로 하는 것이 귀찮았던 방법을 모르기 때문에, toolchain.py 의 시반을 직접 python3 계의 python 로 수정했습니다.

참고 2 .kv 파일의 파일 이름에 대문자를 사용하지 않음



처음에는 bigApple.kv 와 같이 여러 단어를 Camel 케이스로 연결한 .kv 파일을 사용했습니다.
이것은 Mac 위의 기동에서는 아무 문제없이 움직입니다만, iOSSimulator 에서는 잘 움직이지 않았습니다.
증상으로 iOSSimulator 에서 앱을 시작한 후 새까만 화면이 계속 표시됩니다. 로그에는 특히 바뀐 것은 아무것도 출력되지 않고, 상당히 곤란했습니다. .

해결 방법



아마 대문자를 사용하고 있는 것이 문제이므로 bigapple.kv 이나 apple.kv 등으로 하면 해결합니다.
※당연히, if __name__ == '__main__': 내에서 run() 를 실행하는 클래스명과 일치시킬 필요가 있습니다.

비고



@dario_okazaki 님의 이 기사 에서 @taashi 님이 코멘트 되고 있는 내용과 같다고 생각합니다.

참고 3 .kv 파일에서 main import 방법



@dario_okazaki 님의 이 기사 에서 bookSearch.kv 의 첫 번째 줄에 #: import main main 라는 설명이 있습니다.
이렇게 하면 .kv 파일에서 .py 파일의 변수, 함수 등에 액세스할 수 있습니다.
이것도 Mac 위에서는 문제 없게 기동합니다만, iOSSimulator 그럼 main 모듈을 잘 찾을 수 없는 것 같아, 움직이지 않았습니다.

해결 방법


#: import main __main__ 로 하여 해결했습니다.

참고 4 자체 제작 모듈 가져 오기


main.py 이외에 자작의 모듈을 준비해 읽어들일 수 있는 방법입니다만, iOSSimulator 그럼 잘 되지 않았습니다.
패스가 통과하지 않았기 때문이었습니다.

해결 방법



템플릿 파일을 수정하고 경로를 통과합니다.
수정 파일의 위치:.../kivy-ios/tools/templates/{{ cookiecutter.project_name }}-ios
수정 파일


수정 부분


수정 내용( main.py 과 같은 계층에 있는 모듈을 로드하고 싶은 경우)%@/YourApp 를 추가합니다.


해설


toolchain.py 에서 XCode 프로젝트를 create 그러면 (적어도 내 환경에서는) 아래 디렉토리에 파일들이 만들어집니다.~/Library/Developer/CoreSimulator/Devices/[UUID1]/data/Containers/Bundle/Application/[UUID2]/[アプリ名].app[アプリ名].app 는 파일이 아니라 디렉토리
[アプリ名].app 는 상기의 main.m 로 말한다 %@ 에 해당합니다. 따라서 패스가 통과하고 있습니다.
그러나, [アプリ名].app 에 들어 봐도, main.pypython 모듈은 보이지 않습니다.

그래서 [アプリ名].app 안의 YourApp 에 들어가 보면 main.pyc 또는 python 모듈을 찾을 수 있습니다.
즉, 여기에 패스를 통과하면 읽을 수 있습니다.

덧붙여서, kivy 의 라이브러리는 [アプリ名].app/lib/python3.7/site-packages/kivy 에 있으므로, 패스가 다니고 있어 사용할 수 있습니다.
# python 버전은 사람에 따라 다를 수 있습니다.

그 밖에 무엇인가 주의점을 발견하면 추기해 갑니다.

좋은 웹페이지 즐겨찾기