You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Proguard技术问题:如何避免与混淆后的库类名产生命名冲突?

ProGuard命名冲突解决方案

问题背景

已混淆的第三方库JAR中包含类:

com.mycompany.a.a.c

使用ProGuard混淆自有代码时,工具未检测到该库中的类,将自有类com.mycompany.foo.bar.ClassA混淆为com.mycompany.a.a.c,引发命名冲突。

方案一:保留com.mycompany.foo包前缀不混淆

在ProGuard配置文件中添加规则,强制保留目标包的完整结构:

# 保留com.mycompany.foo包及所有子包的类结构与类名
-keep class com.mycompany.foo.** { *; }

若仅需保留包前缀(允许混淆类名但保留包路径),可使用以下规则:

# 保留com.mycompany.foo包结构,允许混淆类名
-keepnames class com.mycompany.foo.**
-keepclassmembers class com.mycompany.foo.** { *; }

方案二:重命名com.mycompany.foo包前缀为com.mycompany.aa

通过ProGuard的包重命名规则,将目标包替换为新前缀,规避冲突:

# 将com.mycompany.foo及其子包统一重命名为com.mycompany.aa
-repackageclasses 'com.mycompany.aa'
-allowaccessmodification

如需更精确的单包重命名,可使用:

# 精确重命名com.mycompany.foo包为com.mycompany.aa
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-adaptclassstrings
-renamepackage com.mycompany.foo to com.mycompany.aa

内容的提问来源于stack exchange,提问作者eastwater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:15:28