【问题标题】:Multi Feature Instant Apps can't be proguarded?多功能即时应用程序无法保护?
【发布时间】:2017-09-15 04:32:25
【问题描述】:

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

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

debug {
   minifyEnabled true
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

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

java.lang.RuntimeException:无法实例化活动 组件信息{com.elyeproj.myapplication/com.elyeproj.myapplication.feature.MainActivity}: java.lang.ClassNotFoundException:找不到 任何原子类中的 com.elyeproj.myapplication.feature.MainActivity 加载器或父类加载器

似乎 proguard 只是不检查功能之间的依赖关系。怎么解决?

【问题讨论】:

  • 根据issuetracker.google.com/issues/65710224向 Google 报告了问题
  • @Bedant,也许支持这个问题会有助于引起更多关注?谢谢。
  • 这方面有更新吗?考虑到即时应用的大小要求,这似乎是相当严重的限制。
  • @JohnO'Reilly 检查上面列出的问题issuetracker.google.com/issues/65710224
  • 会有一个示例来展示如何保护您的免安装应用。一般来说,您必须通过保留包名和类名以及访问的公共方法来使您的 API 表面可供其他模块使用。

标签: android android-proguard android-instant-apps


【解决方案1】:

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

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

https://developer.android.com/guide/app-bundle/configure

可以在multi-feature-module project 看到示例项目。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    相关资源
    最近更新 更多