AAR Transitive Dependency Google定位服务

时间:2016-01-20 14:44:48

标签: java android android-studio gradle transitive-dependency

我实施了一个名为" proximity"在Android Studio中生成一个" .aar"。我已将此作为模块添加到新测试项目中,如下所述:https://stackoverflow.com/a/24894387/2791503 此外,我将模块作为与传递标志的依赖关系包括在内,因为它已在此处提出:https://stackoverflow.com/a/25730092/2791503 这可以为新的TestProject grader文件:

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   testCompile 'junit:junit:4.12'
   compile 'com.android.support:appcompat-v7:23.1.1'
   compile(project(':proximity')) {
    transitive=true
}

当我启动应用程序时,它告诉我它无法找到一个Google Location API类,这是我的库模块的依赖项。

  

java.lang.NoClassDefFoundError:解析失败:Lcom / google / android / gms / common / api / GoogleApiClient $ Builder;

如何强制gradle包含我的库模块的传递依赖?

编辑: 这是原始库项目的gradle构建文件:

dependencies {
   //integration tests
   androidTestCompile 'com.android.support.test:runner:0.4.1'
   // Set this dependency to use JUnit 4 rules
   androidTestCompile 'com.android.support.test:rules:0.4.1'
   // Set this dependency to build and run Espresso tests
   androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
   // Set this dependency to build and run UI Automator tests
   androidTestCompile 'com.android.support.test.uiautomator:uiautomator-  v18:2.1.2'
   androidTestCompile 'com.android.support:support-annotations:23.1.1'

   //local unit testing
   testCompile 'junit:junit:4.1'

   compile fileTree(include: ['*.jar'], dir: 'libs')
   compile 'com.android.support:appcompat-v7:23.1.1'
   //estimote sdk
   compile 'com.estimote:sdk:0.9.4@aar'
   //google location api(GPS)
   compile 'com.google.android.gms:play-services-location:8.4.0'
   //Google Guave Java Util
   compile 'com.google.guava:guava:18.0'
   //custom BeSpoon library for android
   compile project(':bespoonlibrary')
}

这是gradle构建文件在将库导入为引用aar的模块之后的样子:

configurations.create("default")
artifacts.add("default", file('app-release.aar'))

1 个答案:

答案 0 :(得分:0)

所以我找到了一个适合我的解决方案,但我仍然不是我所希望的......所以如果有人有更好的解决方案,请告诉我。 无论如何,这可能会帮助某人: 我有两个库,一个外部库,库项目本身和一个内部libaray,它是外部库的依赖项。此外,每个库都有自己的依赖项,例如内部库引用google-location-service。

我尝试$(document).on("hover",".toolTip", function() { var toolTip = $(this); var toolTipMessage var hoveringNow = toolTip.attr("data-hovering-now"); if(typeof hoveringNow !== typeof undefined && hoveringNow !== false) { toolTip.removeAttr('data-hovering-now'); clearTimeout(toolTipMessage); console.log('Timeout cleared'); } else { toolTip.attr('data-hovering-now', true); toolTipMessage = setTimeout(showToolTip, 3000, toolTip.attr("data-tooltip")); console.log('Timeout set'); } }); function showToolTip(message) { console.log(message); } 生成外部库的* .aar文件。但是aar中的所有内容都是外部库,但没有内部库和所有其他依赖项。这个讨论说到目前为止还没有办法解决这个问题: How to export AAR including its dependencies?

没有任何依赖,没有任何意义使用这个aar所以我必须找到另一种方式。在包含外部库的Android TestProject中,单击gradlew assemble,所有依赖项都在那里,包括内部库。