Отсутствуют правильные журналы в эмуляторе 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? Есть ли способ решить эту проблему?


person Archit Sinha    schedule 15.06.2016    source источник
comment
Вы запускаете приложение в режиме отладки? как насчет window.alert ('какой-то текст'); ? Такая же ситуация?   -  person alfredo86    schedule 15.06.2016
comment
Когда я помещаю window.alert ('text'), я получаю логи. Я думаю, что это, вероятно, объясняется ответом Дэвсауса ниже. Установив window.alert, он будет ждать, пока я нажму ОК, чтобы продолжить запуск приложения, и это, вероятно, даст время для готовности окна консоли.   -  person Archit Sinha    schedule 16.06.2016


Ответы (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)); });
}

Но лучший способ, способ, которым я бы посоветовал вам выполнить настройку перед выпуском в производство, - это отправить эту информацию в серверную службу, которая кэширует журналы для вас. Вы можете использовать настройку, аналогичную приведенной выше, вам просто нужно также отправить вывод на свой сервер. Обязательно укажите уникальный идентификатор, чтобы вы могли различать журналы с разных устройств.

Надеюсь это поможет.

person davesaus    schedule 15.06.2016