如何为多个命名空间配置 ProGuard 保留选项?

Posted

技术标签:

【中文标题】如何为多个命名空间配置 ProGuard 保留选项?【英文标题】:How to configure ProGuard keep options for multiple namespaces? 【发布时间】:2021-11-28 15:30:03 【问题描述】:

我了解keep options of ProGuard 可以与通配符一起使用以包含完整的命名空间。例如:

-keepclassmembers class com.yourcompany.yourpackage.** 
    # relevant configuration

是否可以将相同的配置应用于多个个命名空间而不必重复配置两次?

例如,是否可以同时包含 io.com. 命名空间?

-keepclassmembers class [com|io].yourcompany.yourpackage.** 
    # relevant configuration


【问题讨论】:

【参考方案1】:

这是由ProGuard's Class Specifications决定的。

提供有限的选项,模仿正则表达式。但是,这些不包括通常用于表示选项的管道 (|)。

但是,"[f] 或额外的灵活性,类名实际上可以是逗号分隔的类名列表,带有可选的! 否定符,就像文件名过滤器一样。这种表示法看起来不太Java -like,所以应该适度使用。”

谁在乎看起来不是很“像 Java”,我只是不想重复自己。此外,我正在使用 Kotlin。 =) 因此,以下应该可以工作:

-keepclassmembers class com.yourcompany.yourpackage.**, io.yourcompany.yourpackage.** 
    # relevant configuration

【讨论】:

以上是关于如何为多个命名空间配置 ProGuard 保留选项?的主要内容,如果未能解决你的问题,请参考以下文章

ProGuard 保留类名但更改包名

如何为后退按钮保留 Web 表单内容

如何为 Webpack 中的每个入口点重命名 output.library 选项?

wpf 中,如何为自己的类库映射URI名称空间

如何为 ASP.net UserControl 指定命名空间?

如何为 vuex 命名空间模块状态创建 getter 和 setter