AndroidX AppCompat 包的 Proguard 规则

Posted

技术标签:

【中文标题】AndroidX AppCompat 包的 Proguard 规则【英文标题】:Proguard rules for AndroidX AppCompat package 【发布时间】:2019-08-28 13:00:18 【问题描述】:

到目前为止,我一直在使用 AppCompat 库,但现在我已将我的项目迁移到 androidX 库。

我被 androidx 的 proguard 规则困住了。

如您所知,我们正在为 AppCompat 使用 proguard 规则,如下所示:

-keep public class android.support.v7.widget.**  *; 
-keep public class android.support.v7.internal.widget.**  *; 
-keep public class android.support.v7.internal.view.menu.**  *; 

-keep public class * extends android.support.v4.view.ActionProvider 
    public <init>(android.content.Context);

我搜索了很多,但没有找到任何合适的文档。

AndroidX Proguard 规则有更新吗?

【问题讨论】:

我认为您只需将 android.support.v7 替换为 androidx.appcompat 并供 ActionProvider 使用 androidx.core.view.ActionProvider 。而androidx.appcompat.widget 代替android.support.v7.internal.widget .. 我的意思是按照映射和see the output 。 【参考方案1】:

AppCompat 已经直接在 AAR 中包含了它需要的 ProGuard 规则:无需声明任何特殊的 ProGuard 规则。

因此,您可以完全删除您的自定义规则。

【讨论】:

以上是关于AndroidX AppCompat 包的 Proguard 规则的主要内容,如果未能解决你的问题,请参考以下文章

AndroidX迁移-androidx.legacy:legacy-support-v4或androidx.appcompat:appcompat

程序包androidx.appcompat.app不存在

androidx.appcompat.widget.SearchView 无法转换为 androidx.core.view.ActionProvider

androidx.appcompat.widget.AppCompatTextView 与 API < 26 不兼容

迁移到AndroidX后:无法实例化类:androidx.appcompat.widget.ShareActionProvider。

更新到 androidx.appcompat:appcompat:1.1.0 后的语言更改问题