Android Instant App 介绍

开篇说明

每年Google 的 IO 大会上都会有令人惊喜的黑科技发布,今年也不例外,今年谷歌针对Android 发布了一个名为 instant app 的新技术。

关于这个新技术,网上大部分都是介绍这个功能的应用场景,比较少提及一些技术相关的问题。我这边主要针对广大程序猿,针对这个功能整理了一些应该是程序猿们比较想知道的一些问题。

Ps:下面所有的instant app 均简称 IAPP,这个不是官方缩写,本人为了书写方便自创的,请勿在其他地方使用,如有雷同,纯属抄袭-,-。

功能简介

安卓即时应用将改变传统的通过应用商店app store安装应用的方式,因为它允许 安卓 原生应用立即运行,无需安装,在运行时,会懒加载一些相关模块到本地设备上,这就允许用户能够立即和应用和应用内容进行交互,绕过必须访问应用商店进行安装这一关。

按照谷歌的官方说法就是,你不用再分发你的应用了,你只需要推广你的连接即可。点开连接就是打开了你的应用,瞬间高大上,但是在本人看来,理想总是美好的,因为在谷歌的开发文档里面有提到,开发IAPP,大小最大限制4MB, 因为本人也还没有详细研究这个实现原理,但是从该限制来看,就算是点开连接,下载一些必要的资源也是必须的,4MB的数据以国内运营商的移动流量价格,估计在外面都舍不得打开了。如下是官方文档中的一个示例图片

Android Instant App 介绍_第1张图片

IAPP 相关问题(开发文档,google blog,twitter ,加上自己根据文档推测整理的一些相关问题)

1.      设备兼容性 

4.1+(with google play store - 国内用户死心吧),不得不佩服谷歌,还能把这个功能兼容到4.1,从这个地方来看,IAPP的实现应该也是大部分依靠google play。

2.      是否需要在原有项目上单独开发一个IAPP

不需要,在原来的工程上添加一些配置即可,这个是谷歌官方的说法,然而在不起眼的地方有一行小字:需要根据用户的项目结构来决定。What?在本人看来这个一般是有2个版本的节奏

3.      权限问题

使用的是同android 6.0 一样的权限模型

4.      如何发布IAPP

通过google play 发布,国内用户表示无视

5.      关键问题来了,如何开发IAPP

目前谷歌并没有公开发布IAPP 的接口,但是面向开发者提供了申请的机会,

鉴于时间和精力问题,本人没有申请,有需要的人可以尝试一下,如果获得机会顺便把文档共享一下,以下是申请链接

https://docs.google.com/forms/d/e/1FAIpQLScPQn78CBIxsI0RhIoGPMbuU6COhQ7H2eHr9t-S0CcgtILF4w/formResponse

6.      另外android studio2.2(dev channel)已经支持 IAPP 开发。

7.一些限制

Activity 必须相对独立

没有自定义的后台服务

不能有自定义的 content providers;

不能使用NDK

不能使用反射、内省。

8.      谷歌已经建立一套静态分析工具用于构建出所有包含java类依赖图和apk资源,用来分析现有的代码是否符合规范,使用这个工具可以分析哪些依赖必须拆分,哪些资源必须下载等。

9.     上传应用商店时,这2个应用将被分开来

10. IAPP 启动流程

用户点击link  >  上传设备信息(cpu,屏幕,等硬件信息)> 服务器找到对应的app >

下载所需数据 > google play服务运行 IAPP

Android Instant App 介绍_第2张图片


原理猜想

从谷歌的各种文档,和各种博客中都提到,模块化现有的程序猜想,应该是由google play 提供类似“沙盒”的东西,(这个东西其实目前国内也有一些开源库有实现类似的功能,动态加载activity,插件化等,猜想谷歌实现的原理也是差不多)APP 再细分成一个个比较独立的模块,运行于沙盒上。权限问题配合android 23 之后的动态权限管理模型,堪称绝配。

 

总结

         科技巨头想的总是比我们多,配合最新系统上推出的附件通知功能,用户可以即时方便的打开应用,想象一下在车站前,收到一条通知,打开就可以买票,想想也是不错的。

 

引用查询资料出处

https://developer.android.com/topic/instant-apps/index.html


原文地址: http://blog.csdn.net/maetelibom/article/details/52100652

你可能感兴趣的:(Android,Instant,App,/,Instant,Run)