魅力研习社第一期中国 2013年 浅谈碎片化对android开发带来的困难与解决方法 是哪一期

.客服电话
&&8:00-11:30,13:00-17:00(工作日)腾讯Bugly干货分享:Android机型适配之痛
发表于 14:39|
作者李忠丞
摘要:设备、品牌繁多,版本各异,芯片、摄像头、分辨率不统一等,逐渐成为Android发展的障碍。碎片化严重不仅造成Android系统混乱,也导致Android应用的隐形开发成本增多。本文中详细介绍了Android琳琅满目的适配问题。
三、不止是2的双卡
双卡的问题解决的基本思路:
推断:手机内置的系统APP都可以正常使用这些功能,因此肯定存在厂商自定义API来实现这些功能;
反编译:Framework、系统App、系统数据库;
定位:TelephoneManager扩展、SMSManager扩展、电话服务扩展、短信服务扩展、数据库字段扩展。
四、UI适配
说到UI适配其实很是让人头疼,下面的图片是某个产品为了进行UI适配所做的工作,可以看出相当繁琐。
除了分辨率的适配,有时候布局文件中的某个标签还会引起一些问题,我们先看下面一段布局代码:
正确结果:
错误结果:
这就是因为Android 3.0以下版本在FrameLayout中使用layout_marginTo标签,必须要设置gravity才能生效。
那么如何解决这个问题呢?在设置android:layout_marginTop的组件中再设置一下 android:layout_gravity="top"即可。
五、还有更奇葩的
1. 厂商的抽象方法
如果你需要实现InputConnection接口,那么你一定要注意下面这个很奇葩的异常:
反编译了下此款手机的Framework,发现厂商在InputConnection接口中增加了一个抽象方法performYLPrivateCommand。
2. 距离传感器
2.1 不同手机event.values[0]值简直是千变万化
简单说几个有代表性的:
一部分手机比较正常,靠近时为0远离时为1(0,1);
有点小个性的手机数值将变大,比如(0,100),(3,5),(3,100)等等;
213手机的数值就比较莫名其妙,(1.001,5.003),你是表明精确度高?
2.2 数值与远近关系不统一
既然我们是通过数值来判断当前是否出于近耳状态,那么是不是应该这个数值的大小是有说道的?靠近时的数值小一点,远离时的数值大一些,起码我见过的99%的手机是这样子的。但是就有几款神经病手机(100W)偏偏是靠近时的数值比远离时的数值大,这是个坑,开发者要注意~~!!
2.3 getMaximumRange方法返回值不对
有一句API:SensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY).getMaximumRange(),
文档解释这个应该获取的是传感器数值变化的最大范围,比如如果靠近时的值是0,远离时的值是1。那么getMaximumRange()的值应该是1才不会影响我们的判断,我这里仅仅是从API角度和我们日常的使用习惯来说的,如果不是这样的规律,就会对我们的编程造成麻烦。
作者简介:李忠丞(Lowry),沈阳大学学士,腾讯优测产品支撑组组长;2011年加入腾讯,专注移动终端开发,先后参与过腾讯微博研发以及手机QQ浏览器、Qzone、魅拍等产品的机型适配工作。
将于10月15-16日在北京新云南皇冠假日酒店召开。大会特设五大技术专场:平台与技术iOS、平台与技术Android、产品与设计、游戏开发、企业移动化、虚拟现实专场。此外,大会更是首次举办国内极具权威影响力的IoT技术峰会,特设硬件开发技术与嵌入式开发两大专场。大会将聚集国内最具实力的产品技术团队,与开发者一道进行最前沿的探讨与交流。&
第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章腾讯Bugly干货分享:Android机型适配之痛
发表于 14:39|
作者李忠丞
摘要:设备、品牌繁多,版本各异,芯片、摄像头、分辨率不统一等,逐渐成为Android发展的障碍。碎片化严重不仅造成Android系统混乱,也导致Android应用的隐形开发成本增多。本文中详细介绍了Android琳琅满目的适配问题。
三、不止是2的双卡
双卡的问题解决的基本思路:
推断:手机内置的系统APP都可以正常使用这些功能,因此肯定存在厂商自定义API来实现这些功能;
反编译:Framework、系统App、系统数据库;
定位:TelephoneManager扩展、SMSManager扩展、电话服务扩展、短信服务扩展、数据库字段扩展。
四、UI适配
说到UI适配其实很是让人头疼,下面的图片是某个产品为了进行UI适配所做的工作,可以看出相当繁琐。
除了分辨率的适配,有时候布局文件中的某个标签还会引起一些问题,我们先看下面一段布局代码:
正确结果:
错误结果:
这就是因为Android 3.0以下版本在FrameLayout中使用layout_marginTo标签,必须要设置gravity才能生效。
那么如何解决这个问题呢?在设置android:layout_marginTop的组件中再设置一下 android:layout_gravity="top"即可。
五、还有更奇葩的
1. 厂商的抽象方法
如果你需要实现InputConnection接口,那么你一定要注意下面这个很奇葩的异常:
反编译了下此款手机的Framework,发现厂商在InputConnection接口中增加了一个抽象方法performYLPrivateCommand。
2. 距离传感器
2.1 不同手机event.values[0]值简直是千变万化
简单说几个有代表性的:
一部分手机比较正常,靠近时为0远离时为1(0,1);
有点小个性的手机数值将变大,比如(0,100),(3,5),(3,100)等等;
213手机的数值就比较莫名其妙,(1.001,5.003),你是表明精确度高?
2.2 数值与远近关系不统一
既然我们是通过数值来判断当前是否出于近耳状态,那么是不是应该这个数值的大小是有说道的?靠近时的数值小一点,远离时的数值大一些,起码我见过的99%的手机是这样子的。但是就有几款神经病手机(100W)偏偏是靠近时的数值比远离时的数值大,这是个坑,开发者要注意~~!!
2.3 getMaximumRange方法返回值不对
有一句API:SensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY).getMaximumRange(),
文档解释这个应该获取的是传感器数值变化的最大范围,比如如果靠近时的值是0,远离时的值是1。那么getMaximumRange()的值应该是1才不会影响我们的判断,我这里仅仅是从API角度和我们日常的使用习惯来说的,如果不是这样的规律,就会对我们的编程造成麻烦。
作者简介:李忠丞(Lowry),沈阳大学学士,腾讯优测产品支撑组组长;2011年加入腾讯,专注移动终端开发,先后参与过腾讯微博研发以及手机QQ浏览器、Qzone、魅拍等产品的机型适配工作。
将于10月15-16日在北京新云南皇冠假日酒店召开。大会特设五大技术专场:平台与技术iOS、平台与技术Android、产品与设计、游戏开发、企业移动化、虚拟现实专场。此外,大会更是首次举办国内极具权威影响力的IoT技术峰会,特设硬件开发技术与嵌入式开发两大专场。大会将聚集国内最具实力的产品技术团队,与开发者一道进行最前沿的探讨与交流。&
第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章您所在的位置: &
你应该学习Android开发的五个理由
你应该学习Android开发的五个理由
时代已经变了,现在是移动互联网的天下,全民App的时代,你是否也蠢蠢欲动,想投身于App的开发大潮之中呢?如果想开始学习移动开发,选择哪一个平台就成了很重要的事情,这里介绍了Android的现状和你应该学习Android开发的理由,希望能给还拿不定主意的你一点帮助。
欢迎来到&机器人&的世界。
Android自从07年诞生,到现在已经走进千家万户,改变着整个世界。
Android的现状
2012年第三季度,Android手机的全球出货量为1.36亿台,占智能手机市场份额为75%,iOS则占14.9%。(数据来源:)
在中国,2012年第三季度,Android手机在智能手机中的市场份额更是达到了惊人的90%,iPhone仅为4.2%。(数据来源:)
2012年Android平板电脑也迎来大幅增长,第三季度iPad份额下降到50%,其余的大部分为Android平板。(数据来源:IDC )
光是2012年,Android设备的出货就达到4.65亿台,而激活的数量超过2.5亿。(数据来源:,)
Android在智能手机的地位已经几乎无可动摇了。
但这并不是Android最激动人心的地方。
Android最令人惊叹的是它无限的可能性,它在设计之初,就是面向不同设备的,从它面世以来,爱好者们、商业首脑们将它移植到不同的设备上,于是我们有了:
智能电视 - 电视装上Android系统。在电视上使用应用、进行游戏等。但它目前并不成熟,招来很多负面评价。需要说明的是,苹果并未推出类似产品,所谓的Apple TV、iTV指的是苹果发售的一个电视机顶盒。
车载App - 汽车装上Android系统,让汽车更加智能,更加安全。
物联网 - 冰箱、牙刷、灯泡,你所能想象的家居物品的一切,都能够装上Android,或是与Android互通,成为智能家居的一部分。
可穿戴智能设备 - 眼镜、手表,甚至衬衫,都可以化身可计算设备,让我们的生活更为轻松。
而更重要的是,Android的特性,保证了应用程序与设备无关,也就是说,一个App只需要一次编写,或者只需要少量的修改,就能够同时运行在截然不同的设备上。
你应该为Android开发应用的理由
如果你想选择一个平台来开始你的编程之旅,Android是最合适的选择,这里有以下的理由。
一、成本低。只要你有一台功能正常、能上网的电脑,就能进行android开发,无论它是Mac还是Windows或者Linux,需要使用的工具也是免费的。如果你没有android手机用于测试,你最多需要出几百元购买一台就足够了。与它相比,正常情况下,iOS开发的成本要昂贵得多。
二、上手容易。Android使用Java作为主要开发语言,Java的特点就是容易上手,能够很快做出东西来,这一点我认为非常重要。兴趣是最好的老师,成就感则其次,它会形成一种激励效应,让人不断深造,不至于厌倦。
三、开发模式够新。Java语言是为面向对象编程而设计的,在进行面向对象编程时享有很大的方便。Android的SDK更是体现了许多先进的设计模式,学习Android的应用程序框架,能够触类旁通,迅速提高编程能力。
四、大众性。Android已经是智能手机王者,在平板电脑中的份额也在迎头赶上,如果你想开发商业应用,希望通过应用程序赚钱,Android也是不容忽视的。Android是开源的,网上有很多开发者共享其代码,而这在iOS开发中难以见到,你可以利用这些代码降低编程的难度。
五、无限的可能。Android已经被移植到各种各样的设备上,在可以预见的将来,还会被移植到更多的硬件上,学习Android就可以更好的理解它们,并在某一个时刻,在脑海中闪现一个足以改变我们的生活的想法,是的,这一切正在发生。
关于对Android开发的一些误解
Android本来就是为不同设备而设计的,Java语言的特点就是跨平台,不关心硬件底层,因此设备的碎片化并不足道。
至于Android版本的碎片化,对于开发来说其实问题也没有我们想象的那么大,Android是向下兼容的,因此我们只需要对市场上主流版本的最低版本设计就行了,Google会更新Android版本份额的数据,比如现在的情况是,Android 2.3以上的版本占据 90%以上,对于Android 1.X版本已经没有必要去做兼容了。
屏幕难以适配
这也是碎片化带来的,屏幕分辨率、尺寸、长宽比等,有着非常大的不同,这给UI设计提出了挑战,认为Android应用的设计难以适配不同的屏幕。
其实这个问题也没有那么严重。Android在UI设计中使用的是与分辨率无关的尺寸,针对尺寸不同的屏幕分为四种情况对应。因此最多设计四次,或者两次就行了,一个为手机,一个为平板,你还可以使用响应式设计将它们融于一个App中。运用矢量图形也可以很好的解决为不同分辨率的屏幕设计的问题。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&&&的更多文章
本专题意在帮助对不了解Android的人能快速上手Android开发,能对
网友评论TOP5
既然强大的Android Studio来了,有什么理由不去用呢?
本系列视频教程由正益无线与51CTO共同推出,目的是让
本系列视频教程由正益无线与51CTO共同推出,目的是让
本系列视频教程由正益无线与51CTO共同推出,目的是让
本书详细描述如何在复杂技术项目中使用Scrum,并结合真实的Scrum案例及专家洞识,在简明及高度概括的理论之上更侧重于实践,并不
Windows Phone专家
Android开发专家
51CTO旗下网站Android碎片化难题:手游兼容性测试应该适配哪些机型?
发表于 15:16|
作者TestBird
摘要:市场中冗杂的Android智能机品牌和庞大的机型数量,让大量的手机游戏开发商正在遭遇着Android设备严重碎片化带来的机型适配困局。一口气适配所有机型不现实,那么,开发者应该如何选择适配的机型和数量呢?
在中国上线的Android游戏的机型适配难度有多大?根据工信部数据,2014年全年的上市智能手机中,有1604款采用Android操作系统,出货量3.49亿部。这也就意味着2014年平均每天有5款新机型上市,将这一年生产的所有Android手机连起来可以绕地球一圈。市场中冗杂的Android智能机品牌和庞大的机型数量,让大量的手机游戏开发商正在遭遇着Android设备严重碎片化带来的机型适配困局。智能手机的生命周期如果按两年计算,那么理论上目前每开发一款Android游戏,就需要对3000多款移动设备进行兼容性测试,这意味着令人绝望的工作量和难以估计的购机成本。一口气适配所有机型不现实,那么开发者应该如何选择适配的机型和数量呢?占据95%用户量的主流品牌机型一年更新160款在2014年新上市的全部1604款Android手机终端中,在工信部备案的主流品牌终端有407款,其中三星、小米、华为等12个主流品牌的终端出货量,已经占到2014年总出货量的72.42%。如果再算上诸如努比亚、锤子手机、一加手机等品牌,那么这个数字将达到95%。从这407款中刨除主流品牌中的冷门机型,以及单纯由网络制式差异因素导致的设备型号不同这两项因素,实际有150~160部值得用于购买用作适配的机型。换句话说,这150~160部机型已经占据了2014年新上市的Android终端用户数的95%。值得测试的主流机型数量不超过320款由于电池技术长期未能实现大的突破,游戏玩家手中的智能手机一天一冲甚至一天多冲是常态。导致智能手机的电池寿命不长,电池容量通常在设备使用一年后开始大幅下降,伴随其他元器件性能老化,通常将智能手机的生命周期为1~2年。另据媒体网络问卷调查统计显示,有58.6%的手机用户会更换手机的频率在1年内,仅有8.4%的用户会使用同一部手机超过2年。而手机游戏玩家的终端迭代周期甚至更短,以两年作为玩家换机周期,保守估计现阶段市场上的主流机型大概也就160款 X 2=320款。这也就意味着,开发者在做兼容性适配测试时,如果优先适配这320来款市场占有量大的机主流机型,且性能与使用人群符合游戏定位的设备,就已经覆盖了近95%的目标客户群。市场占有率低的终端没有测试的必要下图展示了本月国内Android设备的市场占有率(图片信息来自友盟):图中每个小的矩形碎片,代表该品牌下的某一款型号的设备在国内的市场占有率。单个碎片面积越大表明其单品占有率越高,比如三星Note II和小米的MI 3,分别在该视图上占据面积超过4%。如果游戏在这两台设备上不兼容,那么就会直接失去8%的市场占有率。优先适配这样的设备性价比更高,而图中圆圈内大量的碎片面积很小,这意味着实际上即便主流品牌下仍然有大量智能设备实际的市场占有率极低,对于这部分机型可以不做适配。因此单纯从图上就能看出,小米旗下的所有机型,每一台都有着极高的市场占有率。很适合开发者优先适配,而近期刚刚回归中国的摩托罗拉、重点部署海外市场的TCL以及一些杂牌手机、红圈内单品市场占有量小的大品牌手机都不适合开发者消耗过多精力去做适配。主流300+部终端已经占据95%的市场份额,剩下几百部,份额只有5%。开发者如果贸然购买市场份额较低的终端、继续增加机型数量用于适配测试,那么测试成本的边际效应将出现,也就意味着大量的资金被浪费,造成开发者的得不偿失。同时这些终端的测试数据还会严重干扰开发者对游戏市场前景的判断,背离了机型适配本来的目的。所以,对于Android手游游戏开发者来说,做好手游的兼容性适配测试,选择主流的300款近两年更新的主流品牌机型测试,就已经可以满足觉得大多数游戏的测试需求,且成本和效益可以做到最优化,避免不必要的损失。CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面,如果您有想分享的技术、观点,可通过电子邮件(tangxy#csdn.net,请把#改成@)投稿。第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

我要回帖

更多关于 浅谈校长的人格魅力 的文章

 

随机推荐