从Android Gradle插件3.4.0版本开始,Google Play将停止支持以功能插件com.android.feature,还有即时应用插件com.android.instantapp构建的应用程序。在构建应用程序的时候,系统会标记功能插件已经wg弃用,开发者需要将原本使用功能插件构建的即时应用程序,改以使用新的应用程序发布格式App Bundle,并激活即时应用以支持即时体验。
去年Google发布了全新构建和发布Android应用程序的方法App Bundle,能有效解决应用程序肥大的问题,用户不再需要下载用不到的文件,Google Play将根据用户的设备,仅提供所需要的文件,这种为用户产生优化的APK称为动态交付。
动态交付是基于动态功能的com.android.dynamic-feature,视用户需要而进行,目前有三种交付类型,包括在安装的时候交付动态功能、按需交付动态功能、即时与安装时交付动态功能。
Google持续更新App Bundle,在三月的更新,开发者只要使用Android Studio 3.3,就能让单一项目构建App Bundle,同时包含一般与即时应用程序,之前开发者需要针对一般与即时应用程序,上传两个独立的App Bundle,但现在只需要上传含有体验模块的单一App Bundle就可以了。
过去构建即时应用程序的依赖性较为复杂,需要创建功能模块作为App的基础功能模块(Base Feature Module),要包含一般与即时应用程序共享的程序代码以及资源,另外,其余程序代码库还需要有多个非基础功能模块,如即时应用程序进入点模块,以及有仅适用一般安装的应用程序模块,另外,也需要即时应用程序模块,内置了即时应用程序代码与映射的相依文件。
而在新的App Bundle实例中,基础功能模块将被当作应用程序模块,管理一般与即时应用程序的程序代码和资源,开发者可以组织额外的模块化功能,作为三种动态功能模块类型的其中一种,而由于manifest中的dist:instant属性,因此即时应用程序模块便不再需要了。
通过将即时应用程序转为即时App Bundle,应用程序不仅能获得新格式带来的优势,也能简化应用程序模块化设计。开发者可以使用Android Studio 3.3以上版本,创建可激活即时应用的App bundle,为应用程序加入即时体验。