写点什么

Android 有望结束碎片化

2014 年 8 月 19 日

对于 Android 开发者来说,碎片化问题经常令他们痛苦不堪。iOS 开发者只需要面对苹果一家厂商的有限的几种机型,并且这些机型的软硬件全部掌控在苹果手里,而 Android 开发者就没那么幸运了,他们要面对的各种厂商制造的设备,这些设备可能有不一样的屏幕尺寸,不一样的芯片功能,搭载不一样版本的操作系统等等。从 Android 主页上的最新统计数据可以看到,Android 4.1-4.3 目前还占有超过一半的市场,最新的Android 4.4 是20% 左右,剩下的则由4.0、2.3 和2.2 等更老的系统共同占据。

GIGAOM 上的一篇博文提到,开发一个 Android 应用程序往往意味着:

  • 为了兼容更多的旧机器,你被迫使用旧版的 SDK 来适配尽可能多的旧设备;
  • 大量的厂商制造了各种各样屏幕尺寸的手机,它们搭载的操作系统版本有新有旧,底层硬件的能力也不尽相同。总之各种各样你能想到的或想不到的;
  • 你的应用可能受众有限,因为有些应用仅限某些设备访问。

过去真是如此,但这一切或许正在改变。Google 也早就已经意识到了这个问题,但似乎他们解决这个问题的方法不是像苹果那样掌控硬件,而是尝试走另外一条路。

Google 早在 2012 年就引入了 Play Service,这个组件会在后台下载其他一系列组件,而这些组件是应用赖以运行的核心。手机搭载的操作系统版本不一?不要紧,因为它们都会强制安装最新的 Play Service。这篇博文中也提到:

Play Serice 5.0 已经推送给包括从 Android 2.3 到 Android 4.4 的 Android 设备。Google 正在逐渐把一些 Android 核心功能、系统 API 剥离出系统,并加入到 Play Service 中,这意味着安装有最新 Play Service 的设备,应用就能运行自如。

这看起来确实是解决碎片化的一个办法,但如面对如此多的屏幕尺寸,这个方法似乎无能为力。看看 Android 开发者 Russell Ivanovic 如何解决这个问题。

首先他认为,如果你想做得很完美,那么Google 提供的开发工具足以帮你适配每一种屏幕,只是你需要为每种屏幕创建布局文件。

另外,他们建议的做法是:使用dp 来定义布局(dp 是Android 中一种虚拟的像素单位,在运行的时候系统会根据屏幕密度把它扩展成真实像素),这样,所有的屏幕都化成有限几种标准dpi 的屏幕,你只需要为不同密度的屏幕准备不同资源文件就可以了。你唯一需要考虑的是设备的按键是实体的还是在屏幕上的,因为这会影响屏幕实际可用尺寸。

Android 官网上也有一篇文章给开发者介绍如何支持多种尺寸屏幕,仔细阅读这篇文章,做好这项工作应该不难。

可以看得出Google 也觉得碎片化问题影响了Android 的发展,他们也正在努力解决,但效果如何,让我们拭目以待。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014 年 8 月 19 日 04:011967
用户头像

发布了 77 篇内容, 共 31.3 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

大数据中流量分析常见分类

大数据技术指南

大数据 28天写作 3月日更

新年上班第一天生产环境分布式文件系统崩了!!

冰河

高可用 分布式存储 fastdfs 可扩展 无限扩容

控制台的安装与使用 | 联盟链开发(二)

李大狗

联盟链 FISCO BCOS 狗哥

科技强国的使命召唤中,百度AI埋下三根未来“引线”

脑极体

探索 Snabbdom 模块系统原理

pingan8787

JavaScript Vue Web Vue 3 Snabbdom

(继续码字) 因果有顺序吗?是一种必要充分条件吗?

mtfelix

28天写作 bewriting 胡思乱想

Seldon使用(一):简介及入门

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

JVM - 类加载器

insight

3月日更

领域驱动设计101 - 通用语言

luojiahu

领域驱动设计 DDD

分享18个常用的ECMAScript 6代码片段

devpoint

reduce URL参数解析 Form表单数据解析

一些人的某些目标

sadhu

生涯规划 职业规划 个人提升

正则表达式的使用与匹配原理解析

Guanngxu

正则表达式

Python PyAutoGUI 库

HoneyMoose

在离开新手村后,你该如何的走出呢?打造属于你的快与慢的能力。

叶小鍵

Vue3源码 | createApp都干了什么?

梁龙先森

源码分析 前端 Vue3

工作多年后我更明白了UT的重要性

你呀不牛

Wireshark数据包分析学习笔记Day17

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

还有高仿项目吗

GitHub指北

MongoDB中的null类型查询

Kylin

mongodb 3月日更 21天挑战 数据库查询 NoSql查询语法

FISCO BCOS 开发环境节点搭建 | 联盟链开发(一)

李大狗

区块链 联盟链 FISCO BCOS 狗哥

源码分析-Netty: 高性能之道

程序员架构进阶

Netty RPC 源码剖析 28天写作 3月日更

《码农歌》

臧萌

加班

好想做个女孩子,编程第一步,女装身上穿

GitHub指北

Spark详细剖析

五分钟学大数据

大数据 spark 28天写作 3月日更

远程协助软件向日葵分析

lenka

3月日更

前端开发:Vue启动项目报错ValidationError:webpack Dev Server Invalid Options

三掌柜

vue.js 前端 3月日更

【LeetCode】矩阵置零Java题解

HQ数字卡

算法 LeetCode 28天写作 3月日更

架构 idea

型火🔥

架构 原则 架构之道

Java8中的 Stream 那么彪悍,你知道它的原理是什么吗?

Java小咖秀

Java stream java8 面试题 开发

避免失控:谈谈人与人交往中的恶

boshi

职场 心理 七日更

uni-app跨端开发H5、小程序、IOS、Android(四):了解uni-app项目结构

黑马腾云

html5 微信小程序 uni-app android iOS Developer

「中国技术开放日·长沙站」现场直播

「中国技术开放日·长沙站」现场直播

Android有望结束碎片化-InfoQ