Transitive dependencies for local aar library

99封情书 提交于 2019-11-26 04:19:43

问题


We\'re making some library, basicly for our API, that we would make life easier for our external developers.

So we created new library project and put Retrofit and some other libraries as dependencies.

dependencies {
    compile \'com.android.support:appcompat-v7:23.3.0\'
    compile \'com.google.code.gson:gson:2.6.2\'
    compile \'com.squareup.retrofit2:retrofit:2.0.1\'
    compile \'com.squareup.retrofit2:converter-gson:2.0.1\'
    compile \'com.squareup.okhttp3:okhttp:3.2.0\'
}

Now when we build it, it produces aar file.

But now when we put the aar file to libs directory and set it as dependency, we still have to put the same dependency in user\'s build.gradle file, which sucks. It should be taken from the library, right?

repositories {
    flatDir {
        dirs \'libs\'
    }
}

dependencies {
    compile(name: \'ourlibrary\', ext: \'aar\') {
        transitive = true;
    }
}

How to make transitive = true work?


回答1:


The aar file doesn't contain the nested (or transitive) dependencies and doesn't have a pom file which describes the dependencies used by the library.

It means that, if you are importing a aar file using a flatDir repo you have to specify the dependencies also in your project.

In your case adding transitive=true doesn't resolve your issue for the reason described above.

You should use a maven repository (you have to publish the library in a private or public maven repo), you will not have the same issue.
In this case, gradle downloads the dependencies using the pom file which will contains the dependencies list.



来源:https://stackoverflow.com/questions/36916991/transitive-dependencies-for-local-aar-library

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!