Не получается правильно войти в эмулятор Samsung Tizen TV
Я использую tizen IDE 2.4.0_Rev5 для разработки и запускаю свои приложения на эмуляторе Tizen TV. Проблема, с которой я сталкиваюсь, заключается в том, что многие из журналов, которые были помещены в файл javascript (с использованием console.log ('xyz')), не отображаются в консоли при запуске приложения или даже при запуске отладчика, однако некоторые журналы приезжай
Например, я взял пример приложения для AV Player здесь: https://github.com/Samsung/TizenTVApps/tree/master/TVDemoAvPlayer
Когда я запускаю приложение, я нажимаю кнопку воспроизведения и получаю только следующие журналы:
js/main.js (218) :Buffering Complete, Can play now!
js/main.js (66) :PLAYPAUSE
js/main.js (149) :Player.play(undefined)
Однако, если вы посмотрите на файл, есть много журналов, которые не приходят, например:
console.log('Main.onLoad()');
console.log('Player.init('+id+')');
console.log('Player.prepare('+url+')');
Если вы посмотрите на код, то наверняка, что элемент управления достигнет этих точек (я также проверил, сделав некоторую модификацию - измените URL и т. Д., И это вступит в силу), поэтому вообще не имеет смысла, что эти журналы не приходят и указывает, что либо я пропустил некоторые настройки / настройки, либо есть какая-то серьезная проблема с SDK/ эмулятором.
Кто-нибудь сталкивался с подобной проблемой при работе на эмуляторе Tizen TV? Есть ли способ решить это?
1 ответ
Вы не делаете ничего плохого. Я боролся с той же проблемой в начале. К сожалению, благодаря тому, как Samsung настроил свою среду отладки, некоторые из ваших журналов выводятся до того, как окно консоли будет готово. Мы нашли несколько решений для этого. Все они работают, если вы отлаживаете в эмуляторе или на реальном телевизоре.
Это простейшее решение для ввода location.reload()
в консоли, как только ваше приложение запустилось. Будет перезапущено приложение без перезапуска отладчика. Таким образом, вы сможете увидеть все ваши журналы. Имейте в виду, что после перезагрузки мы увидели странное поведение, поэтому не полагайтесь на это для правильной отладки. Но это все еще эффективный "быстрый и грязный" метод, чтобы увидеть логи с самого начала.
Следующее решение - написать код для переопределения console.log()
для того, чтобы кэшировать сообщения. Затем вы можете вызвать функцию из консоли для воспроизведения сообщений. Примерно так будут сохраняться последние 200 строк журнала, и вы сможете выводить их, вызывая dumpLog()
, (Пример кода ниже опирается на lodash.)
var proxiedLog = console.log;
var logCache = [];
console.log = function() {
logCache.push(_.join(arguments, ", "));
_.drop(logCache, logCache.length - 200);
return proxiedLog.apply(this, arguments);
}
function dumpLog() {
_.forEach(logCache, function(entry) { console.debug(JSON.stringify(entry)); });
}
Но лучший способ, который я бы рекомендовал вам настроить перед выпуском в эксплуатацию, - это отправить эту информацию в бэкэнд-сервис, который кеширует для вас журналы. Вы можете использовать настройку, аналогичную приведенной выше, вам просто нужно также отправить вывод на ваш сервер. Обязательно укажите уникальный идентификатор, чтобы вы могли отличать журналы от разных устройств.
Надеюсь это поможет.