adb的那点小事——360电视助手实现研究

1.   前言

1.1.  行业背景简介

当下,智能家居与智能穿戴设备无疑是继智能手机后两个最热门的方向,而智能家居在占领用户“客厅”的行动中,电视无疑占据着一个十分重要的位置。最近两年,智能电视(包括盒子),发展的如火如荼,引发了一波电视换机潮。现在购买电视,不是智能电视,甚至都不好意思拿出来说。

然而,国内移动应用市场激战正酣的三巨头(百度、360、腾讯)在电视应用分发上都鲜有举动,市面上只有一些小公司在做,其中做的还算不错的有:奇珀市场、爱家电视应用市场。

直到在今年(2014年)4月360推出了“360电视助手”以及”360电视助手手机端”,电视市场逐渐开始改变。

1.2.  一次糟糕的个人体验

讲一个小故事:一张SD卡引发的血案。

背景:

在去年的时候,我购买了2台创维的Android智能电视和一台大麦盒子。拿到电视以后,我只有一个很简单的想法:我不想花钱看电视,我要在电视上面看优酷、看爱奇艺、看腾讯视频。现实情况是,电视厂商为了推广自己的付费视频,在电视机自带的电子市场中,根本没有这些应用。

看到这里有些朋友会说,你找张SD卡把应用拷贝进去,然后按照不就行了?没错!可是,我木有SD卡呀……于是开始了一段崎岖的折腾之路。

我的坎坷看片经历:

1、  打开电视浏览器搜索优酷下载,提示”没有SD卡下载不了”

2、  安装电视市场中的QQ,远程发生优酷到电视,提示”没有SD卡,无法接收”

3、  于是乎在绞尽脑汁之后,在QQ的”更多“里面我找到了”应用宝”,这里真要庆幸哥们是做开发的啊,否则估计打死都找不到这里。此过程完全通过鼠标进行,遥控器操作不了。

4、  在H5的应用宝中搜索”豌豆荚“,安装后,在里面搜索优酷,提示”没有SD卡下载不了”;果断卸载“豌豆荚”,安装“百度手机助手”,提示”没有SD卡下载不了”……到这里哥们已经接近崩溃了。

5、  最后在H5的应用宝中下载应用宝客户端,发现没有SD卡也可以下载(这里说一下应用宝在没有SD卡时会先下载到/data/目录)。于是乎感叹“应用宝真好!”。

6、  带着从绝望中刚恢复过来的喜悦,在应用宝中搜索优酷,下载安装完成、打开。尼玛,是横屏的有木有?!原来手机市场里面一般都只有手机和pad的应用,木有TV版本。不仅屏幕是横的,而且不支持遥控器。那到底要怎么办?我只想看个片而已呀,My
God !!!

7、  幸亏哥们练过!我想到了没有SD卡,我可不可以挂载一张虚拟的SD卡到电视上?于是开始了新一轮验证。

8、  在应用宝中,下载“ES文件浏览器”,然后在个人电脑中注册申请“百度云”账号,在“ES文件浏览器”的设置中与百度云绑定,然后在“ES文件浏览器”中挂载虚拟存储。

9、 在电脑上搜索TV版的优酷、爱奇艺等,将这些APK拷贝到百度云里面去,然后在电视机上打开“ES文件浏览器”,找到挂载的虚拟存储位置,点击APK安装。终于安装成功了!当看到电视上出现优酷的画面是,哥们都要泪奔了,有木有……

整个过程下来,浪费了哥们大半个下午的时间。

也许有些人会说,怎么不通过电脑USB连接,然后安装。但是USB需要驱动呀…..而且对小白用户的话,是根本不可能通过USB安装应用的。

1.3.  360电视助手体验

前面说过,我购买了2台电视和一台盒子。在购买盒子的时候,我无意中发现了“360电视助手”,于是乎我在前面的体验一下子简单多了:扫描局域网、建立连接,然后在手机端选择自己喜欢的应用安装,发现盒子就已经给我安装好了,然后在手机上选择一个电影打开播放,此时电视也开始播放了…..

整个过程下来,不超过5分钟。

1.4.  360电视助手概览

首先看一下360电视助手TV端的界面:







下面是TV端首页截图:

下面是手机端的截图:

1.5.  360电视助手的创新点

那这款360电视助手与其他的手机助手或者电视应用市场相比有什么特别之处呢?

一般的电视电视版助手有两大功能:一是帮助用户下载和更新应用;二是做视频、软件、应用分发。360电视助手具有如下一些特点:

1、  在同一个局域网环境下,可以通过手机端直接安装TV端到电视上,而不需要拷贝到SD卡或者U盘上。

2、  在TV端安装后会作为Server与手机端进行局域网通信,手机端可以控制TV端进行应用安装、视频播放、甚至玩游戏等。

3、  TV端集成临时root能力,在通过手机端操作“安装到电视”时,电视上会静默安装好该应用。

4、  提供遥控器功能,可以通过手机遥控电视。

2.   技术实现分析

本文主要对360电视助手中的两个核心技术点进行分析研究:

A.        如何通过局域网(Wifi)环境,直接安装应用到电视端。

B.        在电视上安装电视助手(TV端)后,手机端如何与TV端进行局域网内通信。

2.1.  局域网应用安装

局域网内直接安装apk到TV端是通过我们万能的adb实现的。关于adb的用法这里就不具体介绍了,不熟悉的读者可以自行查阅Android官方文档,或者在cmd环境中执行“adb”命令查看。这里只介绍电视助手的原理。

电视助手的实现原理如下:

1.         首先确保电视端中“设置 ->开发者选项->开启开发者选项”处于开启状态,这个在很多电视中默认是开启的,并且在没有开启的电视中,360会引导用户开启。

2.         在手机端通过“ping”命令扫描探测局域网内可用的ip,下面是反编译之后的代码:

关于“ping”命令的用法如下:

3.         通过“cat /system/build.prop | grep \"product\"”命令获取TV端的产品名称,反编译代码如下:

4.         在获得到TV端的名称后,会提示是否要连接到TV端。此时,通过“adb
connect <host>[:<port>]”命令连接电视,下面是反编译后的代码:

5.         在连接到TV端,通过下“cat/system/build.prop”命令获取TV端的相关信息,下面是反编译后的代码:

6.         在连接到TV端后,就可以通过“adb
install –r ”命令进行局域网内远程安装了,反编译代码如下:

在执行“adb install”命令后,根据执行结果中是否包含“Success”判断是否安装成功,再不是“Success”的情况会返回具体的错误原因,可以进行解析。

7.         在执行结束,断开连接时,可以执行“adb disconnect”命令,反编译代码如下:

8.         在TV端安装后,手机端可以通过”am
start“命令唤起TV端,反编译代码如下:

好了,到这里360电视助手客户端是如何在wifi环境下,直接安装到电视端的就都明白了。

2.2.  搭建局域网C/S通信

在电视中安装了TV端以后,TV端会作为一个Server与手机端(Client)形成一个C/S结构,接下来的事情就是Client与Server直接的网络通信了。

这里之所以采用C/S结构进行通信,个人觉得原因有两点:

A.        adb connect建立的连接不稳定,随时可能会断开,而且也无法感知连接是否可用等连接状态。

B.        有些操作通过adb是完成不了的,必须通过C/S的方式,将”指令“发生到Server端(电视),在Server端执行完成后,再将结果返回到手机。举个简单的例子,比如说我想要获取电视上已安装应用列表等。

360电视助手中,C/S接口,用的是12333端口,也就是说TV端会以socket监听12333端口。这从手机端反编译的代码也可以看出:

在手机端将命令以http请求的方式发送到TV端。手机端与TV端的数据以jeson的形式进行传输,下面是反编译代码:

好了,到这里360电视助手是如何局域网下进行通信的,就清楚了。

在360电视助手中,除了上面介绍的局域网通信方式外,也有利用普通无线网络进行push的方式。先将手机端的操作指令发送的360的服务器,再从服务器push到目标端进行响应。这些不是本文想要分析的重点,不再分析。

时间: 2024-10-16 22:30:14

adb的那点小事——360电视助手实现研究的相关文章

adb的那点小事——远程adb调试

1.   前言 1.1.  写在前面的话 在之前的一篇文章<360电视助手实现研究>中介绍了在局域网内直接通过adb安装应用,本文接下来继续介绍adb一点有意思的小东东.本系列之所以取名<adb的那点小事>是因为,只想介绍一些有意思的而且平时大多数人关注不多的方面,类似于"adb原理"."adb如何使用"之类的老生常谈不在本文的介绍范围内. 言归正传,本文介绍的内容是:在局域网内,如果进行adb远程调试,即:在没有数据线的情况下,如何在局域网

360手机助手关于签名校验的分析

360手机助手中软件更新 0x01:分析过程 使用wireshark抓包分析更新时请求的是一个配置文件,请求url:update.api.sj.360.cn/mintf/getAppsByPackNames  后面是参数,请求方式为POST,内容如下: 可以看到其中包含了几个关键的参数down_url,apk_md5,signature_md5,size,其中比较关键的一个校验是signature_md5,其他都可以轻松替换,所以我们的重点就是对signature_md5,校验的破解,去分析他对

360手机助手内部资料曝光,63张PPT纯干货

360手机助手内部资料曝光,63张PPT纯干货 日前,国内最大的安卓应用商店360手机助手发布了<2016年手机软件行业趋势绿皮书>,这份绿皮书对2015年以来移动互联网的趋势做了总结,展望了2016年的发展方向.从这份绿皮书所反映的现状来看,当前,国内移动互联网或来到了一个十字路口. 这份报告的每一页PPT都是干货,对于移动互联网从业者.政府决策层来说绝对不能错过. 1.2015年移动端用户增速放缓并渐趋饱和,市场竞争迈入零和时代 随着中国人口结构的变化,人口红利出现下降,影响至移动智能终端

[软件测试] 用过360手机助手,豌豆荚的,可以考虑永远这个...

引导语 : 好久没有吃水果了,想买点桔子解解馋."老板,桔子甜不甜?""甜!""我尝尝,可以吧?""谢绝品尝!""那我怎么知道甜不甜?""我吃给你看!你看我表情就可以了!" 今天小编给大家带来一款软件,是小编在无意间在360手机助手下载到的,大家可以在360,豌豆荚搜索一下"亿动手机助手"看看...     大家复制这条链接下载一下看看,跟我们一起来吐槽这个软件 ht

Android静默安装实现方案,仿360手机助手秒装和智能安装功能

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47803149 之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢?所谓的静默安装,就是不用弹出系统的安装界面,在不影响用户任何操作的情况下不知不觉地将程序装好.虽说这种方式看上去不打搅用户,但是却存在着一个问题,因为Android系统会在安装界面当中把程序所声明的权限展示给用户看,用户来评估一下这些权限然后决定是否要安装该程序,但如果使用了静默安装的方式,也就没

Slidingmenu 仿 网易 360手机助手 框架 直接拿来用

天气太热了,上班也没什么精神头.索性  整理下项目中用到的 框架 抽出来,方便下次直接用吧. 大家应该都知道 slidingmenu的.就是github 上的一个开源框架  可以实现 左右滑动, 时下 好多app都用到了,比如 网易新闻 ,360手机助手, 糗事百科,ireader. 应该算是很火的一个框架了. no exception  我们公司的项目也用到了. 废话有点多.下面直奔主题吧 首先介绍下 框架的结构 先上几张图,不会做gif ..    再看下包结构 主要实现侧滑的功能代码 在

android 浮动窗口学习笔记及个人理解(仿360手机助手)

非常感谢原文作者 http://blog.csdn.net/guolin_blog/article/details/8689140 经自己理解 程序运行界面如下图: 1.程序入口界面 2.小浮动窗口 3.大浮动窗口 由上图可看出,可以看出我们基本需要: 1.一个主Activity 2.小浮动窗口view界面 3.大浮动窗口view界面 对于浮动窗口的管理我们还需要 4.一个Service(在后台监控管理浮动窗口的状态) 5.窗口管理类(创建/消除浮动窗口) 代码: package com.ww.

柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布

柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布 由于JAVA和Android的平台型,所以APP很容易被反编译,这对于我们开发者来说,是一个不想要的结果,对于用户来说,就是一个噩耗,而安全性,一直是我们关注的焦点,今天,我们来聊聊这个安全性,和一起玩玩Apk加固! 一.我们为什么要提高APP的安全性 手机已经是不会离开身边了,APP更是重中之重的环节,我们衣食住行,基本上大部分都是靠APP来完成的,这样的话,APP的安全就是一个很大的挑战了,

实现360手机助手TabHost的波纹效果

现在新版360手机助手的界面都做得挺漂亮的,在切换底部导航时的波纹效果也很好看,刚好最近看了个开源项目才了解到原来Drawable做动画效果也怎么好用,所以就仿照360实现了下带波纹的TabHost.源代码地址:https://github.com/Rukey7/XFragmentTabHost 先来看一下实现后的效果: 说明一下实现要点: 1. 因为我们项目之前用的是FragmentTabHost,所以我直接继承FragmentTabHost来实现动画效果更方便: 2. 波纹动画的实现其实是自