proguard 不会忽略引用的库

Posted

技术标签:

【中文标题】proguard 不会忽略引用的库【英文标题】:proguard doesnt ignore referenced libraries 【发布时间】:2013-03-12 05:25:36 【问题描述】:

我使用 proguard,在 proguard-project.txt 中,我有忽略引用类的行

-dontwarn com.google.ads.**

日志说:

警告:com.flurry.android.ab:找不到引用的类 com.google.ads.InterstitialAd 警告:com.flurry.android.ab:找不到引用的类 com.google.ads.InterstitialAd 警告:com.flurry.android.ab:找不到引用的类 com.google.ads.InterstitialAd 警告:com.flurry.android.ab:找不到引用的类 com.google.ads.AdRequest 警告:com.flurry.android.ab:找不到引用的类 com.google.ads.AdRequest

.......

您应该检查是否需要指定其他程序 jar。 警告:有 277 个未解析的类引用或 接口。你可能需要 指定其他库 jars(使用“-libraryjars”)。 java.io.IOException: 请更正上述 首先警告。在 proguard.Initializer.execute(Initializer.java:321) 在 proguard.ProGuard.initialize(ProGuard.java:211) 在 proguard.ProGuard.execute(ProGuard.java:86) 在 proguard.ProGuard.main(ProGuard.java:492)

我在配置文件中包含了 -libraryjars ./libs/FlurryAgent.jar 行。我的问题是什么?

【问题讨论】:

尝试在你的proguard文件中添加-dontwarn标签然后测试。 只需从配置文件中删除 -libraryjars ./libs/FlurryAgent.jar 行并在文件中添加 -dontwarn 标签。如果您添加-dontwarn 标签然后删除此行-dontwarn com.google.ads.** 在 proguard-project.txt 我留下了一个单行 -dontwarn 仍然是同样的问题 亲爱的@Paul,proguard 文件名应该总是像 proguard.cfg 而不是 proguard-project.txt。请将文件名改成proguard.cfg,然后尝试运行。 【参考方案1】:

正如你所尝试的,你应该把这一行放在proguard-project.txt

-dontwarn com.google.ads.**

你必须确保 ProGuard 确实在使用这个配置文件,这行在 project.properties:

proguard.config=$sdk.dir/tools/proguard/proguard-android.txt:proguard-project.txt

这是 Android SDK r20 或更高版本的标准行(旧版本仅使用 proguard.config=proguard.cfg,在这种情况下,您必须指定整个配置,而不是依赖 SDK 中的配置)。

【讨论】:

【参考方案2】:

只需将这些行添加到您的 proguard-android.txt。

# Flurry SDK support
-dontwarn com.google.ads.**
-dontwarn com.inmobi.androidsdk.**
-dontwarn com.jumptap.adtag.**
-dontwarn com.millennialmedia.android.**
-dontwarn com.mobclix.android.sdk.**
-dontwarn com.flurry.android.monolithic.sdk.**

【讨论】:

以上是关于proguard 不会忽略引用的库的主要内容,如果未能解决你的问题,请参考以下文章

Proguard 导致 100 个“找不到引用的类”警告,忽略 springframework 和 jackson 的保留规则

Proguard 不会保留班级成员的枚举

ADT R22 - Proguard - 找不到引用的类

Proguard和mixpanel问题

ProGuard 警告:对程序类成员有 7 个未解决的引用

使用 Android 库项目设置 ProGuard