4

RubyMotion で CocoaPods の依存関係を動作させるには、さまざまな問題があります。まず、dependency 'JSONKit'Rakefile に追加して実行rakeすると、エラーで中止されcan't convert Pathname into Stringます。rake --trace次に、次の出力が生成されます。

** Invoke default (first_time)
** Invoke simulator (first_time)
** Invoke build:simulator (first_time)
** Execute build:simulator
/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags "-I. -I." JSONKit.h -o "JSONKit.bridgesupport"
invalid option: --no-64-bit
Usage: gen_bridge_metadata [options] <headers...>
Use the `-h' flag or consult gen_bridge_metadata(1) for help.
rake aborted!
Command failed with status (1): [/usr/bin/gen_bridge_metadata --format comp...]
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils.rb:53:in `block in create_shell_runner'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils.rb:45:in `call'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils.rb:45:in `sh'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `sh'
/Library/RubyMotion/lib/motion/project/vendor.rb:93:in `block in build_static'
/Library/RubyMotion/lib/motion/project/vendor.rb:34:in `chdir'
/Library/RubyMotion/lib/motion/project/vendor.rb:34:in `build_static'
/Library/RubyMotion/lib/motion/project/vendor.rb:23:in `build'
/Library/RubyMotion/lib/motion/project/builder.rb:37:in `block in build'
/Library/RubyMotion/lib/motion/project/builder.rb:36:in `each'
/Library/RubyMotion/lib/motion/project/builder.rb:36:in `build'
/Library/RubyMotion/lib/motion/project/app.rb:50:in `build'
/Library/RubyMotion/lib/motion/project.rb:33:in `block (2 levels) in <top (required)>'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:176:in `block in invoke_prerequisites'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `each'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `invoke_prerequisites'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:157:in `block in invoke_with_call_chain'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:176:in `block in invoke_prerequisites'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `each'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `invoke_prerequisites'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:157:in `block in invoke_with_call_chain'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/Users/xxxx/.rbenv/versions/1.9.3-p194/bin/rake:32:in `<main>'
Tasks: TOP => default => simulator => build:simulator

プロジェクトの vendor ディレクトリには、さまざまな JSONKit ファイルが含まれています。

次に、別の RubyMotion アプリで、dependency 'Nimbus'Rakefile に追加してからrakeアプリをビルドすると、コードで Nimbus 関連のものを使用しようとすると、初期化されていない定数エラーが発生し、ベンダー ディレクトリが作成されません。

この 2 つの場合の問題点は何ですか?

4

2 に答える 2

4

ここにはいくつかの問題があります。

パス名を文字列に変換できません

更新: 2012 年 5 月 7 日以降、sudo motion update修正される可能性があります。

このエラーは、Ruby 1.9 を使用していることが原因です。ドキュメントには明示的に記載されていませんが、これを設定する例がコマンドsudoでの使用を参照しているという事実は、 gem installOS X の組み込みの ruby​​ (1.8.7) を実行していると想定していることを意味します。プロジェクトをシステム Ruby に切り替える場合 (その中に.rbenv-versionファイルを追加しますsystem)。あるいは、1.9 に固執したい場合は、 の 22 行目を次のように変更でき/Library/RubyMotion/lib/motion/project/vendor.rbます。

App.info 'Build', @path.to_s

これを行うと、次のようなエラーが発生する可能性が高くなります。

ERROR! Building vendor project `./vendor/JSONKit' failed to create at least one `.a' library.`

同じファイルの 77 行目を次のように編集する必要があります。

objs = Dir.glob('**/*.o') # Removed the leading "*/"

その後、rake最終的に正しく動作するはずです。

これらの問題に関する問題がリポジトリに提出されましたmotion-cocoapods: https://github.com/HipByte/motion-cocoapods/issues/1

さらに、これを使用して公式のサポート チケットを提出しましたmotion support。(サポートを含むこの真新しい製品にお金を支払ったことを忘れないでください。使用してください!)

ニンバス

ここでの問題は、最上位の cocoapod が必要なことです。「サブスペック」があるため、それらを直接要求する必要があるため、おそらくdependency 'Nimbus/Core'代わりになります。ここでそれらの完全なリストを見ることができます(s.subspecエントリを参照してください)

于 2012-05-06T17:03:13.047 に答える
1

--no-64-bit フラグに関するコンパイル エラーは、Snow Leopard で RubyMotion を使用しているためです。https://gist.github.com/2597428に従って /Library/RubyMotion/lib/motion/project/vendor.rb を更新します

このバグは、Laurent Sansonetti によって確認されています。

やあ、

ご報告ありがとうございます!問題は --no-64-bit フラグが Lion に追加され、Snow Leopard を実行しているように見えることです。これを修正します。

ローラン

于 2012-05-06T18:51:06.490 に答える