Использование JSON в проекте Ruboto - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть два разных проекта, написанных на Ruby, использующих Ruboto для упаковки Ruby в .apk, чтобы его можно было перенести на устройство Android.Оба проекта будут скомпилированы и запущены на моем телефоне, а также на эмуляторе телефона, но добавление строки 'require' json '' в обоих проектах, не меняя ничего другого, приводит к сбою при запуске и возвращает меня на главную страницу телефона.Так что это определенно что-то с этой линией.Любые идеи о том, что может вызвать это?

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Ruboto предлагает вспомогательный метод для запуска кода с увеличенным размером стека:

require 'ruboto/util/stack'

with_large_stack{require 'json'}

или

with_large_stack do
  require 'json'
end

Это будет запускать ваш код в отдельном потоке с большим стеком, позволяя глубокую рекурсию,Размер стека по умолчанию для метода with_large_stack составляет 64 КБ.Вы можете установить это значение, используя необязательный целочисленный аргумент или хэш параметра:

with_large_stack(128){require 'json'}

или

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

Размер стека указывается в килобайтах (КБ).

1 голос
/ 18 ноября 2011

У меня была такая же проблема;Вы можете использовать

adb logcat

, чтобы получить больше информации о сбое.Если вы посмотрите туда, вы найдете сообщение об ошибке переполнения стека.Вы можете обойти это переполнение стека, потребовав только json / pure:

require 'json/pure'

Это по-прежнему не помогает решить общую проблему: большинство вызовов требуют, чтобы переполнение стека.Через Google я обнаружил, что Android не может иметь слишком много вложенных рекурсивных вызовов, всего около 22, пока он не вылетит с переполнением стека.Решение, на которое я указывал, состояло в том, чтобы использовать итерацию вместо рекурсии.:)

Так что сейчас я не знаю реального решения.Большинство больших или полезных драгоценных камней приводят к той же проблеме, например, yaml, httpi или nokogiri.

Редактировать: В списке рассылки Google есть похожий вопрос.

...