Android 多功能即时应用程序可以';你不能前进吗?

Android 多功能即时应用程序可以';你不能前进吗?,android,android-proguard,android-instant-apps,Android,Android Proguard,Android Instant Apps,通过使用Android Studio 3.0 Beta 5,使用默认项目(空活动)并打开即时应用程序 要启用Proguard,我只需将所有Build.Gradle(应用程序、基础和功能)设置为 编译时,应用程序工作正常。然而,当编译即时应用程序时,它会出错 java.lang.RuntimeException:无法实例化活动 ComponentInfo{com.elyeproj.myapplication/com.elyeproj.myapplication.feature.MainActivi

通过使用Android Studio 3.0 Beta 5,使用默认项目(空活动)并打开即时应用程序

要启用Proguard,我只需将所有Build.Gradle(应用程序、基础和功能)设置为

编译时,应用程序工作正常。然而,当编译即时应用程序时,它会出错

java.lang.RuntimeException:无法实例化活动 ComponentInfo{com.elyeproj.myapplication/com.elyeproj.myapplication.feature.MainActivity}: java.lang.ClassNotFoundException:找不到 任何atom类中的com.elyeproj.myapplication.feature.main活动 加载器或父类加载器


proguard似乎没有检查功能之间的依赖关系。这怎么解决呢?

好消息!多功能即时应用程序现在支持ProGuard。该修复程序已添加到Android Studio 3.2 Canary 14及更新版本中。

要为整个应用程序项目启用代码收缩,必须从基本模块的
build.gradle
文件执行此操作。也就是说,您可以在动态功能模块中包含自定义的ProGuard规则,但忽略动态功能模块生成配置中的minifyEnabled属性

示例项目可以在上看到


如果您遇到任何问题,请报告。

根据@Bedant将问题报告给谷歌,也许向上投票这个问题会有助于引起更多关注?谢谢。这方面有更新吗?考虑到即时应用程序的大小要求,这似乎是一个非常严重的限制。@JohnO'Reilly检查上面列出的问题,将有一个示例演示如何改进您的即时应用程序。一般来说,您必须通过保留包和类名以及访问的公共方法,使您的API表面可供其他模块使用。
debug {
   minifyEnabled true
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}