[随笔] 老谢与Google的一次正面"交锋"

[随笔] 老谢与Google的一次正面”交锋”


一、废话

话说智能电视,国内液晶电视厂商确实引领着时代潮流。而从全球来看,继几年前Google I/O大会之后,也渐渐掀起一股智能电视热潮。Google Android开放系统在智能电视中的应用也开始崭露头角。Google和MediaTek在智能电视方向的绑定式发展也必将再次将Android智能电视的发展推向另外一个高度。

老谢有幸加入了Andriod大流,最近处理了一题,想和大家分享分享。与其说这次是老谢与Google的一次正面交锋,不如说这是一次学以致用的收获。


二、Google遇到死机

问题往往都是基于某个平台的。

Google Android开放智能电视已经基本开发成型。基于这个平台,Google想用usb dongle替换原本电视中的Front-end(tuner&demod)底层部分,即基于Android智能电视+usb dongle实现电视扫台看台功能。其开发的步骤大致可以分为:

  1. 第一步,基于原本电视上的tuner&demod作为底层硬件和driver驱动,开发上层apk应用程序;
  2. 第二步,基于第一步,待应用层开发成型后,使用usb dongle替换原本的底层硬件及driver。

而,正是在第一步的开发过程中,Google遇到一个问题,即扫完台后,切台宕机(hang-up)。


三、如何搭建平台

老谢真言:要解决问题,必须复制问题。

继前文提及,Google借Front-end的壳,玩自己的apk。现在出现问题,我们却逃不掉。按照老谢真言,首先必须要设法搭建同样的平台环境,并复制到同样的问题现象,此乃第一步骤。

老谢按照如下步骤,搭建开发环境。

  1. Google提供其Java app source code,code的具体内容不展开,也不能展开(你懂的)

  2. 将Google提供的source code解压并放置于./device/google/archer/目录下

  3. 修改device.mk将Google提供的source code添加进build list

  4. 重新编译android body,这样新生成的system.img中便包含了Google apk

  5. 将system.img升级到TV platform

    但是,升级成功后,还不能使用Google apk应用程序,因为还少了jni(java native interface)。Google开发Java应用程序,如果想要调用C语言函数(Front-end driver是C语言),就不能少了jni。如此,我们还需要将jni库push到TV平台上。

  6. 将Google提供的libtunertvinput_jni.so库push到TV平台的/system/lib目录下,这是通过adb(android develop bridge)实现的。
  7. 如何push libtunertvinput_jni.so到/system/lib呢?

    a. 在windows环境下安装adb tool(自行baidu,百度最近也算是倒霉了,魏则西事件呢),不介绍。

    b. 连接TV usb adb port到windows PC usb port,此时在资源管理器中要看到如下:

    c. 在windows环境下启动cmd命令行,并使用如下命令push .so到TV platform

    adb root

    adb remount

    adb push libtunertvinput_jni.so /system/lib

  8. 重启TV platform后,即可启动Google apk。

至此,老谢终于将平台搭建起来,接下来便开始复现Google report的问题。


四、死机问题的分析

在debug过程中,老谢发现Google apk的扫台流程如下:

  1. TunerOpen() is called.
  2. TunerConnect() is called for each frequency, it means TunerConnect() is called many times.
  3. At last, TunerClose() is called. It is strange to call TunerClose() at this moment.

在第三步中呼叫了TunerClose(),这个行为有问题,因为在TunerClose()中会删除semaphore。删除后,然后直接调用TunerConnect()做切台动作时,出现死机现象,因为semaphore。



老谢分享这篇文章,主要是想鼓励自己和在路上的朋友继续并深入地学习Android知识。

通过这个问题的处理,老谢自己也意识到,如果没有之前Android知识的累计,估计现在老谢还在想这个问题如何下手呢……



itxiebo

20160504

时间: 2024-10-13 12:24:01

[随笔] 老谢与Google的一次正面"交锋"的相关文章

Android Google Analytics

项目中integrate了GA,碰到过一些问题: 1.Too many hits sent too quickly, rate limiting invoked 这个问题是发送hit(event/screen)太频繁,超出了Google的限制.解决办法是设置session timeout到一个合适的值,并且分段统一发送hit. 2.Google Play Services版本兼容问题 由于设备中Google Play Services版本太老,为了兼容只得使用一个很老版本的Google Play

Go断后,Dart冲前,Google的野心

今天,我要讲讲新的前端web语言-Dart 我是网上看到这段话,激起了兴趣,虽然我不能算是真正的web前端从业者!哈哈 [ Dart语言由谷歌制造,用来替代Javascript,弥补Javascript在web应用中大量使用时出现的缺点.对于Dart语言,谷歌的希望是,它将成为 web编程的新官方语言.它有着与C语言类似的语法和关键词.然而,一个跟Javascript的重大不同之处是,Javascript是以prototype为基础的 语言,可Dart里对象是用类和接口定义的,跟C++和Java

Google Spreadsheet Add-on Links Extractor 谷歌表格插件链接提取器的制作与发布(附源码)

引言 为什么想到制作这么一个插件呢,是因为博主在更新微信公众号[刷尽天下]的后台数据库时,需要有博客园题目帖子的链接,那么就要从这篇帖子 LeetCode All in One 题目讲解汇总(持续更新中...) 中提取各个题目的链接.之前博主都是使用的都是Excel的插件 Kutools 来完成的,但是这个插件不是免费的,而且只能在 Windows 下使用,对于博主这样的 Mac 控来说,十分的不方便.想着 Mac 下应该也有类似的插件吧,结果搜了半天,没搜到合适的.突然灵机一动,对啊,为何不去

DVBS/S2在数字电视系统中的应用 八 (现在流行的Dual tuner应用)

DVBS/S2在数字电视系统中的应用 八 (现在流行的Dual tuner应用) 老谢在数字电视领域混了有些年头,<DVBS/S2在数字电视系统中的应用>系列文章中,简要介绍了不少卫星接收相关的知识点.今天老谢继续发挥余热,想和朋友们聊聊当下高端电视机种中最流行的dual tuner应用. 一.Google Android New feature – PIP 在介绍dual tuner相关知识之前,老谢先share一张图片,这张图片是今年Google I/O上的关于Android N的分享,图

成功治愈一切

(1) 初中时的物理老师,在我学渣逆袭的初级阶段,给过我重重的一拳. 那次物理考试,100分的试卷,我考了98分,而就在之前的期中考试,我的物理还不及格.所以,他当着全班同学的面,大声质问我,考试抄谁的,并且要求我放学后留下来重新考一次. 考完以后,他不吭声了,没有私下跟我认错,也没有在全班同学面前澄清. 我恨他. 初三的时候,他调去别的学校,全班同学都去送行,我没去.有同学回来告诉我,汪老师问你怎么没来. 我说,我这辈子都不想见到他. 城市不大,碰面的机会总有,每次看到他准备跟我打招呼,我都低

DVBS/S2在数字电视系统中的应用 七 (DVBS/S2案例分析之一)

DVBS/S2在数字电视系统中的应用 七 (DVBS/S2案例分析之一) 前面六篇文章,老谢简明扼要的介绍了DVBS/S2接收系统中的LNB.DiSEqC.Unicable等知识.今天老谢想给大家分享一个最近发生的DVBS/S2相关的问题. 话说这个问题还算有难度,在老谢接手之前,已经有我的同事配合demodulator供应商以及终端客户三方处理了将近两个月时间.截至老谢接手此问题时,还未找到root cause,甚至可以说问题更加发散,到了无法收敛的地步.恰逢此时我的同事家中有事,需休假,老板

近3年微软与谷歌的发展对比分析

     近3年微软与谷歌的发展对比分析   随着科技的快速发展,时代的不断进步,微软和谷歌凭借这不断的创新已然成为当今全球科技公司的领头羊.位列世界500强的微软是一个相当具有经济与科技实力的的公司,然而同样位列世界500强的谷歌凭借着家喻户晓的Google搜索成为了微软一个相当具有竞争力的科技大亨. 同为IT公司,微软和谷歌的比较如下: 一.发展历史 微软作为一个1975年成立的老牌公司,从一开始的为IBM提供文件系统和操作系统等软件,到现在业务中有各种操作系统编译器和解释器.网页浏览器等基

获取 OCM 10g 感动一刻

首先非常感谢itpub的老谢(warehouse)谢永生,考试的时候帮助了我很多很多,如果没有他,我可能也无法坚持下去获取这个证书,在此非常感谢!! 1年半前,机缘巧合,在网上搜索oracle考证,找到itpub,然后通过老谢报名考试,从oca到ocm一直都是在他那里报名考试.期间看了很多oracle书籍,经历了很多放弃和坚持的思想斗争,最后终于获取到ocm证书,一路下来很不容易.2周前oracle终于寄来纸质ocm证书,拿上手真是百感交杂,满满的感动. 小插曲:第一次寄来只有证书,没有传说中的

弱者都记仇,强者才宽容

(1) 初中时的物理老师,在我学渣逆袭的初级阶段,给过我重重的一拳. 那次物理考试,100分的试卷,我考了98分,而就在之前的期中考试,我的物理还不及格.所以,他当着全班同学的面,大声质问我,考试抄谁的,并且要求我放学后留下来重新考一次. 考完以后,他不吭声了,没有私下跟我认错,也没有在全班同学面前澄清. 我恨他. 初三的时候,他调去别的学校,全班同学都去送行,我没去.有同学回来告诉我,汪老师问你怎么没来. 我说,我这辈子都不想见到他. 城市不大,碰面的机会总有,每次看到他准备跟我打招呼,我都低