Поворот мульти-dexing, используйте d8- dexing и, возможно, усадку кода больше не требуется мультидексинг. Кроме того, кажется, что указанное выше разрешение не очень хорошо работает со связыванием, поэтому установите для параметров связывания значение "Нет".
Проблемы в Ма c CI
После того, как я исправил все вышеперечисленное, у меня возникла еще одна проблема при попытке скомпилировать наше приложение на Ma c CI, которое сообщало мне Mono. Android .dll не могло быть AOT -compiled. Это, по-видимому, проблема с файлом, слишком большим для LLVM на Ma c, хотя, как описано здесь , для решения которого нужно просто отключить LLVM.
Лучший способ исправить это
Сегодня я указал на другой набор потенциальных исправлений, выделенных здесь . На этой странице на самом деле упоминаются три исправления, из которых опция B является предпочтительной, поскольку она соответствует «рекомендациям восходящего потока библиотеки Google Guava » (цитируется с этот поток ).
Для меня вариант А - возврат к dx-dexing - не совсем сработал, так как, хотя я смог удалить предупреждение, относящееся к java .lang.ClassValue, Я получил кучу других предупреждений назад. Вариант B, использующий правила ProGuard, используемые в сочетании с R8, был лучшим выбором в этом отношении, поскольку это позволило мне также избавиться от всех других предупреждений. На самом деле, однако, это устранило разницу между опциями B & C, так как их результат стал таким же. Тем не менее, просто следуя рекомендациям в этом документе, мое приложение начало падать при запуске. Чтобы решить эту проблему, я должен был проверить на наличие ошибок в Logcat, который показал мне, что необходимый класс связывался. Добавление еще одного правила для явного сохранения этого класса, а затем окончательно решило оставшуюся проблему, предоставив мне следующую конфигурацию ProGuard:
-dontwarn java.lang.ClassValue
-dontwarn kotlin.jvm.internal.Lambda
-dontwarn kotlin.jvm.functions.Function1
-dontwarn kotlin.jvm.internal.markers.KMappedMarker
-dontwarn kotlin.jvm.functions.Function0
-dontwarn kotlin.coroutines.jvm.internal.SuspendLambda
-dontwarn kotlin.jvm.functions.Function2
-keep class com.google.android.material.internal.BaselineLayout
С этой конфигурацией я теперь снова могу использовать как AOT, так и LLVM.