资讯专栏INFORMATION COLUMN

程序员MM的自白:磨人小妖精之安卓碎片化

Yuqi / 1821人阅读

摘要:想要做更全面的自动化机型测试,破解兼容问题,腾讯优测是很好的选择。在及之前的版本中,使用至版本使用的是版本开始则使用。据不完全统计,要适配市场上大部分的设备,如下所列出的一大长串权限是免不了的,而且肯定还有不少漏网之鱼。

文/腾讯优测 章婉霞

除了crash问题,Android平台的碎片化越来越受到移动开发的关注,且不谈支持Android系统的移动设备早已过万款,屏幕、品牌以及传感器等方面的碎片化问题也困扰着开发者。

初级Android的开发人员经常关心的问题就是开发的应用能不能在需求的设备上正常运行。为什么我没有说所有设备呢?长期盘踞各Android设备市场份额或市场关注度榜单前十位,被大家熟知的品牌,它们ROM的个性化都足以让人眼花缭乱了,更何况在如今“乱世”里那些七零八落的机型了。想要做更全面的自动化机型测试,破解兼容问题,腾讯优测是很好的选择。

最近笔者在做Launcher上图标的清理,接到这个需求的时候,内心是感到轻松的,感觉查询需要删除的图标然后删除不就OK了。但事实证明,我还真是很年轻呢。

Launcher个性化

我们都知道,Android源码中有Google做的原生Launcher。在2.1及之前的版本中,使用com.android.launcher;2.2至4.3版本使用的是com.android.launcher2;4.4版本开始则使用com.android.launcher3。

为了探究一下不同机型的Launcher应用,我分别查看了五部手机,结果如下:

除了锤子使用了原生的Launcher外,其他四个机型都经过了个性化再开发。在实际操作中也可以发现,对图标上的操作响应也不尽相同。

对于点击Home键后有“应用”图标的Launcher,长按应用并拖动可在桌面上创建快捷方式。而没有“应用”图标的Launcher,长按加拖动则只能实现应用图标的移动。

应用要创建和删除自己的快捷方式图标只需发送如下两个Intent即可:

com.android.launcher.action.INSTALL_SHORTCUT
com.android.launcher.action.UNINSTALL_SHORTCUT

同时需要在AndroidManifest.xml中添加如下两个权限:

android:name="com.android.launcher.permission.INSTALL_SHORTCUT
android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT

而第三方应用要对Launcher上其他应用的快捷方式图标进行删除,最简单粗暴的方式是直接从数据库里删除,当然我们并不推荐,即便发送删除的Intent也需要获知该图标在Launcher保存信息的数据库launcher.db中的一条具有独特性的信息。

接下来我们看看launcher.db数据库是不是像网络上说的那般,favorites表中保存着图标信息。

数据库个性化

从导出launcher.db来看,上述表中的五部手机大部分都在favorites表中保存图标信息,三星I9082则在favorites中只保存主桌面图标,其他应用图标保存在favorites_normal表中。而各机型launcher.db中存放的数据及形式也有所区别,详细情况见如下两图:

权限个性化

一旦要对Launcher数据库有访问,至少需要有对数据库的读权限,而要进行操作,权限要求会更高(写数据库的权限安全等级一般都是signatureOrSystem)。据不完全统计,要适配市场上大部分的设备,如下所列出的一大长串权限是免不了的,而且肯定还有不少漏网之鱼。

android:name="com.android.launcher.permission.READ_SETTINGS" android:name="com.android.launcher.permission.WRITE_SETTINGS" android:name="com.android.launcher2.permission.READ_SETTINGS" android:name="com.android.launcher2.permission.WRITE_SETTINGS" android:name="com.android.launcher3.permission.READ_SETTINGS" android:name="com.android.launcher3.permission.WRITE_SETTINGS" android:name="cn.nubia.launcher.permission.READ_SETTINGS" android:name="cn.nubia.launcher.permission.WRITE_SETTINGS"
android:name="org.adw.launcher.permission.READ_SETTINGS"
android:name="org.adw.launcher.permission.WRITE_SETTINGS"
android:name="com.htc.launcher.permission.READ_SETTINGS"
android:name="com.htc.launcher.permission.WRITE_SETTINGS"
android:name="com.qihoo360.launcher.permission.READ_SETTINGS"
android:name="com.qihoo360.launcher.permission.WRITE_SETTINGS"
android:name="com.lge.launcher.permission.READ_SETTINGS"
android:name="com.lge.launcher.permission.WRITE_SETTINGS"
android:name="net.qihoo.launcher.permission.READ_SETTINGS"
android:name="net.qihoo.launcher.permission.WRITE_SETTINGS"
android:name="org.adwfreak.launcher.permission.READ_SETTINGS"
android:name="org.adwfreak.launcher.permission.WRITE_SETTINGS"
android:name="org.adw.launcher_donut.permission.READ_SETTINGS"
android:name="org.adw.launcher_donut.permission.WRITE_SETTINGS"
android:name="com.huawei.launcher3.permission.READ_SETTINGS"
android:name="com.huawei.launcher3.permission.WRITE_SETTINGS"
android:name="com.fede.launcher.permission.READ_SETTINGS"
android:name="com.fede.launcher.permission.WRITE_SETTINGS"
android:name="com.sec.android.app.twlauncher.settings.READ_SETTINGS"
android:name="com.sec.android.app.twlauncher.settings.WRITE_SETTINGS"
android:name="com.anddoes.launcher.permission.READ_SETTINGS"
android:name="com.anddoes.launcher.permission.WRITE_SETTINGS"
android:name="com.tencent.qqlauncher.permission.READ_SETTINGS"
android:name="com.tencent.qqlauncher.permission.WRITE_SETTINGS"
android:name="com.huawei.launcher2.permission.READ_SETTINGS"
android:name="com.huawei.launcher2.permission.WRITE_SETTINGS"
android:name="com.android.mylauncher.permission.READ_SETTINGS"
android:name="com.android.mylauncher.permission.WRITE_SETTINGS"
android:name="com.ebproductions.android.launcher.permission.READ_SETTINGS"
android:name="com.ebproductions.android.launcher.permission.WRITE_SETTINGS"
android:name="com.oppo.launcher.permission.READ_SETTINGS"
android:name="com.oppo.launcher.permission.WRITE_SETTINGS"
android:name="com.huawei.android.launcher.permission.READ_SETTINGS"
android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"
android:name="telecom.mdesk.permission.READ_SETTINGS"
android:name="telecom.mdesk.permission.WRITE_SETTINGS"

仅一个Launcher就这么任性,千千万万的Android开发人员,多少次问自己:

爱卓,我怕了吗?
眼泪,我忘了吗?
产品催,机型差
应用怎么开发???

不管是创业公司还是具备一定规模的企业,为了开发和测试自己的应用,采购覆盖Android市场80%甚至更高的机型,是一件既不现实也不容易更不合理的事。想要为开发者压缩时间成本,为公司节省采购和管理成本,不妨尝试一下腾讯优测,会让你得到意想不到的效果哦,这可是程序员MM发自内心地呐喊~

想了解更多干货,欢迎关注腾讯优测微信号:优测网(wxutest)

腾讯优测:

腾讯优测是备受客户信赖的移动云测试平台,为应用、游戏,H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供「云手机远程操控与调试」、「自动化全面兼容性测试」、「APK源码级缺陷性分析」等多种质量检测工具,更为VIP客户配备专家团队提供定制化综合测试解决方案。真机实验室配备上千款手机,覆盖市面98%主流机型,7*24小时在线运行,覆盖亿级用户。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12507.html

相关文章

  • REM,你这磨人妖精

    摘要:但是有一部分的安卓机,并不等于根节点的,举个例子的,正常情况下也应该是,但在部分机型中,它可能是或等等笔者怀疑上文中提到的页面宽度溢出也是这个问题。 前言 移动端的崛起,给了我们前端更大的舞台,与此同时,也给我们带来了一系列头疼的问题,移动端适配就是其中之一,目前市面上最常用的方案即是REM适配。 为什么说她是一个磨人的小妖精?因为她确实让人又爱又恨,灵活的自适应布局再搭配上css单位...

    lei___ 评论0 收藏0
  • 字符串拼接引发BUG

    摘要:你的线上代码真的没有吗欢迎免费使用我们可以帮助您第一时间发现字符串拼接加法仔细查看生成的代码,你会发现出现在标记的后面,然而标签不见了。在中,根据左右两边变量的类型的不同,符号可以用于数字相加或则字符串拼接。然后又转换为字符串拼接起来。 译者按: bug虽小,却是个磨人的小妖精! 原文: Fixing a bug: when concatenated strings turn int...

    zengdongbao 评论0 收藏0
  • 一次痛苦又甜蜜微信支付踩坑

    摘要:这是我第一次接触微信支付,发现网上还是有很多同学在求助,了怎么办是什么情况为了帮助更多的小伙伴脱离苦海,我决定写下这次的踩坑之旅,给更多的人帮助。 凡是和钱打交道的事,没有一样是容易的。这是我第一次接触微信支付,发现网上还是有很多同学在求助,XXX了怎么办?XXX是什么情况?为了帮助更多的小伙伴脱离苦海,我决定写下这次的踩坑之旅,给更多的人帮助。 介绍 微信支付方式分为刷卡支付、公众号...

    vpants 评论0 收藏0
  • 一次痛苦又甜蜜微信支付踩坑

    摘要:这是我第一次接触微信支付,发现网上还是有很多同学在求助,了怎么办是什么情况为了帮助更多的小伙伴脱离苦海,我决定写下这次的踩坑之旅,给更多的人帮助。 凡是和钱打交道的事,没有一样是容易的。这是我第一次接触微信支付,发现网上还是有很多同学在求助,XXX了怎么办?XXX是什么情况?为了帮助更多的小伙伴脱离苦海,我决定写下这次的踩坑之旅,给更多的人帮助。 介绍 微信支付方式分为刷卡支付、公众号...

    DrizzleX 评论0 收藏0
  • 牛博 - 收藏集 - 掘金

    摘要:使用详解掘金综述是由公司开发的。目录参考资料配置修改项目中的个人信息多账号配置推向中利用泛型简化掘金简介封装以及,简化的构建,达到偷懒的目的。 Android 自定义 View 合集 - Android - 掘金自定义控件学习https://github.com/GcsSloop/A...小良自定义控件合集https://github.com/Mr-XiaoLiang自定义控件三部曲 ...

    LoftySoul 评论0 收藏0

发表评论

0条评论

Yuqi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<