androidx.navigation库更新至2.2.2版本发布构建问题



我对androidx.navigation上次更新有问题

我注意到,在新的更新(2.2.2(后,如果构建是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",
]

应用内渐变

...
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

activity_main.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版本,一切都还可以。调试版本构建也可以

我认为这个问题与这个变化有关。根据官方的安卓导航组件发布说明

导航通用ktx ProGuard规则现在正确地只保留所使用的NavArgs类,而不是所有NavArgs实例。这之前在Navigation 2.3.0-alpha03中发布。(b/15021358

该死。我找到了。

需要添加-keep class androidx.navigation.fragment.NavHostFragment

proguard-rules.pro文件中。

最新更新