在Ruboto项目中使用JSON

时间:2011-11-04 16:10:35

标签: android ruby json require ruboto

我有两个用Ruby编写的不同项目,使用Ruboto将Ruby打包成.apk,以便将其推送到Android设备上。这两个项目都将在我的手机和手机模拟器上编译和运行,但在两个项目中添加“require'json''行,不更改任何其他内容,导致它们在启动时失败并将我踢回电话主页。所以它绝对是那条线的东西。关于可能导致这种情况的任何想法?

2 个答案:

答案 0 :(得分:2)

Ruboto提供了一个帮助方法来运行堆栈大小增加的代码:

require 'ruboto/util/stack'

with_large_stack{require 'json'}

with_large_stack do
  require 'json'
end

这将在具有更大堆栈的单独线程中运行您的代码,允许深度递归。 with_large_stack方法的默认堆栈大小为64KB。您可以使用可选的整数参数或选项hash:

来设置此值
with_large_stack(128){require 'json'}

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

堆栈大小以千字节(KB)为单位。

答案 1 :(得分:1)

我有同样的问题;你可以用

adb logcat

获取有关崩溃的更多信息。如果你看那里,你会发现一个关于堆栈溢出的错误消息。您只需要json / pure:

即可绕过此堆栈溢出
require 'json/pure'

这仍然无法解决一般问题:大多数需要调用会导致堆栈溢出。通过Google,我发现Android无法进行太多嵌套递归调用,只有大约22次,直到崩溃堆栈溢出。我指出的解决方案是使用迭代,而不是递归。 :)

所以现在,我知道没有真正的解决方案。大多数大型或有用的宝石会导致同样的问题,例如: yaml,httpi或nokogiri。

编辑: Google邮件列表中也存在类似的问题。