提问人:aslamhossin 提问时间:11/9/2023 更新时间:11/9/2023 访问量:41
Hilt:使用 minifyEnabled True 为不同应用商店扩展 BaseApp 的多个应用程序类
Hilt: Multiple Application Classes Extending BaseApp for Different App Stores with minifyEnabled True
问:
我正在开发一个面向两个不同应用商店的 Android 应用程序:Google Play Store 和 Baidu App Store。为了正确配置这两个存储的应用程序,我创建了两个单独的自定义 Application 类,这两个类都扩展了一个名为 的抽象类。这些自定义 Application 类用 进行批注。BaseApp
@HiltAndroidApp
虽然配置在调试版本中工作正常,但在构建设置为 的发布版本时遇到了问题。错误消息如下:minifyEnabled
true
应用必须扩展 android.app.Application [Instantiatable]
<application android:name=".GooglePlayApp">
此错误表明,为 Google Play 商店版本扩展的 Application 类未被识别为扩展 。BaseApp
android.app.Application
我需要帮助解决此问题,同时保持设置为发布版本以优化 APK 大小并增强安全性。有没有人遇到过类似的情况,或者对如何在启用缩小的情况下解决这个问题有见解?minifyEnabled
true
答:
尝试从 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 文件中
@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,确保根据需要保留必要的类。
评论