支持Android V4 22.2.0 Proguard的配置Android、Proguard

2023-09-05 02:07:28 作者:吃芥末的猫-gentle.*

在对Android的摇篮更新依赖关系构建使用 com.android.support:support-v4:22.2.0 从本地Maven附加存储库(在SDK),Proguard的开始抛出这些问题。

After updating dependencies on Gradle Android build to use com.android.support:support-v4:22.2.0 from local Maven extras repository (within SDK), Proguard started throwing these problems.

Warning: android.support.v4.app.DialogFragment: can't find referenced class android.support.v4.app.DialogFragment$DialogStyle
Warning: android.support.v4.app.FragmentTransaction: can't find referenced class android.support.v4.app.FragmentTransaction$Transit
Warning: android.support.v4.view.ViewCompat: can't find referenced class android.support.v4.view.ViewCompat$ResolvedLayoutDirectionMode
Warning: android.support.v4.view.ViewCompat: can't find referenced class android.support.v4.view.ViewCompat$LayoutDirectionMode
Warning: android.support.v4.view.ViewCompat: can't find referenced class android.support.v4.view.ViewCompat$LayerType
Warning: android.support.v4.view.ViewCompat: can't find referenced class android.support.v4.view.ViewCompat$AccessibilityLiveRegion
Warning: android.support.v4.view.ViewCompat: can't find referenced class android.support.v4.view.ViewCompat$ImportantForAccessibility
Warning: android.support.v4.view.ViewCompat: can't find referenced class android.support.v4.view.ViewCompat$OverScroll
Warning: android.support.v4.widget.DrawerLayout: can't find referenced class android.support.v4.widget.DrawerLayout$EdgeGravity
Warning: android.support.v4.widget.DrawerLayout: can't find referenced class android.support.v4.widget.DrawerLayout$LockMode
Warning: android.support.v4.widget.DrawerLayout: can't find referenced class android.support.v4.widget.DrawerLayout$State
Warning: there were 11 unresolved references to classes or interfaces.
         You may need to add missing library jars or update their versions.
         If your code works fine without the missing classes, you can suppress
         the warnings with '-dontwarn' options.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)

简单地增加 -dontwarn android.support.v4。** 解决了这个问题,但我想一个更具体的/优雅的解决方案,比无视扶持所有问题.v4包

Simply adding -dontwarn android.support.v4.** solves the problem, but I'd like an more specific/elegant solution, than ignoring all problems on support.v4 package

有人能告诉什么规则,应加,使这些类/ @接口由Proguard的正确处理?

Can anybody tell what rules should be added, so these classes/@interfaces are correctly processed by Proguard?

推荐答案

唯一的解决办法就是你所提到的,即 -dontwarn android.support.v4。** 。这实际上是取自<路径到Android的SDK> /tool​​s/proguard/proguard-android.txt ,在那里说:

The only solution is what you have mentioned, i.e -dontwarn android.support.v4.**. This is actually taken from the <path-to-android-sdk>/tools/proguard/proguard-android.txt, where it says:

# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
-dontwarn android.support.**