1

使用具有 S Pen SDK 多窗口 jar (2.2.5) 的 proguard 构建 Android 项目时,我收到以下两个警告:

[proguard] Warning: android.sec.multiwindow.Constants$WindowManagerPolicy: can't find referenced class android.view.WindowManagerPolicy
[proguard] Warning: android.sec.multiwindow.MultiWindowManager: can't find referenced method 'java.util.List getRunningTasks(int,int,android.app.IThumbnailReceiver)' in class android.app.ActivityManager

通过将以下行添加到我的 proguard 配置文件中,我能够让 proguard 成功运行:

-dontwarn android.sec.multiwindow.**

但是,我对忽略警告有点不舒服。在这种情况下,警告引用了 中的类和方法android.jar,因此它们将在运行时出现。

我想知道是否还包括proguard规则会很好:

-keep class android.sec.multiwindow.** { *; }

在这种情况下,它似乎不会影响构建,但这似乎是个好主意。

有什么想法吗?

4

1 回答 1

2

由于@hide 标记,类和方法可能存在于 Android 运行时中,但它们不存在于 android.jar 中(因此它们不被认可为公共 API)。如果它与 -dontwarn 一起使用,那是可以接受的。更简洁的解决方案是创建一个包含此类、字段和方法的 android.jar 版本。

-keep 选项并不真正影响问题。你可以把它排除在外。

于 2013-02-04T01:02:47.190 回答