2011-11-04 3 views
0

私はRubyで書かれた2つのプロジェクトをRubyを使って.apkにパックし、Androidデバイスにプッシュすることができます。どちらのプロジェクトも私の電話機と電話機エミュレータでコンパイルして実行しますが、両方のプロジェクトで '' json ''という行を追加し、何も変えずに起動時に失敗し、電話のホームページに戻します。だから間違いなくその行のものです。これを引き起こす可能性のあるアイデアは何ですか?RubootプロジェクトでJSONを使用する

答えて

1

同じ問題がありました。クラッシュについての詳細は、

adb logcat 

です。そこを見ると、スタックオーバーフローに関するエラーメッセージが表示されます。あなただけのJSONは/純粋必要とすることにより、このスタックオーバーフローを回避することができます

require 'json/pure' 

これはまだ一般的な問題を解決しない:ほとんどはスタックオーバーフローにつながるのコールが必要です。 Googleを使って、スタックオーバーフローでクラッシュするまで、アンドロイドはネストされた再帰呼び出しをあまり多く持たないことが分かりました。私が指摘した解決策は、再帰の代わりに反復を使用することでした。 :)

だから、私は本当の解決策を知りません。大きな宝石や有用な宝石のほとんどは、同じ問題を引き起こします。 yaml、httpi、またはnokogiri。

編集: Googleメーリングリストにも同様の質問があります。

+0

メーリングリストに同様の質問がある場合は、リンクしてください。 –

2

Rubotoは増加したスタックサイズでコードを実行するためのヘルパーメソッドを提供しています:

require 'ruboto/util/stack' 

with_large_stack{require 'json'} 

または

with_large_stack do 
    require 'json' 
end 

これは深い再帰を許可する大きなスタックとは別のスレッドでコードを実行します。 with_large_stackメソッドのデフォルトのスタックサイズは64KBです。あなたは、オプションの整数引数またはオプションのハッシュを使用してこの値を設定することができます

with_large_stack(128){require 'json'} 

または

with_large_stack(:size => 128){require 'json'} 

スタックサイズをキロバイト(KB)で与えられます。

関連する問題