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

/Users/username/forge-workspace/compapp1/.template/generate_dynamic/ios_tasks.py294行目に移動します。

この行を変更します。 os.rename(tmp_file, filename)

これに: shutil.move(tmp_file, filename)

再度パッケージします。

ソース

于 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

短期的には、外部ハード ドライブ以外で forge コマンドを実行できますか? 根本的な問題の修正に取り組み、ここで報告します。

于 2012-07-21T16:03:17.377 に答える
1

Ubuntu で iOS パッケージをコンパイルするときに同じ問題が発生しました。暗号化されたホーム ディレクトリがありますが、これがクロス ファイル システムの問題の原因である可能性があります。

幸いなことに、@Amir のすばらしい反応のおかげで、簡単な修正を行うことができました。

http://docs.python.org/dev/library/tempfile.html#tempfile.mkstempから

dir が指定されている場合、ファイルはそのディレクトリに作成されます。それ以外の場合は、デフォルトのディレクトリが使用されます。デフォルトのディレクトリは、プラットフォームに依存するリストから選択されますが、アプリケーションのユーザーは、TMPDIR、TEMP、または TMP 環境変数を設定することにより、ディレクトリの場所を制御できます。

次のコマンドでトリガーを起動して、一時ディレクトリを移動しました。

export TMPDIR="/home/me/tmp"
python /home/me/source/TriggerToolkit/run_trigger_toolkit.py
于 2012-09-26T19:01:55.487 に答える
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 に答える