Обновление библиотеки androidx.navigation до версии 2.2.2 Проблемы со сборкой релиза - PullRequest
1 голос
/ 22 апреля 2020

У меня проблема с последними обновлениями androidx.navigation

Я заметил, что после fre sh update (2.2.2) аварийно завершился, если build RELEASE с ошибкой типа

Caused by: android.view.InflateException: Binary XML file line #12 in 
com.somedomain.android:layout/activity_main: Binary XML file line #12 in 
com.somedomain.android:layout/activity_main: Error inflating class 
androidx.fragment.app.FragmentContainerView


Caused by: android.view.InflateException: Binary XML file line #12 in 
com.somedomain.android:layout/activity_main: Error inflating class 
androidx.fragment.app.FragmentContainerView

androidx.fragment.app.Fragment$e: Unable to instantiate fragment 
androidx.navigation.fragment.NavHostFragment: make sure class name exists

Я использую:

ext.versions = [
   ...
   nav_version        : '2.2.2',
]

ext.libs = [
   ...
   nav_fragment       : "androidx.navigation:navigation-fragment-ktx:$versions.nav_version",
   nav_ui             : "androidx.navigation:navigation-ui-ktx:$versions.nav_version",
]

В приложении gradle

 ...
    buildTypes {
        debug {
            manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
            ext.enableCrashlytics = false
            signingConfig signingConfigs.debug
            debuggable = true
        }

        release {
            manifestPlaceholders = [crashlyticsCollectionEnabled: "true"]
            ext.enableCrashlytics = true
            minifyEnabled true
            shrinkResources true
            debuggable = false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
    ...
implementation libs.nav_fragment
implementation libs.nav_ui

Хост навигации в деятельности_основной. xml

<?xml version="1.0" encoding="utf-8"?>
   <layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.fragment.app.FragmentContainerView
            android:id="@+id/main_nav_host"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/main_navigation" />

    </FrameLayout>

</layout>

Язык: Kotlin

Кто-нибудь сталкивался с такой проблемой?

Примечание: С версией 2.2.1 все было в порядке. Отладочная версия сборки в порядке

Мне кажется, проблема связана с этим изменением. в соответствии с официальными Android компонентами nav примечаниями к выпуску

Правила ProGuard navigation-common-ktx теперь корректно сохраняют только используемые классы NavArgs, а не все экземпляры NavArgs. Ранее это было выпущено в Navigation 2.3.0-alpha03. (Б / 150213558

1 Ответ

1 голос
/ 22 апреля 2020

Черт. Я нашел.

Необходимо добавить -keep class androidx.navigation.fragment.NavHostFragment

в файл proguard-rules.pro .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...