2011-11-04 11 views
0

我有兩個用Ruby編寫的不同項目,使用Ruboto將Ruby打包成一個.apk文件,以便將它推送到Android設備上。這兩個項目都可以在我的手機和手機模擬器上編譯和運行,但是在兩個項目中都添加了'require'json''行,不會改變任何內容,導致它們在啓動時失敗並將我踢回到手機主頁。所以這絕對是一條線。任何想法可能會導致這種情況?在Ruboto項目中使用JSON

回答

1

我有同樣的問題;您可以使用

adb logcat 

以獲取有關故障的更多信息。如果你看那裏,你會發現關於堆棧溢出的錯誤消息。您可以通過只需要JSON /純繞過這個堆棧溢出:

require 'json/pure' 

這仍然沒有與一般的問題有所幫助:最需要調用導致堆棧溢出。通過谷歌,我發現Android不能有太多的嵌套遞歸調用,只有大約22個,直到它崩潰,堆棧溢出。我指出的解決方案是使用迭代,而不是遞歸。 :)

所以現在,我知道沒有真正的解決方案。大多數大或有用的寶石導致相同的問題,例如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)給出:可以使用一個可選整數參數或選項散列設置該值。