Nicky's Blog

Instant App in Google IO 2017

Android Instant Apps enables native Android applications to run in response to launching a URL, without installing the app. Instant apps can use many Android APIs and you use Android Studio to build them.

其实Instant App在去年IO就已经提及,当时网上也流传出很多的介绍和视频文章,但不知为何,这一年感觉这玩意被埋没了,如今,当Google IO再次提及,将开放给全部开发者使用的时候,貌似又火了一波!!

Android Instant Apps
Native Android apps, without the installation
An evolution in app sharing and discovery, Android Instant Apps allows Android users to run your apps instantly, without installation. Android users experience what they love about apps—fast and beautiful user interfaces, high performance, and great capabilities—with just a tap.

Android Instant Apps is now open to all developers, so anyone can build and publish an instant app today.

实用范围

  1. Android6.0版本及以上, 另外官方也说明了很快会支持到Android 5.0版本上面,也就是到时相当于覆盖了70%左右的Android设备
  2. 需要依托Google Play服务

适配步骤

  1. 尽量减低你的app size, 因为每个单独的feature只允许4M内(ps:4M是指base feature + 其他任意一个feature的总和), 毕竟google需要考虑到下载apk的效率和用户体验流量等情况, 拆分的时候需要控制到4M内
  2. 让你的app支持app link, 这个东西也是很早提出来了,但目前用的情况可能不多,尤其是国内的各种app,都是采用自身定制的deep link协议,各个app自搞一套,当然国内也很多第三方的sdk在搞这些,导致国内对google提出的app link并不感冒,但是如果你要build自己的intant app,就必须要对接app link了,而在最近,google那边也在新版的Android Studio上面退出了Applink插件,让开发者更轻易的配置App Link,估计之前的推出也是为了Instant App的推广吧。
  3. 重构你现有的App代码,由于instant app是模块化的东西,每个feature是独立的,他只可以依赖一个base模块,同级别之间应该做到完全解耦,这样才能build成一个instant app,所以这对于代码架构也是需要一定解耦的,除非你的app很小,把所有功能糅合一起一个module搞定。

其他

  1. 由于编译都是同个项目,打包脚本可以通过gradle配置分别打出instant apk和Installed apk,在同一份代码里面如何区分当前是用的什么场景?
1
2
3
4
5
6
//这里可以判断当前运行的是什么场景?
InstantApps.isInstantApp()
//这里可以在instant app的时候推广你的完整apk下载
InstantApps.showInstallPrompt()
  1. Instant Apk 和 Installed Apk不能用不同的launch icon,对于用户,他们是透明的,并不知道他们的差异,所以两者的icon是一致的。

转载声明: 本文转载前需与作者联系并标明文章出处