iOS(Xcode)上的 Python-Kivy:Foundation 上出现 dlopen 错误:(...):找不到图像
Posted
技术标签:
【中文标题】iOS(Xcode)上的 Python-Kivy:Foundation 上出现 dlopen 错误:(...):找不到图像【英文标题】:Python-Kivy on iOS (Xcode): Got dlopen error on Foundation: (...): image not found 【发布时间】:2021-06-05 17:19:32 【问题描述】:我是 Xcode 和 ios 的新手,但我设法在 iPhone 8 模拟器中构建和测试了我的 Python-Kivy 应用程序。
我将我的 Apple ID 用作“开发人员团队”。我已经在我的 iPhone (5s) 上批准了这一点。
当我在我的 iPhone 5s(运行 iOS 12.5.1)上部署我的应用程序时,它构建没有问题,但是当我尝试通过按图标运行它时,调试日志显示以下错误:
Foundation 出现 dlopen 错误:dlopen(/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1): image not found
Foundation 出现后备 dlopen 错误:dlopen(/Groups/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1): image not found
2021-02-28 23:09:59.023510+0100 geo-esp-training[457:91731] XPC 连接中断
谁能告诉我这是什么问题?
我可以补充一点,我使用的是运行 MacOS Catalina 10.15.7 和 Xcode 版本 12.4 的 MacBook Pro(2012 年中)。
我还在 Xcode 中的 iPhone 5s 模拟器上运行了我的 Kivy 应用程序。这给出了一个稍微不同的错误,但应用程序确实运行没有任何实际问题。所以问题是:这些“dlopen”错误有多严重?这是与模拟器略有不同的错误:
在 Foundation 上出现 dlopen 错误:dlopen(/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1):找不到合适的图像。确实找到了:/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation: mach-o,但不是为 iOS 模拟器构建的
Foundation 出现后备 dlopen 错误:dlopen(/Groups/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1): image not found
请注意,我在模拟器中没有收到此错误:
2021-02-28 23:09:59.023510+0100 geo-esp-training[457:91731] XPC 连接中断
请注意,我的 Mac 有 29 个“Foundation.framework”文件夹和总共 672 个“*Foundation.framework”文件夹...那么我如何知道要指向哪个文件夹而不是“图像”所在的文件夹'没有找到?
谢谢! 亨利克·R.
PS:我已经尝试在 https://groups.google.com/g/kivy-users/c/2kA4Gcr1czE/m/I6fixBYaAgAJ 和 https://discord.com/channels/423249981340778496/713442856190083094 和 https://developer.apple.com/forums/thread/675071 和 https://github.com/kivy/kivy-ios/issues/592 上发布此问题 - 但没有结果。
这是在物理 iPhone 5s 上运行应用程序时 Xcode 的整个日志输出:
2021-02-28 23:09:53.270436+0100 geo-esp-training[457:91714] [DYMTLInitPlatform] 平台初始化成功
2021-02-28 23:09:53.757600+0100 geo-esp-training[457:91293] [framework] CUIThemeStore: 没有使用 id=0 注册的主题
2021-02-28 23:09:54.007960+0100 geo-esp-training[457:91293] 可用方向:KIVY_ORIENTATION=LandscapeLeft LandscapeRight PortraitUpsideDown
2021-02-28 23:09:54.008907+0100 geo-esp-training[457:91293] 初始化 python
2021-02-28 23:09:54.536792+0100 geo-esp-training[457:91293] 运行 main.py: /var/containers/Bundle/Application/2C4A20A0-A9AA-4AC7-B8A7-1A6322B17DD9/geo -esp-training.app/YourApp/main.pyc
[INFO] [Kivy] v2.1.0.dev0
[INFO] [Kivy] 安装在“/var/containers/Bundle/Application/2C4A20A0-A9AA-4AC7-B8A7-1A6322B17DD9/geo-esp-training.app/lib/python3.8/site-packages/kivy /init.py"
[INFO] [Python] v3.8.2(默认,2021 年 2 月 26 日 22:00:00)
[Clang 12.0.0 (clang-1200.0.32.29)]
[INFO] [Python] 解释器位于“/var/containers/Bundle/Application/2C4A20A0-A9AA-4AC7-B8A7-1A6322B17DD9/geo-esp-training.app/geo-esp-training”
[INFO] [Factory] 已加载 186 个符号
[INFO] [Image] 提供者:img_imageio、img_tex(img_dds、img_sdl2、img_ffpyplayer、img_pil 被忽略)
[INFO] [Text] 提供者:sdl2
[INFO] [Video] Provider: null(['video_ffmpeg', 'video_ffpyplayer'] 被忽略)
Foundation 出现 dlopen 错误:dlopen(/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1): image not found
Foundation 出现后备 dlopen 错误:dlopen(/Groups/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1): image not found
2021-02-28 23:09:59.023510+0100 geo-esp-training[457:91731] XPC 连接中断
[WARNING] [Factory] 忽略类“ScalableLabel”重新声明。当前 - 模块:无,cls:
Traceback(最近一次调用最后一次):
文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第 252 行,在
文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第 180 行,在 __ init __ 中
PermissionError: [Errno 1] Operation not allowed: 'geo-esp-train.cfg'
2021-02-28 23:09:59.085006+0100 geo-esp-training[457:91293] 应用程序异常退出!
2021-02-28 23:09:59.294003+0100 geo-esp-training[457:91293] 离开
编辑(添加)- 3 月 10 日:
我仍然没有找到解决方案,也没有在我发布此“dlopen”问题的论坛上收到任何答复。 有人让我尝试更新的 iPhone,所以我买了 iPhone 7。 我的 Python-Kivy 应用程序在 iPhone 7 模拟器(在 Xcode 中)上运行没有任何实际问题。但是物理 iPhone 7 给出了与 iPhone 5s 相同的错误。以下是 Xcode 日志输出的相关部分:
Foundation 出现 dlopen 错误:dlopen(/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1): image not found
Foundation 出现后备 dlopen 错误:dlopen(/Groups/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation, 1): image not found
Traceback(最近一次调用最后一次):
文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第 252 行,在
文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第 180 行,在 init 中
PermissionError: [Errno 1] Operation not allowed: 'geo-esp-train.cfg'
2021-03-10 14:18:50.105679+0100 geo-esp-training[448:20514] 应用程序异常退出!
2021-03-10 14:18:50.161136+0100 geo-esp-training[448:20514] 离开
请帮忙!让这个应用在 iOS 上运行非常重要!
PS:我从上面删除了以下内容!它与当前的问题并不真正相关:
[WARNING] [Factory] 忽略类“ScalableLabel”重新声明。当前 - 模块:无,cls:
【问题讨论】:
【参考方案1】:解决了!
事实证明,Xcode 和 iOS 以及 dlopen 找不到 'Foundation.framework' 'image' 并不是真正的问题。
Python 给出了这个错误日志:
Traceback (most recent call last):
File "/Users/henrik/geo-esp-training-ios/YourApp/main.py", line 252, in < module >
File "/Users/henrik/geo-esp-training-ios/YourApp/main.py", line 180, in __ init __
PermissionError: [Errno 1] Operation not permitted: 'geo-esp-train.cfg'
2021-03-10 14:18:50.105679+0100 geo-esp-training[448:20514] Application quit abnormally!
2021-03-10 14:18:50.161136+0100 geo-esp-training[448:20514] Leaving
解决方案是在 Python-Kivy 中主动指定我的数据文件必须写入应用用户数据目录:
class RootLayout(FloatLayout): # This is the root widget of my Kivy app
def __init__(self, **kwargs):
super().__init__(**kwargs)
app = App.get_running_app()
print("app.directory = ", app.directory)
print("app.user_data_dir = ", app.user_data_dir)
global configfilename, user_data_dir_path
configfilename = os.path.join(app.user_data_dir, 'geo-esp-train.cfg')
user_data_dir_path = app.user_data_dir # Used for other data files.
【讨论】:
以上是关于iOS(Xcode)上的 Python-Kivy:Foundation 上出现 dlopen 错误:(...):找不到图像的主要内容,如果未能解决你的问题,请参考以下文章
由 xcode 4.6 与 xcode 5.0 创建时,iOS 应用程序在 iOS 7.0 设备上的行为不同
iOS 10 / Xcode 8 设备上的 NSLog 似乎被截断了?为啥?