С android.enableR8.fullMode = истина и minifyEnabled true в сборках Отлаживать мы видим следующую ошибку времени выполнения (несколько устройств и эмулятор):
Fatal Exception: java.lang.IllegalArgumentException: Transition Slide@b15f5f5: dur(400) for fragment MyFragment is not a valid framework Transition or AndroidX Transition
В сборке Выпускать этого не происходит (с включенным полным режимом R8)
Если я отключу 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)
}
}
слайд_право.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
Это похоже на проблему, о которой следует сообщить на трекере R8 iussue. Вы можете использовать issuetracker.google.com/issues/new?component=326788. Если возможно, прикрепите репродукцию к сообщению об ошибке.