资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Android 应用开发兼容性问题整理(仅供内部使用)Android 应用开发兼容性问题整理Android 应用开发兼容性问题整理目录1 案例描述 .22 案例分析 .22.1 解决兼容性问题的利器 .22.2 Dialog.setMessage(String str) .32.3 不要用 AutoCompleteBox 组件 .42.4 快捷方式 .52.5 Android 类库中 java.net.InetAddress 的差异 .82.6 手机厂商兼容性评分 .93 总结 .10Android 应用开发兼容性问题整理模板编号: 模板版本:V1.0Beta1.0 第 1 页 共 13 页关键词:Android,兼容性问题摘 要:Google 的战略造成 Android 生态系统的混乱,混乱给 Android 应用开发带来阻力,本案例总结了几个本人工作中遇到的 Android 兼容性问题,提供一些解决思路,避免浪费时间。由于本人工作是 Android 的应用开发,本案例不讨论硬件方面的问题。Android 应用开发兼容性问题整理模板编号: 模板版本:V1.0Beta1.0 第 2 页 共 13 页1 案例描述Android 应用开发的同学,在工作中一定会经常遇到这样的场景:测试人员拿着手机,气势汹汹的过来, “这个 bug 刚改好,怎么又有了?”,开发的同学皱起眉头找原因,同样的程序在三星手机上策马奔腾,却在魅族手机上折戟沉沙。 做 web 开发的尤其做前端的同学,都知道各浏览器之间存在兼容性问题。Android 应用开发中同样存在令人头疼的兼容性问题,如鬼魅一般如影随形,隐匿在开发的各个角落。本篇案例,就以本人艰苦卓绝的一年 Android 应用开发经验为基础,整理出一些 Android 兼容性问题。希望能够为开发人员提供一些解决思路,少走弯路。需求人员可以以此为参照,在做需求的时候避免一些兼容性问题频发的地方,不要折腾。测试人员也可以阅读此案例,做好测试Android 应用的思想准备。在案例最后,也会总结一下几个厂商的手机在兼容性上的表现,需求、开发、测试人员在做 Android 应用相关工作的时候 ,多加注意。2 案例分析2.1 解决兼容性问题的利器Android 操作系统由于 Google 的开源推广,惨遭各大手机生产厂商修改折腾,同一版本号的 Android 系统在不同的手机上会出现差别。再者,Android 一出世便身负重任,版本更新的速度非常快,这也导致了不同 Android 版本会有差别。甚者,同一家手机厂商推出不同型号的手机采用不同的 Android 系统版本、是否修改 Android 源码,都会引起应用程序的一些表现差异。所以,我们在碰到了兼容性问题的时候,找寻的直接原因要从系统版本、手机厂商、手机型号等方面入手。幸好,Android api 提供的 android.os.Build 类能够为我们提供这些信息,从而根据这些信息对应用程序做适当的处理。下面列举了,android.os.Build 类中比较常用的静态成员变量。android.os.Build.MANUFACTURER :生产厂商android.os.Build.MODEL :设备名android.os.Build.VERSION.SDK:sdk 版本号android.os.Build.VERSION.SDK_INT : sdk 版本号,int 类型Android 应用开发兼容性问题整理模板编号: 模板版本:V1.0Beta1.0 第 3 页 共 13 页2.2 Dialog.setMessage(String str)贴代码:public void openVersionDialog(final Context context, final String message,String fileName, String fileSize)AlertDialog.Builder dialog = new AlertDialog.Builder(context);dialog.setTitle(context.getString(R.string.new_version);String msg = context.getString(R.string.version_info) + message+ context.getString(R.string.install_package, fileSize);dialog.setMessage(msg); dialog.create();dialog.show();上面的代码,是为了进行一个弹出框提示,同样的代码,不同手机上dialog.setMessage(msg)的表现不同。图 2-2-1 Meizu 手机 图 2-2-2 Philips 手机对于 dialog.setMessage(msg)的处理,Meizu 手机中的字段是居中对齐的,而目前测试到别的厂商的手机都是左对齐,三星、Philips、Htc 都是左对齐。如果开发人员被要求修改Android 应用开发兼容性问题整理模板编号: 模板版本:V1.0Beta1.0 第 4 页 共 13 页Meizu 手机的表现,有两种解决思路。一种思路是:通过 android.os.Build.MANUFACTURER 判断是否是 Meizu 手机,如果是 Meizu 手机则不用 dialog.setMessage(String msg)方法,而创建一个显示文字的 view,然后用 dialog.setView(View layout)方法。第二种思路是不采用dialog.setMessage(String msg)方法,全部采用 dialog.setView(View layout)方法。第三种思路则不用 Dialog 类,弹出框采用自定义 Activity。2.3 不要用 AutoCompleteBox 组件大家在平时上网的时候,都会有这样的经历,在 Baidu 的搜索框中,输入字符串,Baidu 会弹出一个下拉框,下拉框中有跟你输入的字符串相联系的一些字符串。这在 web 中是一个常见的应用,你输入一个字符,页面发送 ajax 请求给后端,后端经过处理,返回相关的字符串,然后显示在前端页面。那么有人,就会问,能不能把这种应用搬到手机应用上。答案是可以的,而且 Google 也给我们提供这样的组件。但只能说,这人有联想,但没经验。2.2 中介绍的问题,目前测试只 Meizu 手机出现,如果是 AutoCompleteBox 组件,则多种手机会出现不同的症状。图 2-3-1 AutoCompleteBox 示例如图 2-3-1,AutoCompleteBox 组件包括 text box、drop-down、selection adapter 三个部分。图中,adapter 中有四个 Item,Item 中可以设置背景图片。单独的一个 AutoCompleteBox 组件感觉不错,但在实际的测试中,同一代码在不同的机型会出现各种差异,这些差异存在于组件的不同的地方。例如:1)Item 与 selection adapter 左边框、右边框的距离。2)只有一个 Item 时, selection adapter 的上下边框遮住一个 Item。3)selection adapter 的边框与 drop-down 边框Android 应用开发兼容性问题整理模板编号: 模板版本:V1.0Beta1.0 第 5 页 共 13 页的距离。4)text box 的位置表现影响到当软件盘弹出时 drop-down 是在 text box 的上方还是下方,如图 2-3-2。5)如果 Item 中有背景图片,那么背景图片的透明度可能引起别的问题。解决这些问题,是耗费时间精力体力的,组件的每个属性都要试,据测试修改的经验,越老版本的系统、越老型号的手机问题越多。这里就不一一贴图,往事不堪回首。所以,在应用中,快刀斩乱麻,大胆去之。图 2-3-2 drop-down 在上方的 AutoCompleteBox2.4 快捷方式应用程序有了创建快捷方式的功能,经常有人抱怨自己手机上出现多个桌面图标。且听本人娓娓道来。不同于 iOS,Android 操作系统在安装一个软件安装包的时候,并不会为软件包创建桌面快捷方式,要实现创建桌面快捷方式的功能,只能在程序安装成功后第一次运行的时候创建快捷方式。而且,Android 系统是允许系统启动后选择桌面的,区别于其他系统在启动后是默认桌面,这也就导致了 qq 桌面、91 桌面等各种桌面应用的丛生。再者,Android 的开源性,某些自称国际品牌的手机厂商标新立异,不仅修改桌面,而且修改与桌面相关的 java 类。1) 添加桌面快捷方式的代码:/添加当前应用的桌面快捷方式public static void addShortcut(Context context, int iconId, int appId, Class target, Android 应用开发兼容性问题整理模板编号: 模板版本:V1.0Beta1.0 第 6 页 共 13 页boolean many) Intent addIntent = new Intent(com.andr
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号