R8 FullMode调试抛出转换XXX不是有效的框架转换或AndroidX转换



使用android.enableR8.fullMode=trueminifyEnabled trueDebug构建上,我们看到以下运行时错误(多个设备和模拟器(:

致命异常:java.lang.IollegalArgumentException:转换Slide@b15f5f5:片段MyFragment的dur(400(不是有效的框架转换或AndroidX转换

版本构建上,它不会发生(R8 FullMode打开(

如果我关闭R8 FullMode,我们不会在调试构建上看到错误

import androidx.transition.TransitionInflater
abstract class MyBaseFragment : Fragment() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enterTransition = TransitionInflater.from(requireContext()).inflateTransition(R.transition.slide_right)
  }
}

slide_right.xml:

<slide xmlns:android="http://schemas.android.com/apk/res/android"
  android:duration="@android:integer/config_mediumAnimTime"
  android:slideEdge="right" />

proguard-rules.pro(片段(:

-keep class **.R
-keep class **.R$* {
   <fields>;
}
-keepclassmembers class **.R$* {
   public static <fields>;
}

有人知道为什么R8 FullMode会在调试构建中这样做吗?在这种情况下,是否需要添加任何额外的proguard规则?

这是R8中的一个错误。https://issuetracker.google.com/u/3/issues/241478253

解决此问题的方法是为添加proguard规则

- keep class androidx.transition.FragmentTransitionSupport

最新更新