Hilt:使用 minifyEnabled True 为不同应用商店扩展 BaseApp 的多个应用程序类

Hilt: Multiple Application Classes Extending BaseApp for Different App Stores with minifyEnabled True

提问人:aslamhossin 提问时间:11/9/2023 更新时间:11/9/2023 访问量:41

问:

我正在开发一个面向两个不同应用商店的 Android 应用程序:Google Play Store 和 Baidu App Store。为了正确配置这两个存储的应用程序,我创建了两个单独的自定义 Application 类,这两个类都扩展了一个名为 的抽象类。这些自定义 Application 类用 进行批注。BaseApp@HiltAndroidApp

虽然配置在调试版本中工作正常,但在构建设置为 的发布版本时遇到了问题。错误消息如下:minifyEnabledtrue

应用必须扩展 android.app.Application [Instantiatable]

<application android:name=".GooglePlayApp">

此错误表明,为 Google Play 商店版本扩展的 Application 类未被识别为扩展 。BaseAppandroid.app.Application

我需要帮助解决此问题,同时保持设置为发布版本以优化 APK 大小并增强安全性。有没有人遇到过类似的情况,或者对如何在启用缩小的情况下解决这个问题有见解?minifyEnabledtrue

安卓 匕首-刀柄 安卓混淆

评论

0赞 Chirag Thummar 11/9/2023
您必须扩展 BaseApp 类并创建一个类并将其应用于 androidmanifest.xml 中的 Application 标记

答:

1赞 Dayakar Akula 11/9/2023 #1

尝试从 proguard 混淆中排除 GoogleApp、BiduApp 和 BaseApp 类。 以下是有关如何排除的示例:

-keep class com.example.myapp.BaseApp
-keep class com.example.myapp.GoogleApp
-keep class com.example.myapp.BiduApp

将此规则放在 proguard-rules.pro 文件中

0赞 aslamhossin 11/9/2023 #2

@daya-a-l,你的建议没有正常工作,但是我明白了。

为了为 Google Play、百度和基础模块配置 Proguard,我组织了 Proguard 规则如下:

Google Play Proguard (proguard-rules-googleplay.pro):

-keep class com.example.myapp.BaseApp
-keep class com.example.myapp.GoogleApp

百度Proguard (proguard-rules-baidu.pro):

-keep class com.example.myapp.BaseApp
-keep class com.example.myapp.BaiduApp

基础模块 Proguard (proguard-rules-base.pro):

-keep class com.example.myapp.BaseApp

此设置可有效地为多个应用商店版本配置 Proguard,确保根据需要保留必要的类。