0

にmultidexを追加した後にこれは、この質問の続きです私のマニフェストでは、Androidの仕様を宣言していません。ここで私のマニフェストである:com.android.dex.DexIndexOverflowException:計装ラン私のアプリケーション

に起因:メソッドIDない[0、0xFFFFの]:65536

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.moduleName.sampleName" 
> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"> 
</uses-permission> 

</manifest> 

私は例外を持ちました

だから、ここに私のbuild.gradleファイルが今のように見えるものです:アーカンソー

apply plugin: 'com.android.library' 
apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-kapt' 

android { 
compileSdkVersion 26 
buildToolsVersion "26.0.2" 


packagingOptions { 
    exclude 'protobuf.meta' 
} 

testOptions { 
    unitTests { 
     includeAndroidResources = true 
    } 

} 
sourceSets { 
    test.java.srcDirs += ['build/generated/source/apt/test/debug'] 
} 

defaultConfig { 
    multiDexEnabled true 
    minSdkVersion 15 
    targetSdkVersion 26 
    versionCode 1 
    versionName "1.0" 

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
} 

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

} 

ext.daggerVersion = '2.11' 
ext.roomVersion = '1.0.0-rc1' 

dependencies { 
implementation fileTree(dir: 'libs', include: ['*.jar']) 

implementation 'com.android.support:appcompat-v7:26.1.0' 
testImplementation 'junit:junit:4.12' 
androidTestImplementation 'com.android.support.test:runner:1.0.1' 
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
testImplementation "org.robolectric:robolectric:3.4.2" 
kaptTest "com.google.dagger:dagger-compiler:$daggerVersion" 
kaptAndroidTest "com.google.dagger:dagger-compiler:$daggerVersion" 


// RxJava 
implementation 'io.reactivex.rxjava2:rxjava:2.1.0' 
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' 

// Room 
implementation "android.arch.persistence.room:runtime:$roomVersion" 
implementation "android.arch.persistence.room:rxjava2:$roomVersion" 
kapt "android.arch.persistence.room:compiler:$roomVersion" 
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.1.51" 
androidTestImplementation "android.arch.persistence.room:testing:$roomVersion" 

// Dagger 
implementation "com.google.dagger:dagger:$daggerVersion" 
implementation "com.google.dagger:dagger-android:$daggerVersion" 
implementation "com.google.dagger:dagger-android-support:$daggerVersion" 
kapt "com.google.dagger:dagger-compiler:$daggerVersion" 
kapt "com.google.dagger:dagger-android-processor:$daggerVersion" 

implementation 'pl.charmas.android:android-reactive-location2:[email protected]' 
implementation 'com.google.android.gms:play-services-location:11.4.2' 
implementation 'com.google.android.gms:play-services-places:11.4.2' 

//Jackson 
implementation 'com.fasterxml.jackson.core:jackson-core:2.9.1' 
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.9.0' 
implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.1' 

implementation 'com.android.support:multidex:1.0.2' 

} 

私のテストeのパッケージ 'test'が正常に動作しています。 「java.lang.NoClassDefFoundErrorの」 空のテストのため失敗しました計装ラン:

は、テストを実行 テストが失敗した実行開始:私は私のandroidTestクラスのパッケージにいくつかのテストを実行しようとすると

は、しかし、私はこれを取得しますスイート。

まとめると:この問題の

初めは、上記のリンクである - 私は、ジャクソンライブラリを追加した後の方法を大量に持っていたので、私はDEXサポートが追加され、これはこれに私を得ました私は実際にどのように解決するか分からず、いくつかの依存関係を除外し、本当に重要なものだけを残して、プロジェクトをきれいにしようとしている、ビルドパッケージを削除しています。彼らのどれも働かなかった。それは私がこのモジュールでKotlinを使用していますが重要である場合

答えて

0

あなたはAndroidManifestでMultiDexApplicationを追加する必要があり:あなたはApplicationクラスを上書きした場合は

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.myapp"> 
<application 
    android:name="android.support.multidex.MultiDexApplication" > 
    ... 
</application> 

は、MultiDexApplicationを拡張するためにそれを変更します(次のように)可能な場合:

public class MyApplication extends MultiDexApplication { ... } 

Check this Google official blog here for MultiDex support