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 会根据每个应用签署密钥确定作用域。

     
     
     
     
     
  • 相关阅读:
    hdu6229 Wandering Robots 2017沈阳区域赛M题 思维加map
    hdu6223 Infinite Fraction Path 2017沈阳区域赛G题 bfs加剪枝(好题)
    hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心
    hdu6441 Find Integer 求勾股数 费马大定理
    bzoj 1176 Mokia
    luogu 3415 祭坛
    bzoj 1010 玩具装箱
    bzoj 3312 No Change
    luogu 3383【模板】线性筛素数
    bzoj 1067 降雨量
  • 原文地址:https://www.cnblogs.com/cold-ice/p/8622765.html
Copyright © 2011-2022 走看看