Android 在发布版apk中的路径:DexPathList错误中未找到类“com.jambod.user.model.ProcessModel”

Android 在发布版apk中的路径:DexPathList错误中未找到类“com.jambod.user.model.ProcessModel”,android,kotlin,release,android-multidex,Android,Kotlin,Release,Android Multidex,我编写了一个应用程序,在上面使用了dagger android和导航组件。为了减小apk的大小,我启用了minifyEnabled和shrinkResources。但是当我生成apk并打开应用程序时,应用程序崩溃了。我跟踪了logcat,错误是由java.lang.ClassNotFoundException引起的 在路径:DexPathList上未找到com.jambod.user.model.ProcessModel类。这是ProcessModel的代码: 这是我的应用课程: cla

我编写了一个应用程序,在上面使用了dagger android和导航组件。为了减小apk的大小,我启用了minifyEnabled和shrinkResources。但是当我生成apk并打开应用程序时,应用程序崩溃了。我跟踪了logcat,错误是由java.lang.ClassNotFoundException引起的 在路径:DexPathList上未找到com.jambod.user.model.ProcessModel类。这是ProcessModel的代码:

这是我的应用课程:

    class MyApplication : DaggerApplication() {

    val TAG="MyApplication"
    @Inject
    lateinit var mapboxMap: CedarMaps

    override fun applicationInjector(): AndroidInjector<out DaggerApplication> {

        Log.e(TAG,"applicationInjector")
        return DaggerAppComponent.builder().application(this).build()

    }

    override fun onCreate() {
        super.onCreate()
        Log.e(TAG,"onCreate")
        setMapview()
    }

    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        Log.e(TAG,"attachBaseContext")
        MultiDex.install(this)
    }

    private fun setMapview() {
        mapboxMap.setClientID("jambod-3804728105994932624")
                .setClientSecret("b37qDGphbWJvZLqxi8hCuQhrjCXtqKs9V536SyiAAHQP01FzTg3G0iat")
                .setContext(this)
    }

}
当您使用minifyEnabled true和proguard时。minifyEnabled true将在某个时间删除应用程序中使用的模型类。在Gradle scripts->proguard-rules.pro文件中添加以下行。下一行将使该类及其成员保留到您的最终APK

-keepclasseswithmembernames  class  com.jambod.user.model.ProcessModel.** { *; }
  <fragment android:id="@+id/detailProcessFragment" android:name="com.jambod.user.ui.DetailProcessFragment"
          android:label="fragment_detail_process" tools:layout="@layout/fragment_detail_process">
    <argument android:name="KEY_PROCESS"
        app:argType="com.jambod.user.model.ProcessModel"
        app:nullable="true"
        android:defaultValue="@null"/>
</fragment>
 defaultConfig {
    applicationId "com.jambod.user"
    minSdkVersion 16
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
buildTypes {
    release {
        multiDexKeepFile file('multidex-config.txt')
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
-keepclasseswithmembernames  class  com.jambod.user.model.ProcessModel.** { *; }