我在androidx.navigation最近更新时遇到问题
我已经注意到,如果构建为RELEASE,则在全新更新后[[(2.2.2)崩溃了错误,例如
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
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版时,一切正常。调试版本建立就可以了
我认为与此更改有关的问题。根据官方的Android导航组件release notes
Navigation-common-ktx ProGuard规则现在只能正确保留使用的NavArgs类,而不是所有NavArgs实例。它先前在Navigation 2.3.0-alpha03中发布。 (b / 150213558
-keep class androidx.navigation.fragment.NavHostFragment
在
proguard-rules.pro文件中。