zoukankan      html  css  js  c++  java
  • Android 4.4-7.0 apk的更新换代策略

    (一)Android 4.4 使用的是Dalvik虚拟机配合JIT (just in time)即时编译器,当app运行时,JIT编译器对新类进行编译,生成原生型指令码,这样在下次执行时相同逻辑就会速度更快。
    JIT优点 :安装速度快占用空间小
    JIT缺点:运行时编译开销大,容易造成卡顿,也就是以前生成apk的时候会很卡顿很慢。
     
            (二)在Android5.0以后google 放弃了Dalvik转投ART (Android Runtime)虚拟机,编译策略有由来的JIT变成了AOT(Ahead of Time)。
     
     
            ART策略是在第一次安装的时候,字节码就会预先编译成原生型指令码,使得其成为真正的本地应用。以后运行App不再需要进行编译,启动速度和运行速度都增加了提高,也就减少了卡顿感。
    缺点是:安装时间长,消耗更多存储空间。
     
            (三)在Android 7.0开始,google结合了以前两种编译策略的优缺点,形成了新的Hybrid Mode 即是混合编译,AOT+JIT模式:
     
            在Android 7.0中,安装应用时不再像6.0那样对应用代码进行完整的预编译,而是会根据JIT编译器的分析结果,在设备充电或其余空闲时间对“cold code”进行解释,对于“hot code”,则在实际使用时由JIT进行编译,因此应用安装时间和占用空间大大减少了,像手机淘宝这个APP在Android 7.0系统中的占用大小为156MB,和Android 4.4系统中非常接近。主要的是,它还不会影响到应用的运行速度。
     
       在Android 7.0,采用了AOT + JIT混合编译策略,带来的好处如下:
    ﹒APP安装时间大幅缩短,只有Android 6.0系统的50%;
    ﹒系统升级OTA速度加快,不再需要优化;
    ﹒应用占用空间更少,一般会少10%;
    ﹒降低系统开销,改善电池消耗。
     
       从2018年8月开始 所有向google play提交的新app必须针对andorid 8.0(api 26)开发。

    早于 Android 6.0 (API 等级 23)

    下文列举内容适用于针对 Android 6.0 或更高版本平台开发的应用:

    • 在运行时请求权限

    - 危险权限只可以在运行时被授予。应用的 UI 流必须提供相应可供性向用户请求这些权限;

    - 但凡可能,您的应用要准备好应对权限请求被拒的情况。譬如说,如果某个用户拒绝您的应用访问设备 GPS,应用须通过其它方法继续运行。

    早于Android 7.0 (API 等级 24)

    下文列举内容适用于针对 Android 7.0 或更高版本平台开发的应用:

    • Doze 以及应用待机模式:

    请根据《Doze 以及应用待机模式优化》一文中的相关描述设计您的 app,文章涵盖适用几个 Android 版本的逐步变更。

    当设备进入 Doze 或者待机模式时,会产生下述系统行为:

    - 网络访问限制;

    - 推迟应用的 alarms、syncs 和 jobs;

    - GPS 以及 Wi-Fi 扫描限制;

    - 普通优先级 Firebase Cloud Messaging 消息限制;

    • 权限变更

    - 系统将限制访问应用私有目录;

    - 在应用外公开 file://URI会导致 FileUriExposedException。开发者可以使用 FileProvider 在应用间进行文件共享;

    • 系统阻止应用链接非 NDK 库。

    早于 Android 8.0 (API 等级 26)

    下文列举内容适用于针对 Android 8.0 或更高版本平台开发的应用:

    • 后台执行限制 (Background Execution Limits)

    - 若您的应用不运行在前台,系统将会限制服务:

       ·· 当应用试图调用 startService() 而 startService 又被禁止时,startService() 会抛出异常;

       ·· startForegroundService() 应用必须使用 startForeground() 和 startForegroundService() 函数启动前台服务;

       ·· 请前往 Android 8.0 (API 等级 26) 《行为变更》页面,仔细阅读关于 JobScheduler API 的变更;

       ·· Firebase Cloud Messaging 要求 10.2.1 或更高版本的 Google Play 服务 SDK;

       ·· Firebase Cloud Messaging documentation 在使用 Firebase Cloud Messaging 时,消息投递受限于后台执行限制。若消息接收需要必要后台工作,如后台数据同步,您的应用须要通过 Firebase Job Dispatcher 或者 JobIntentService 调度任务。详情请阅览《Firebase Cloud Messaging 文档》。

    - 隐式广播限制:

       ·· 系统会限制隐式广播。有关处理后台事件详情,请阅读 JobSechduler API 文档;

       ·· 后台位置限制;

       ·· 后台运行的应用访问位置数据受限;

          支持 Google Play 服务的设备可以通过 fused location provider 定期获取位置更新。

    • 通知渠道

    - 您应该为每个渠道分别定义通知中断设特性:

       ·· 您必须将通知分配到某一渠道 (channel),以便通知显示;

       ·· 该版本 Android 平台支持 NotificationCompat.Builder;

    • 隐私

    - ANDROID_ID 会根据每个应用签署密钥确定作用域。

     
     
     
     
     
  • 相关阅读:
    和菜鸟一起学产品之产品经理的自我管理能力
    和菜鸟一起学产品之产品经理的工作职责
    遗传算法解决TSP问题实现以及与最小生成树的对比
    双系统或三系统:Grub Rescue修复方法
    err:安装程序试图挂载映像 1(缺少ISO 9660图像)
    OpenCV手写数字字符识别(基于k近邻算法)
    最小生成树
    ubuntu12.04:Tomcat 7服务器:手动安装
    ubuntu12.04:jdk7:手动安装
    ubuntu12.04:Mysql数据库:手动安装
  • 原文地址:https://www.cnblogs.com/cold-ice/p/8622765.html
Copyright © 2011-2022 走看看