Android 4.4-7.0 apk的更新换代策略

摘要:
(1) Android 4.4使用Dalvik虚拟机和JIT实时编译器。当应用程序运行时,JIT编译器编译新类以生成本机脚本,这样在下次执行时相同的逻辑将更快。从2018年8月起,提交给Google Play的所有新应用程序必须为Android 8.0开发。早于Android 7.0,以下列表适用于为Android 7.0或更高平台开发的应用程序:Doze和应用程序待机模式:请根据“Doze和程序待机模式优化”一文中的相关描述设计您的应用程序,该文涵盖了适用于多个Android版本的逐步变化。
(一)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 会根据每个应用签署密钥确定作用域。

 
 
 
 
 

免责声明:文章转载自《Android 4.4-7.0 apk的更新换代策略》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux下区分物理CPU、逻辑CPU和CPU核数flutter stack嵌套,appbar透明,Container设置背景图片并且图片在appbar之下下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

YUM仓库服务与PXE网络装机

一:部署yum环境 1、在服务端部署YUM软件仓库 环境:linux01做yum仓库,linux02做客户端 (1)从centos7光盘中安装vsftpd软件包,配置并启用vsftpd服务。 [root@localhost ~]# rpm -ivh /media/cdrom/Packages/ftp-0.17-54.el6.x86_64.rpm [root...

如何制作prezi swf格式字体(prezi 中文字体)

如何制作prezi swf格式字体(prezi 中文字体) 文/玄魂 前言 Prezi软件虽然没有正式进入中国,但是中国的Prezi爱好者却在不遗余力的推广着Prezi。我接触这款软件比较晚,但是从接触到现在,已经正式抛弃了PPT,爱不释手。 Prezi在4.60及之前版本之前不支持中文输入,社区内的高手制作了swf格式,通过编辑css替换字体的方法做到...

如何上传网站程序(文件浏览器上传网页、FileZilla上传网站程序)

问题场景: 网页制作完成后,程序需上传至虚拟主机。 注意事项: Windows系统的主机请将全部网页文件直接上传到FTP根目录,即/。 Linux系统的主机请将全部网页文件直接上传到/htdocs目录下。 由于Linux主机的文件名是区别大小写的,文件命名需要注意规范,建议使用小写字母,数字或者带下划线,不要使用汉字 。 如果网页文件较多,上传较慢,强烈建...

Crash日志解析

当应用程序崩溃时,会创建一个崩溃报告,这对于了解导致崩溃的原因非常有用。本文档包含有关如何表示,理解和解释崩溃报告的基本信息。 1、介绍 2、获取崩溃和低内存报告 3、象征性的奔溃报告 1、位码(bitCode) 2、确定奔溃报告是否符号化 3、用Xcode标记iOS奔溃报告 4、用atos表示崩溃报告 5、符号故障排除 4、崩溃报告分析 1、...

最全的 Charles 抓包工具详解

0. 前言不管是移动开发者还是测试者,于抓包工具对于我们的工作都是非常有帮助的,而Charles是一款非常优秀的抓包工具 Charles不仅可以帮助我们抓取服务器返回的数据,还可以修改请求参数,修改响应体 基本上HTTP能修改的东西,Charles都能帮我们修改 所以当我们接口在Mock阶段时我们可以通过Charles设置我们本地的JSON数据,加速我们的...

微信小程序高级基础

微信小程序高级基础 微信小程序的注册和服务器配置: 小程序是什么呢?小程序是一种不需要下载安装就可以使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下就可以打开应用,也体现了龙哥"用完即走"的理念,用户不用关心是否安装太多应用的问题,应用将无处不在,随时可用,而且又不用安装卸载。 微信小程序其实是微信提高了自身对于HTML5特性支持的能力,...