2017-10-03 8 views
0

우리는 우리의 app을 만들기 위해 multidex를 사용하는 프로젝트를 진행하고 있습니다. 나는 우리의 빌드에서이 같은 많은 오류를보기 시작 :Mutidex and Kotlin

java.lang.NoClassDefFoundError가 : kotlin.reflect.jvm.internal.pcollections.MapEntry

시작에없는 수 kotlin.reflect 관련

많은 클래스 짓다. 그것은 API 19에서만 발생합니다.

누가이 문제의 원인인지 그리고이 문제를 해결하는 방법을 알고 있습니까?

미리 감사드립니다.

+0

오류가 발생한 코드를 표시 할 수 있습니까? –

+0

안녕하세요 폰디 사, 저는 좋아할 것입니다.하지만이 문제는 특정 코드가 아닌 전체 앱에 있습니다. 문제는 때로는 응용 프로그램에서 UI 테스트를 실행하려고 할 때 발생합니다. multidex_keep_file에 클래스를 추가하면 UI 테스트를 실행할 수 있지만 일부 pcollections 클래스와 함께 NoClassDefFoundError를 얻습니다./ –

+0

프로젝트에'kotlin-reflect' 종속성이 있습니까? –

답변

1

multidex_keep_file.txt 명시 적으로 주요 덱스

kotlin/reflect/MyClass.class 
에 추가해야 한 줄에 하나의 클래스 파일입니다 multiDexKeepFile API를

android { 
    buildTypes { 
     debug { 
      ... 
      multiDexEnabled true 
      multiDexKeepFile file('multidex_keep_file.txt') 
     } 
    } 
} 

사용해보십시오

multiDexKeepProguard을 사용하여 전체 패키지를 보관하십시오

-keep class kotlin.reflect.** { *; } 
0

당신이 multiDexEnabled true

그때 당신은 또한 extends MultiDexApplication

또는 MultiDex.install(this)attachBaseContext()의 메소드를 호출하는 사용자 지정 응용 프로그램 클래스를 제공해야 할 경우 https://developer.android.com/studio/build/multidex.html

에 지정된대로.

public class MyApplication extends SomeOtherApplication { 
    @Override 
    protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(this); 
    } 
} 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.myapp"> 
    <application 
      android:name="com.acme.MyApplication" > 
+0

도움을 주셔서 감사합니다.하지만이 작업은 이미 프로젝트에서 완료되었습니다. –