使用android.enableR8.fullMode=true和minifyEnabled 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