iOS上的PythonKivy(Xcode):在基础上出现dlopen错误:(…):找不到映像

2024-04-26 09:31:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉Xcode和iOS,但我设法在iPhone8模拟器中构建并测试了我的Python Kivy应用程序

我使用我的Apple ID作为“开发团队”。我已经在我的iPhone(5s)上批准了这一点

当我在iPhone 5s(运行iOS 12.5.1)上部署我的应用程序时,它不会出现问题,但当我尝试按图标运行时,调试日志会显示以下错误:

在Foundation上获取dlopen错误:dlopen(/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation,1):未找到映像

在Foundation上获取回退dlopen错误:dlopen(/Groups/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation,1):未找到映像

2021-02-28 23:09:59.023510+0100 geo esp培训[457:91731]XPC连接中断

谁能告诉我有什么问题吗

我可以补充一点,我使用的是MacBookPro(2012年年中),运行MacOS Catalina 10.15.7和Xcode 12.4版

我还用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):未找到映像

请注意,我在模拟器中没有收到此错误:

2021-02-28 23:09:59.023510+0100 geo esp培训[457:91731]XPC连接中断

请注意,我的Mac有29个“Foundation.framework”文件夹和672个“*Foundation.framework”文件夹。。。那么,我如何知道指向哪个文件夹而不是找不到“图像”的文件夹呢

谢谢大家!! 亨里克R

PS:我已经试着把这个问题发布在{a1}和{a2}和{a3}和{a4}上,但是没有结果

这是Xcode在物理iPhone 5s上运行应用程序时的全部日志输出:

2021-02-28 23:09:53.270436+0100地理esp培训[457:91714][DYMTLInitPlatform]平台初始化成功

2021-02-28 23:09:53.757600+0100地理esp培训[457:91293][framework]CUIThemeStore:没有注册id=0的主题

2021-02-28 23:09:54.007960+0100地理esp培训[457:91293]可用方向:KIVY_方向=景观左景观右肖像向上向下

2021-02-28 23:09:54.008907+0100地理esp培训[457:91293]

2021-02-28 23:09:54.536792+0100地理esp培训[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

[信息][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)

[铿锵12.0.0(铿锵-1200.0.32.29)]

[信息][Python]解释器位于“/var/containers/Bundle/Application/2C4A20A0-A9AA-4AC7-B8A7-1A6322B17DD9/geo esp training.app/geo esp training”

[信息][工厂]已加载186个符号

[信息][图像]提供商:img_imageio、img_tex(img_dds、img_sdl2、img_ffpyplayer、img_pil忽略)

[信息][文本]提供商:sdl2

[INFO][Video]提供程序:空(['Video\u ffmpeg','Video\u ffpyplayer']已忽略)

在Foundation上获取dlopen错误:dlopen(/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation,1):未找到映像

基础上出现回退dlopen错误:dlopen(/Groups/System/Library/Framew)Works/Foundation.framework/Versions/Current/Foundation,1):未找到映像

2021-02-28 23:09:59.023510+0100 geo esp培训[457:91731]XPC连接中断

[警告][工厂]忽略了类“ScalableLabel”的重新声明。当前-模块:无,cls:<;类“sharebox\u ubuntu.ScalableLabel”>;,基类:无,文件名:无。忽略-模块:无,cls:无,基类:标签,文件名:/private/var/containers/Bundle/Application/2C4A20A0-A9AA-4AC7-B8A7-1A6322B17DD9/geo-esp-training.app/YourApp/MyTabbedPanel.kv

回溯(最近一次呼叫最后一次):

文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第252行,在<;模块>

文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第180行,在

PermissionError:[Errno 1]不允许操作:“geo esp train.cfg”

2021-02-28 23:09:59.085006+0100 geo esp培训[457:91293]应用程序异常退出

2021-02-28 23:09:59.294003+0100地理esp培训[457:91293]离开

编辑(添加)-3月10日:

我仍然没有找到解决方案,也没有在我发布这个“dlopen”问题的论坛上收到任何回复。 有人让我试用一部更新的iPhone,所以我买了一部iPhone7。 我的Python Kivy应用程序在iPhone7模拟器(Xcode)上运行时没有任何实际问题。但物理版iPhone7与iPhone5s的错误相同。以下是Xcode日志输出的相关部分:

在Foundation上获取dlopen错误:dlopen(/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation,1):未找到映像

在Foundation上获取回退dlopen错误:dlopen(/Groups/System/Library/Frameworks/Foundation.framework/Versions/Current/Foundation,1):未找到映像

回溯(最近一次呼叫最后一次):

文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第252行,在

文件“/Users/henrik/geo-esp-training-ios/YourApp/main.py”,第180行,在init中

PermissionError:[Errno 1]不允许操作:“geo esp train.cfg”

2021-03-10 14:18:50.105679+0100 geo esp培训[448:20514]应用程序异常退出

2021-03-1014:18:50.161136+0100地理esp培训[448:20514]离开

请帮忙!让这个应用程序在iOS上运行非常重要

PS:我从上面删除了以下内容!这与当前的问题无关:

[警告][工厂]忽略了类“ScalableLabel”的重新声明。当前-模块:无,cls:<;类“sharebox\u ubuntu.ScalableLabel”>;,基类:无,文件名:无。忽略-模块:无,cls:无,基类:标签,文件名:/private/var/containers/Bundle/Application/60A4A07E-4A81-49E0-A0CC-4497809CC40A/geo-esp-training.app/YourApp/MyTabbedPanel.kv


Tags: 应用程序错误traininglibraryframeworkcurrentversionssystem
1条回答
网友
1楼 · 发布于 2024-04-26 09:31:54

解决了

事实证明,Xcode、iOS和dlopen找不到“Foundation.framework”“映像”并不是真正的问题

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.

相关问题 更多 >