大家好,欢迎来到IT知识分享网。
概述
instant app 是谷歌推出的类似微信小程序(或者说小程序类似于instant app)的一项技术,用户无须安装应用,用完就走,同时兼备h5的便捷和原生应用的优质体验。
工作方式和应用场景
工作方式
当用户点击链接时,通过app link去打开相应的instant app,如果之前没有打开过,则会从play store去下载并打开,整个过程一气呵成,跟浏览器打开网页,如果有缓存先读缓存,没有就去服务器loading一样。
应用场景
-
通过直接点击链接进入(从社交网络或短信中点击链接);
-
通过浏览器搜索,如搜索X电商的y商品,通过点击浏览器的搜索结果可直接进入instant app;
-
通过google play可以先试用部分功能,觉得不错再安装完整功能;
-
在游戏中方面的应用,跟上面类似,相当于游戏试玩。
Instant App与微信小程序的对比
从部署到手机角度讲
这一点简直是小程序完胜,毕竟Google Service不能正常的引进大陆,这一点上小程序占尽了天时地利。
小程序可以利用微信的小程序功能,添加附近商家的小程序,也可进行搜索小程序;而Google的Instant App,想要使用此项技术,必须保证你的完整App要在Google Play上有正式发布,用官方的话来说,我们要让用户体验到无缝对接。
这一点来看,个人感觉还是Google做的更为周到细致,虽然在大陆没什么卵用。
从程序体积来讲
从这一点来讲,Instant App的控制要比小程序要好。在Google官方要求里,每个Instant App程序最大不得超过4M的大小,一旦超过,必须重新划分模块,再缩减体积;
而小程序来讲,没有一个明确的大小上限,如果业务简单,你可以控制在1M-2M的大小,如果业务复杂,包大小也能达到10M都不足为奇。
所以这一点对于用户来讲,用户肯定喜欢用最少的开销,体验到业务。我们肯定不希望大把的手机空间,浪费给一个程序,特别是对那些手机空间严重不足的用户,我觉得这一点Instant App胜利。
从存储角度来讲
对于小程序,数据会存储到手机的存取区域,并且每次加载小程序时,是加载本地存储优先。
Instant App则是将程序的部分代码下载下来存储到本地存储,同样在每次加载时,也会优先检查本地存储是否有代码。
从存储机制来讲,差别不太大。如果从底层实现的方式来看,小程序利用的是H5的存储机制,Instant App利用的是常见的java存储机制。
从页面解析速度来讲
其实用户关注的这一点是尤为重要。对于小程序而言,毕竟底层是用HTML的实现方式,而Instant App底层用的是java的实现方式。
我们看小程序的展现过程,首先利用微信小程序特有的编码方式,转换成HTML,再来渲染、解析、展现等操作;而Instant App不需要这么麻烦,它天生就可以用Android来编写,然后通过下载这部分代码到本地,使用Instant App时,显然就是本地应用的用户体验,流畅度要比HTML页面展现的方式顺滑很多,这是Instant App能绝对胜出的一点。
综合对比,Instant App从用户体验角度来看,要比小程序好很多,体验起来让用户有种“我并没有安装这个程序,就能体验到和程序同样的丝滑体验”的感觉。但是从可实施角度看(我指的是只在大陆范围内),Instant App天生就不如微信小程序。
一些限制
-
Activity必须相对独立
-
没有自定义的后台服务
-
不能有自定义的content provider
-
不能使用NDK
-
不能使用反射、内省
启动流程
用户点击link=>上传设备信息(cpu,屏幕,等硬件信息)=>服务器找到对应的app=>下载所需数据=>google play服务运行Instant App
工程结构
1)Instant app module:对应的就是即时应用,当选择运行instant app配置之后,会在该模块目录下生成build目录,同时可以看到这个神奇的即时应用就是一个压缩包;
2)App module:对应的就是installed app,即需要下载安装的应用;
3)Base feature:由上图可以看出,其它的Feature module都是要依赖这个模块,因此其作用就比较明显了,是用于放置通用的代码和资源文件。
总结:
-
Base feature是将程序架构成拥有一个最顶级的feature module,这个feature module内集合你的Instant App或者其他子module在运行时需要的一些必要资源内容,包括Activity、Fragment等资源,这样能相对减少你的子module的资源大小,从而减少你宝贵的流量消耗;
-
APK module和Instant App module共同构成base feature module;
-
Instant App应使用App Links作为功能的接入口,因为App Links具有独特的验证方式,能与Google服务进行互通,且瞬时加载程序是依托于Chrome浏览器来进行交互的,所以需要使用App Links作为功能的接入口。
-
另外,编译instant app是以apk的方式参与打包,而编译installed app则是以aar的方式参与打包。
原理猜想
从谷歌的各种文档和各种博客中都提到,模块化现有的程序猜想,应该是由google play提供类似“沙盒”的东西(这个东西其实目前国内也有一些开源库有实现类似的功能,例如360插件,动态加载activity,插件化等,猜想谷歌实现的原理也是差不多),APP再细分成一个个比较独立的模块,运行于沙盒上。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24864.html