混淆 Android 项目时的未知类 ILicensingService 注释
Posted
技术标签:
【中文标题】混淆 Android 项目时的未知类 ILicensingService 注释【英文标题】:Unknown classes ILicensingService notes when obfuscating Android project 【发布时间】:2013-01-05 19:53:50 【问题描述】:我正在尝试使用 Ant 和 ProGuard 构建 android 版本。我在 project.properties 中取消了以下行的注释,尽管所述文件中的注释指出您不应该修改它;):
proguard.config=$sdk.dir/tools/proguard/proguard-android.txt:proguard-project.txt
混淆时,我得到以下注释:
[proguard] Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService'
[proguard] Note: the configuration refers to the unknown class 'com.android.vending.licensing.ILicensingService'
我明白为什么会这样。这些行可以在默认的 ProGuard 配置文件 ($sdk.dir/tools/proguard/proguard-android.txt) 中找到:
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
我没有使用 Google 许可服务,因此这些类确实是未知的。我找到了通过更新 proguard-project.txt 来摆脱这些注释的解决方案:
-dontnote **ILicensingService
我的问题:这是处理这个问题的正确方法吗?在我看来,无论如何都不应该默认保留这些类,因为该库对于 android 项目不是强制性的。我能想到的唯一方法是将默认配置文件复制到我的项目中,删除 -keep 行并完全忽略 SDK 中的默认配置文件。这似乎也不是正确的方法。还是我错过了什么?
【问题讨论】:
【参考方案1】:设置“-dontnote com.google.vending.licensing.ILicensingService”没问题。事实上,它可能是默认配置文件的一部分。
-
使用该库的项目可能需要 -keep 选项。
对于不使用该库的项目,-dontnote 选项可能会很好地隐藏有关 -keep 选项的注释。该注释只是一个温和的提醒,配置文件可能包含拼写错误,因为指定的类似乎不存在。不影响处理。
【讨论】:
啊,在某种程度上是有道理的。那我将使用 -dontnote 选项。感谢您的详细说明!非常感谢。 供参考(SDK工具21):不要运行'android update project -p'。 之后编辑 proguard-project.txt 和 之前在 project.properties 中启用 proguard。它将删除所有更改。启用 proguard 后,更改将被保留。 嗨,我正在尝试使用构建脚本和 ProGuard 构建我的项目。我也面临同样的问题。无法理解如何解决此问题。所以你能帮我举个例子吗?以上是关于混淆 Android 项目时的未知类 ILicensingService 注释的主要内容,如果未能解决你的问题,请参考以下文章