Android的API与差异化之路
Android的API与差异化之路
发挥Android特色:框架API和开源(开放)
Android平台就如同×××长城般,两岸的硬件业厂商就如同关内居民,是建造×××长城的最先获利者。也基于这样的效益,让许多硬件大厂竞相拥抱Android,让Android的气势如虹,扶摇直上。其中的主要效益是:差异化。许多开发(或生产)底层组件的硬件厂商,基于过去传统平台的经验,而不会擅用Android平台的特性来创造硬件层的差异化,而无法享受Android这个软件×××长城,替关内居民(即硬件厂商)带来的利益。
Android平台的主要特性是:框架API和开源(开放)。只要善加发挥这两项特色,就能创造硬件厂商的「没钱就差异化(改版),差异化(改版)就有钱」的绝佳商业模式。
被动型API局限差异化的发挥
Android提供了框架API,但是它与硬件的差异化有什么密切关系呢? 首先必须理解到,框架API是主动型API,而主动型API的相反词是被动型API;被动型API是掌握在AP手里,硬件组件必须配合AP的要求,大大局限了硬件组件创新机会,日趋同质化,就与差异化背道而驰了。兹拿餐厅与厨房来做比喻吧,如下图:
图1、此传统架构下,底层日趋同质化
此图里,餐厅就像AP,厨房(或供货商)就像硬件组件。这里的API,就厨房(或供货商)而言,它是被动的,控制点位于餐厅(AP)里,也就是,主动(控制)权掌握在餐厅(AP)里。在此架构里,厨房(即硬件)组件的创新和差异化,无法有效传递到餐厅(AP)。当上层(即AP)无法反应底层(即硬件)的创新或差异化,就无法呈现给客人了,就无法带给客人特别的服务(功能)和感受(性能),不能带来商业利益。此时,如果底层硬件组件刻意要去差异化,就会掉入「为差异化而差异化」的困境了。
主动型(如框架)API发挥了底层的差异化
在上图里,由于主动权掌握在AP开发者手中,使得底层硬件厂商处于被动地位,其差异化难以呈现给客人,所以差异化只是增加自己的成本而已,可说是徒劳无功。其系统层面的解决途径是:让底层硬件厂商拥有主动权。于是,我将上图的系统架构调整如下图:
图2、架构(一):底层硬件厂商拥有主动权
在这图里,我设计了一个框架,由它提供主动型API,让底层硬件厂商处于主动地位,其差异化就很容易呈现给客人,产生商业收益。
由于这是一种架构「设计」图,意味着有无限多种可能的架构,只要能底层硬件厂商拥有主动权,就能有效传递和呈现差异化给客人,获得商业收益。例如,还可以设计如下图:
图3、架构(二):底层硬件厂商拥有主动权
请留意,「供货商」与「厨房」相当于两个不同的硬件组件厂商(Server)的角色,如果「厨房」厂商拥有绝对的主导权,很可能会刻意封杀或阻挡「供货商」厂商的差异化,让「供货商」厂商的差异化徒增成本而已。
转载于:https://blog.51cto.com/guanghuali/471518
相关文章:

Oracle 高效分页
-- 分页 select * from t_user5 select count(1) from t_user5 --10,485,760 -- rownum是一个查询后的结果,查询之前是不存在的 select rownum,rowid,tt.* from t_user5 tt where rownum<3 and sex1 and rownum>2 -- 对结果进行查询 -- 思路1,r…

Data - 【转】数据分析的道与术
简要说明 本文来自网络流传的“百度内部培训PPT - 数据分析的道与术”,版权属于“百度”,如有冒犯,即刻删除。PDF下载 - 数据分析的道与术什么是数据分析(道) 1 - 数据分析是什么? 2 - 什么是做好数据分析的…

ruby生成C++头文件引用关系图
首先生成graphviz的dot格式文件 require find class RefNodeattr_accessor :name,:reference end include Find if __FILE__ $0name "name"dot []h Hash.newputs ["digraph #{name}{","overlap false","spline true","rank…

【js】内置对象String的常用方法
<html><head></head><script type"text/javascript">var stuName1 "小强1";var test "abcdcab";//alert(stuName.charAt(1));var stuName2 "小强2";//alert(stuName1.concat(stuName2));//alert(test.inde…

关于Linux静态库和动态库的分析
From:http://hi.baidu.com/bdccutysj/blog/item/5bae7f0202abac7c3912bb15.html1.什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于windows和linux的本质不同,因此二者…

求解|x-y|最小
问题:输入数组a和b,请通过交换的方式重新分配两个数组,使得|a-b|最小 提供一种思路: 当前数组a和数组b的和之差为 A sum(a) - sum(b) a的第i个元素和b的第j个元素交换后,a和b的和之差为 A ( sum(a) - a[i] b…

最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用50
广告客户吴言之前也研究过互联网广告业务模式,具体来讲可以分为六大模式:门户网站广告模式、搜索引擎广告模式、社会化网站广告模式、视频网站广告模式、植入式广告模式、广告联盟模式。对于门户网站广告模式来讲,这是一种push模式࿰…

终于遇见——王阳明
一个厉害的人 王阳明,五百年来的一个圣人,最后总结了四句教:无善无恶心之本,有善有恶意之动,知善知恶是良知,为善去恶是格物。看完王阳明的一生,再看到这四句话时,直让人发怔&#x…

【jquery】jquery基础知识
总体介绍: jquery是一个js的类库,为了减少代码量实现更多的功能 1、jquery使用需要引入jquery的类库,其中有一名称带min(产品版)有一个不带min的(开发版),作用相同。当我们同网页打…

针对19端口的Chargen进行Dos***
先普及一下基础吧: 英语全名:Character Generator Protocol 汉语:字符发生器协议 默认端口:TCP 19,UDP 19 本协议在RFC 864中定义。 在TCP连接建立后,服务器不断传送任意的字符到客户端,直到客户…

TCP/IP 简介
原文:TCP/IP 简介 第一节:TCP/IP 简介 第二节:TCP/IP 寻址 第三节:TCP/IP 协议 第四节:TCP/IP 邮件 TCP/IP 是用于因特网 (Internet) 的通信协议。 计算机通信协议 计算机通信协议是对那些计算机必须遵守以便彼此通信的…

MyEclipse提示键配置、提示快捷键、提示背景色、关键字颜色、代码显示
1、提示键配置一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不清楚的话&#x…

【jquery】用jsp写jquery的模板
代码实现: <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dt…

《网页设计创意书》读后感
刚刚收到《网页设计创意书》,确实有点惊喜,开始以为是像之前审读的书一样是一叠叠的打印纸,没想到是一本成品书,拿到手上沉甸甸的,随便翻看了一下,没想到里面竟然还是全彩页印刷的,本书的第一感…

博客园的博客积分与排名查看方法
我是今天才知道,out。因为这东东默认是不显示的,因此找不到。 注意:只是你在博客园的博客的积分排名,而不是你的在博客园的排名。 设置-博客设置(博客后台管理)-选项-积分与排名打勾。刷新你的博客页面即可…

产品经理之我见
产品经理的定义: 1、 管理、营销自己特定产品线、品牌和服务的责任。 2、 又叫品牌经理,行业经理,顾客细分经理等。 产品经理存在的地方 1、 消费型的零售业,服务业(化妆品,金融行业等)。 2、…

casperjs 安装试用
纠结了好久,一直报错, 具体错误信息现在已经忘了,后来看了官网的prerequisite,才知道要安装特定版本或greater 的 phantomjs 和 Python。我这边主要是没装python。当然还有casperjs 的bin 路径也要加到环境变量里(windows). 然后都…

【jquery】jquery选择器
知识点 1、jquery选择器的作用是选择jquery页面中的html元素。 2、常用的选择器有:基本选择器、层级选择器、过滤选择器、属性选择器。 基本选择器 1、 id 选择器 代码实现: element $("#id") 等价于 document.getElementById("…

android-轻松监听来电和去电
要监听android打电话和接电话,只需下面2步骤 1.第一步,写一个Receiver继承自BroadcastReceiver public class PhoneStatReceiver extends BroadcastReceiver{private static final String TAG "PhoneStatReceiver";// private stat…

【sql】实现分页查询
分页查询,以五条五条查询为例: 代码实现: select * from goods_list LIMIT 0 , 5; 从第0条开始,查询五条

N-Case 律师事务所管理系统安装与卸载说明
目 录 1 解压安装包... 1 2 安装系统... 1 3 登录系统... 2 4 安装失败... 3 5 系统试用帐号... 3 6 远程访问... 3 7 卸载系统... 3 1 解压安装包 先解压软件包,解压后把redcat目录剪切或拷贝到D盘根目录下即可。一定要放到D…

jmeter分析性能报告时的误区
概述 我们用jmeter做性能测试,必然需要学会分析测试报告。但是初学者常常因为对概念的不清晰,最后被测试报告带到沟里去。 常见的误区 分析响应时间全用平均值响应时间不和吞吐量挂钩响应时间和吞吐量不和成功率挂钩。。。。。 平均值特别不靠谱 平均值为…

const的位置
2019独角兽企业重金招聘Python工程师标准>>> 1.指向常量的指针 const 类型 * 指针名 或者 类型 const * 指针名特点:不能修改指向的对象的值,可以修改指针的指向int var11; const int var22; const int * p1&var1; const int * p2&var2; *p1100;…
zookeeper入门系列 : 分布式事务
上一章我们了解了zookeeper到底是什么,这一章重点来看zookeeper当初到底面临什么问题?而zookeeper又是如何解决这些问题的? 实际上zookeeper主要就是解决分布式环境下的一致性问题。那么解决这个问题到底有哪些难点呢?我们一步一步…

rdlc报表显示条码 .
1.条码的生成: private Bitmap GetCode39(string strSource) { int x 5; //左邊界 int y 0; //上邊界 int WidLength 2; //粗BarCode長度 int NarrowLength 1; //細BarCode長度 …

python列表(数组)
python列表(数组) 列表(list) 就是 数组 - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只能保存一…

【js】common.jsp的使用
通过将引入common.jsp将所有文件都需要的内容或静态资源引入,相当于一个页面,在页面被编译之前合并。 代码实现 <% include file "common.jsp的相对路径"%> 注意: <% page language"java" contentType&quo…

12th,Jan 研究生创新项目申报成功
今天的好消息是研究生创新项目申报成了,省里拨下来是1.8k,本来学校应该配3.6k,但是按照以往的经验,学校那3.6k是不会给的。。。所以总共就1.8k,呵呵,钱虽然不多,但是也是个小小小的成就吧。 昨晚…

Android studio中2种build.gradle文件介绍
根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript {repositories {google() //声明代码托管仓库Googlejcenter() //声明代码托管仓库,用于引用jcenter上的开源项目}dependencies {classpath …

10个有趣的javascript和css库(2019年5月最新)
我们的使命是让您了解最新和最酷的Web开发趋势。这就是为什么我们每个月都会发布一些精选的资源,这些资源是我们偶然发现并认为值得您关注的。 1.Tessaract.js 强大的javascript(节点和浏览器)库,用于从图像中提取文本。它能自动检…