2016-06-15 6 views
1

Я использую IDE 2.4.0_Rev5 для разработки и запуска моих приложений на эмуляторе Tizen TV. Проблема, с которой я сталкиваюсь, заключается в том, что многие журналы, которые были помещены в файл javascript (с использованием console.log ('xyz')) не отображаются в консоли во время запуска приложения или даже если я запускаю отладчик, однако некоторые журналы действительно приходят.Не удалось получить правильные журналы в эмуляторе Samsung Tizen TV

Например, я взял образец приложения для AV-плеер здесь: 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? Есть ли способ разрешить это?

+0

Вы запускаете приложение в режиме отладки? как насчет window.alert («некоторый текст»); ? Такая же ситуация? – alfredo86

+0

Когда я помещаю window.alert («текст»), я получаю журналы. Вероятно, я объясню это в ответе Давсауса ниже. Поместив window.alert, он будет ждать, пока я не нажму OK, чтобы продолжить запуск приложения, и это, вероятно, дает время для готовности окна консоли. –

ответ

2

Вы ничего не делаете неправильно. Вначале я боролся с той же проблемой. К сожалению, благодаря тому, что 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)); }); 
} 

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

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