Trigger.io [Errno 18]跨设备链接

13

在 Mac 上运行 package ios 时,我遇到了以下问题:

[INFO] Forge tools running at version 3.3.5
[INFO] Update result: you already have the latest tools
[INFO] Configuration is unchanged: using existing templates
[INFO] Checking JavaScript files...
[INFO] JavaScript check complete
[INFO] Verifying your configuration settings...
[INFO] Configuration settings check complete
[INFO] Development build created. Use forge run to run your app.
[INFO] Forge tools running at version 3.3.5
[INFO] Checking JavaScript files...
[INFO] JavaScript check complete
[INFO] Verifying your configuration settings...
[INFO] Configuration settings check complete
[INFO] Starting package process for iOS
[INFO] Going to package: /Users/******************/device-ios.app
[INFO] Plist OK
[INFO] 1 Provisioned Device(s):
[INFO] ['c**************************b']
[ERROR] [Errno 18] Cross-device link

应用程序配置、本地配置等所有设置都被正确填写。

以下是调试输出。

........
in run
    self._run_task(func_name, args, kw)
  File "/Users/username/forge-workspace/compapp1/.template/generate_dynamic/build.py", line 293, in _run_task
    self.tasks[func_name](self, *args, **kw)
  File "/Users/username/forge-workspace/compapp1/.template/generate_dynamic/ios_tasks.py", line 568, in package_ios
    certificate_password=certificate_password,
  File "/Users/username/forge-workspace/compapp1/.template/generate_dynamic/ios_tasks.py", line 362, in create_ipa_from_app
    self._create_entitlements_file(build, plist_dict, temp_file_path)
  File "/Users/username/forge-workspace/compapp1/.template/generate_dynamic/ios_tasks.py", line 299, in _create_entitlements_file
    _replace_in_file(temp_file_path, 'APP_ID', bundle_id)
  File "/Users/username/forge-workspace/compapp1/.template/generate_dynamic/ios_tasks.py", line 294, in _replace_in_file
    os.rename(tmp_file, filename)
OSError: [Errno 18] Cross-device link
4个回答

23

前往路径/Users/用户名/forge-workspace/compapp1/.template/generate_dynamic/ios_tasks.py的第294行,

将此行更改为: shutil.move(tmp_file, filename)

重新打包。

源代码


谢谢。上面的回答帮助我解决了我遇到的问题。 - Harish Kannan

7

您是否正在使用外部硬盘?如果是的话,看起来我们在这里遭受了Python的限制(http://docs.python.org/library/os.html#os.rename):

The operation may fail on some Unix flavors if src and dst are on different filesystems

短期内,您能否不使用外置硬盘运行您的锻造命令?我们将解决这个根本问题并在此处汇报。


1
有进展了吗?我正在处理的驱动器不是外部驱动器,但也不是我的启动卷。构建过程不应该触及我的启动卷上的任何文件(尽管Trigger Toolkit已安装在那里)。 - Ben Englert
这个问题现在已经在v1.4.34平台中得到了修复。 - Amir Nathoo

1

1

我在Ubuntu上编译iOS包时遇到了相同的问题。我的家目录是加密的,这可能是跨文件系统问题的原因。

幸运的是,由于@Amir的出色回答,我能够找到一个简单的解决方法。

来自http://docs.python.org/dev/library/tempfile.html#tempfile.mkstemp

如果指定了dir,则文件将在该目录中创建;否则,将使用默认目录。默认目录从平台相关列表中选择,但应用程序的用户可以通过设置TMPDIR、TEMP或TMP环境变量来控制目录位置。

我只需通过以下命令启动Trigger来移动临时目录:

export TMPDIR="/home/me/tmp"
python /home/me/source/TriggerToolkit/run_trigger_toolkit.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接