将我的aar库导入项目时,清单合并失败

时间:2018-08-31 14:41:41

标签: java android android-studio

我是开发android库的新手。最近需要将我的应用程序的某些部分集成到其他客户端应用程序。为此,我已经通过sonatype将aar格式的库上传到了Maven仓库。

但是当我将此库集成到其他应用程序时出现了问题。我遇到了类似-的错误:

错误:将字节码转换为dex时出错: 原因:com.android.dex.DexException:多个dex文件定义了Lcom / android / volley / Response $ ErrorListener;

还有更多类似的东西。

到目前为止,我认为这个问题来自应用程序和库中定义的多个依赖项。

我的库中有什么我做错的事情,以及如何从应用程序中删除重复的库。

我尝试了许多选项,例如“ multidex enable true和preDexLibraries = false”选项,但该属性均无效。

感谢您的帮助。

我的图书馆应用等级是-:

apply plugin: 'com.android.library'
apply from: 'maven-push.gradle'



android {
    compileSdkVersion 26

    useLibrary 'org.apache.http.legacy'

    lintOptions {
        abortOnError false
    }
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        consumerProguardFiles 'proguard-rules.pro'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            useProguard true
            //consumerProguardFiles 'proguard-rules.pro'
            buildConfigField "String", "BASEURL", PROD_SERVICE_URL
            buildConfigField "String", "MERCHANT_ID", MERCHANT_ID
            buildConfigField "String", "ACCESS_CODE", ACCESS_CODE

        }
        debug {
            buildConfigField "String", "BASEURL", STAGING_SERVICE_URL
        }
    }

}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //noinspection GradleCompatible
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:design:26.1.0'
    testImplementation 'junit:junit:4.12'
    implementation 'com.jpardogo.googleprogressbar:library:1.2.0'
    implementation 'com.karumi:dexter:4.2.0'
    implementation 'com.squareup.okhttp:okhttp:2.4.0'
    implementation 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
    implementation 'com.squareup.okhttp:okhttp:2.5.0'
    implementation 'com.squareup.okhttp3:okhttp:3.7.0'
    implementation 'org.jsoup:jsoup:1.7.3'


    implementation 'com.mcxiaoke.volley:library:1.0.17'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.jakewharton:disklrucache:2.0.2'
    //implementation 'com.google.android.gms:play-services-base:15.0.1'
    //compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:multidex:1.0.1'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}
task deleteJar(type: Delete) {
    delete 'libs/jars/logmanagementlib.jar'
}

task createJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('libs/jars/')
    include('classes.jar')
    rename('classes.jar', 'logmanagementlib.jar')
}


createJar.dependsOn(deleteJar, build)

谢谢

1 个答案:

答案 0 :(得分:2)

在您的图书馆AndroidManifest.xml中,从Application标记中删除所有内容:

<application/>

当您在应用程序中导入库时,您在库中导入的所有dependencies都将导入到应用程序中,因此请删除应用程序gradle文件中之前在库中导入的所有库

如果合并AndroidManifest.xml时遇到问题,您可以在左下角的Merged Manifest标签中看到错误

enter image description here