当前位置: 首页 > 科技观察

程序员MM的自白:磨小仙女Android碎片化

时间:2023-03-23 12:07:45 科技观察

除了崩溃问题,Android平台的碎片化也越来越受到移动开发的关注,更何况现在支持Android的移动设备已经过万系统。品牌和传感器的碎片化也困扰着开发者。Android初级开发者普遍关心的问题是开发的应用程序能否在要求的设备上正常运行。为什么我不说所有设备?长期占据Android设备市场份额或市场关注度榜单前十的知名品牌,其ROM的个性化程度足以让人眼花缭乱,更何况是当今“乱世”中那些零散的设备。类型。如果你想做更全面的自动化模型测试,解决兼容性问题,腾讯优测是个不错的选择。最近笔者在清理Launcher上的图标。接到这个请求的时候,我的心里松了口气。感觉查询需要删除的图标,然后删除就可以了。但事实证明,我还很年轻。Launcher个性化我们都知道Android源码中有一个Google制作的原生Launcher。在2.1及更早版本中,使用com.android.launcher;从2.2到4.3,使用com.android.launcher2;从4.4版开始,使用com.android.launcher3。为了探究不同机型的Launcher应用,分别查了五款手机,结果如下:MicrosoftInternetExplorer402DocumentNotSpecified7.8lbNormal0机型系统版本Launcher包名1SamsungI90824.1.2com.sec.android.app。启动器2华为G6064.0.3com.huawei.android.launcher3HTCT328W4.0.3com.htc.launcher4NubiaZ9Mini5.0.2cn.nubia.launcher5SmartisanT14.4.2com.android.launcher3除Smartisan使用的原装Launcher外,其余四款均进行了个性化再开发,在实际操作中也能发现。对上的操作的响应。对于单击主页按钮后具有“应用程序”图标的启动器,长按该应用程序并拖动以在桌面上创建快捷方式。对于没有“应用”图标的启动器,长按和拖动只能实现应用图标的移动。应用程序要创建和删除自己的快捷图标,只需要发送以下两个Intent:com.android.launcher.action.INSTALL_SHORTCUTcom.android.launcher.action.UNINSTALL_SHORTCUT同时需要以下两个权限在AndroidManifest.xml中添加:android:name="com.android.launcher.permission.INSTALL_SHORTCUTandroid:name="com.android.launcher.permission.UNINSTALL_SHORTCUT并且第三方应用要删除其他应用的快捷方式图标Launcher,最简单粗暴的方式就是直接从数据库中删除。当然,我们不推荐它。即使你发送了一个Intenttodelete,你也需要知道Launcher保存信息的launcher.db数据库中关于图标的一条唯一信息。接下来看看launcher.db数据库是不是像网上说的那样在favorites表中存放了图标信息。数据库个性化从导出的launcher.db来看,上表中的五款手机大部分都在收藏夹表中保存了图标信息。三星I9082只将桌面主图标保存在favorites中,其他应用程序图标保存在favorites_normal表中。每个模型的launcher.db中存储的数据和表单也不同。具体见以下两张图:图1-1Nubialauncher.db数据图1-2SamsungI9082launcher.db数据权限Personalization要访问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开发者自问:艾卓,我害怕了吗?眼泪,我忘记了吗?产品提醒,模型差怎么开发应用???不管是企业公司还是一家有一定规模的公司,为了开发和测试自己的应用,采购覆盖80%以上Android市场的机型既不现实也不容易也不合理,想要压缩开发者的时间成本,为公司节省采购和管理成本,不妨试试腾讯优测,会有意想不到的效果,这是程序员MM发自内心的呐喊~