12

当我尝试在 mac 上运行包 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

4 回答 4

22

Go to /Users/username/forge-workspace/compapp1/.template/generate_dynamic/ios_tasks.py line 294,

change this line: os.rename(tmp_file, filename)

to this one: shutil.move(tmp_file, filename)

Package again.

source

于 2013-03-08T18:07:27.823 回答
6

你用的是外接硬盘吗?如果是这样,看起来我们已经被 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

在短期内,你可以不在你的外置硬盘上运行你的伪造命令吗?我们将解决潜在问题并在此处报告。

于 2012-07-21T16:03:17.377 回答
1

这在 v1.4.34 Trigger.io 平台版本中已修复 - 请参阅http://docs.trigger.io/en/v1.4/release-notes.html#v1-4-34

于 2013-03-13T11:53:56.843 回答
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
于 2012-09-26T19:01:55.487 回答