将 SafeArgs 与 Proguard 和导航架构组件一起使用时出现 ClassNotFoundException?
ClassNotFoundException when using SafeArgs with Proguard and Navigation Architecture Component?
我正在使用 SafeArgs
插件和 Navigation Architecture Component
但应用程序崩溃了。
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.package.domain.models.Model"
我在 Gradle 中使用 minifyEnabled true
。
此外,我有三个模块 app
、data
和 domain
。因此,在我添加的所有三个 proguard-rules
文件中
-keepnames class com.package.domain.models.Model1
-keepnames class com.package.domain.types.ImageType
-keepnames class com.package.domain.models.Model
我在我的导航图中使用这三个 类 作为 argType
。
但是应用程序仍然崩溃。任何帮助将不胜感激。
尝试将 @Keep
注释放在 class 的顶部。喜欢
import androidx.annotation.Keep
@Keep
data class RepoData(val id: Long, val name: String)
你可以像
一样保留整个模型包(实际这样做通常没问题)
-keep class com.package.domain.models.** { *; }
只要您希望 class 保留在内存中,请始终使用 @keep
注释。
@保留
数据 class MyData(val id: long,val name: String)
我认为更合适的做法是将其添加到我的 proguard-rules
文件中。
-keepnames class * extends android.os.Parcelable
-keepnames class * extends java.io.Serializable
因为我不必一直用 @Keep
注释我的模型,它们是 Parcelable
或 Serializable
或使整个模型包远离混淆。
查看 了解更多信息。
我正在使用 SafeArgs
插件和 Navigation Architecture Component
但应用程序崩溃了。
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.package.domain.models.Model"
我在 Gradle 中使用 minifyEnabled true
。
此外,我有三个模块 app
、data
和 domain
。因此,在我添加的所有三个 proguard-rules
文件中
-keepnames class com.package.domain.models.Model1
-keepnames class com.package.domain.types.ImageType
-keepnames class com.package.domain.models.Model
我在我的导航图中使用这三个 类 作为 argType
。
但是应用程序仍然崩溃。任何帮助将不胜感激。
尝试将 @Keep
注释放在 class 的顶部。喜欢
import androidx.annotation.Keep
@Keep
data class RepoData(val id: Long, val name: String)
你可以像
一样保留整个模型包(实际这样做通常没问题)-keep class com.package.domain.models.** { *; }
只要您希望 class 保留在内存中,请始终使用 @keep
注释。
@保留 数据 class MyData(val id: long,val name: String)
我认为更合适的做法是将其添加到我的 proguard-rules
文件中。
-keepnames class * extends android.os.Parcelable
-keepnames class * extends java.io.Serializable
因为我不必一直用 @Keep
注释我的模型,它们是 Parcelable
或 Serializable
或使整个模型包远离混淆。
查看