Sai*_*ani 1 android gradle android-library android-studio android-gradle-plugin
假设我有一个库模块,其中包含一些第三方库,例如 OkHttp。当我在我的应用程序中包含这个库时,我无法使用这些第三方库。我阅读了以下文章第 1 条、
第 2 条
并尝试了
1. compile project(':library-name')
{将库的 .aar 文件作为模块导入到 myproject 中之后}
2. 我将 .aar 文件包含在 libs 文件夹中并添加了以下依赖项
build.gradle(项目级别)
allprojects {
repositories {
flatDir {
dirs 'libs'
}
}
}
Run Code Online (Sandbox Code Playgroud)
build.gradle(应用程序级别)
compile fileTree(dir: 'libs', include: ['*.jar'])
compile ('com.myapp.package:library-name:1.0.0@aar'){
transitive=true
}
Run Code Online (Sandbox Code Playgroud)
3. 与2类似,但在
build.gradle中(应用程序级别)
compile fileTree(dir: 'libs', include: ['*.jar'])
compile (name:'library-name', ext:'aar'){
transitive=true
}
Run Code Online (Sandbox Code Playgroud)
但是,我仍然无法使用我的库中存在的传递库。我收到以下异常。
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/okhttp/MediaType;
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗
编辑:
以下是我的库的 build.gradle
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'org.apache.httpcomponents:httpcore:4.4.4'
compile 'org.apache.httpcomponents:httpclient:4.5.1'
compile 'com.squareup.okhttp:okhttp:2.6.0'
compile 'petrov.kristiyan.colorpicker:colorpicker-library:1.0.3'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'org.hamcrest:hamcrest-library:1.1'
compile files('notificationlog-0.1.0.jar')
Run Code Online (Sandbox Code Playgroud)
我能够notificationlog在我的应用程序中使用它,它是我的库中的依赖项,但我无法使用okhttp和colorpicker
aar文件不包含嵌套(或传递)依赖项,并且没有描述库使用的依赖项的 pom 文件。
这意味着,如果您使用flatDir存储库导入 aar 文件,则还必须在项目中指定依赖项。
这没有意义:
compile (name:'library-name', ext:'aar'){
transitive=true
}
Run Code Online (Sandbox Code Playgroud)
因为 aar 没有描述依赖项的 pom 文件,所以 gradle 无法添加任何依赖项,因为它无法知道它们。
| 归档时间: |
|
| 查看次数: |
2131 次 |
| 最近记录: |