【问题标题】:Issue with ObjectAnimator in release APK发布 APK 中的 ObjectAnimator 问题
【发布时间】:2022-05-22 00:18:42
【问题描述】:

我已经在我的应用程序中使用对象动画器制作了某种动画,并且它在调试变体中运行良好。但是在生产中,我为此启用了 proguard,但它没有按预期工作。我搜索了很多以将此文件保存在proguard中,但没有运气。请帮帮我。

我尝试了以下方法

 -keep class ma.smartshift.loadtaker.loginv2.** { *; }

-keepclassmembers public class android.animation.ObjectAnimator {
   void set*(***);
   *** get*();
}

【问题讨论】:

  • 尝试添加 -keep class android.animation.ObjectAnimator {;}
  • 对不起,也试试 -keep class android.animation.ObjectAnimator { *; }
  • 不,它不工作@ND1010_
  • 你想要什么,你必须应用prooguard规则好吗?
  • 查看我的答案:Link

标签: android animation proguard objectanimator


【解决方案1】:

我知道这是一个相当古老的问题,但当我偶然发现它时,我认为其他人也可能。

所以使用 Proguard 是正确的方法,但是你排除了错误的类。

您需要排除 ObjectAnimator 的目标类中的函数,而不是 ObjectAnimator 本身。

示例

假设您有一个对象动画师为BottomSheetBehavior 的窥视高度设置动画:

ObjectAnimator.ofInt(
    bottomSheetBehavior,
    "peekHeight",
    resources.getDimension(R.dimen.miniplayer_peek_height).toInt(),
    resources.getDimension(R.dimen.miniplayer_peek_height_anim_max).toInt()
)

那么您需要将以下内容添加到您的 proguard 规则中:

-keep class com.google.android.material.bottomsheet.BottomSheetBehavior {
    setPeekHeight(int);
}

【讨论】:

    最近更新 更多