2017-10-03 1 views
0

私は私たちのアプリケーションを構築するためにmultidexを使うプロジェクトに取り組んでいます。私は、私たちのビルドにこのような多くのエラーを確認するために開始しました:MutidexとKotlin

java.lang.NoClassDefFoundErrorが:kotlin.reflect.jvm.internal.pcollections.MapEntry開始kotlin.reflectに関連

多くのクラスが中には見ら​​れないことビルド。 API 19以降でのみ発生します。

これを引き起こしている可能性があることを誰もが知っていますか、この問題を解決する方法はありますか?

ありがとうございます! https://developer.android.com/studio/build/multidex.html

で指定されているように

+0

パッケージ全体を維持するためにmultiDexKeepProguardを使用することができます、あなたは私たちにあなたがエラーを取得しているコードを表示することができますか? –

+0

こんにちはフォンデサ、私は大好きです...しかし、この問題はアプリケーション全体であり、特定のコードではありません。この問題は、アプリでUIテストを実行しようとしたときに発生することがあります。 multidex_keep_fileにクラスを追加するとUIテストを実行できますが、いくつかのpcollectionsクラスでNoClassDefFoundErrorを取得できます=/ –

+0

プロジェクトに 'kotlin-reflect'依存関係はありますか? –

答えて

1

multiDexKeepFile API multidex_keep_file.txtが明示的にメインDEX

kotlin/reflect/MyClass.class 
に追加する必要がある行ごとに単一のクラスを持つファイルである

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

を使用してみてください

また

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

あなたはmultiDexEnabled true

を行うならば、あなたもextends MultiDexApplication

またはattachBaseContext()方法でMultiDex.install(this)を呼び出すことをカスタムアプリケーションのクラスを提供する必要があります。

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

助けてくれてありがとうが、これはすでにプロジェクトで行われた –