首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在path上没有找到"com.jambod.user.model.ProcessModel“类: DexPathList错误只是在发布版apk中

在path上没有找到"com.jambod.user.model.ProcessModel“类: DexPathList错误只是在发布版apk中
EN

Stack Overflow用户
提问于 2019-10-16 07:23:08
回答 1查看 166关注 0票数 1

我编写了一个应用程序,我在it.For上使用了it.For和导航组件,减少了apk的大小,我启用了minifyEnabledshrinkResources。但是当我生成apk和open应用程序时,应用程序就崩溃了,我跟踪了logcat,错误是Caused by java.lang.ClassNotFoundException Didn't find class "com.jambod.user.model.ProcessModel" on path: DexPathList。这是ProcessModel的代码

代码语言:javascript
复制
    data class ProcessModel(
    var id: String,
    var state: String ,
    var originLat: Double,
    var originLon: Double,
    var originAddress: String,
    var city: String ,
    var client: User ,
    var broker: Broker,
    var handover: HandOver ,
    var startTime: Long ,
    var endTime: Long ,
    var clientScore: Int,
    var role:String,
    var isFirstFinishedProcess:Boolean

) : Serializable {
}

这是我的应用课程:

代码语言:javascript
复制
    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)
    }

}

这部分代码移动导航文件在logcat中有错误:

代码语言:javascript
复制
  <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>

根据文档,我创建一个multidex-config.txt文件并将其添加到build.gradle上,但问题不是solve.This是build.gradle文件:

代码语言:javascript
复制
 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'
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-16 10:26:41

因为您使用的是"minifyEnabled true"和proguard。"minifyEnabled true"将在一段时间内删除您在应用程序中使用的模型类。在Gradle脚本中添加下面的一行,-> proguard Rues.pro文件。下面的行将使类和它的成员保持到最后的APK。

代码语言:javascript
复制
-keepclasseswithmembernames  class  com.jambod.user.model.ProcessModel.** { *; }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58407879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档