如何在Android Studio中使用App Engine模块中的Android库模块?

时间:2014-12-18 22:09:50

标签: android android-studio

我正在Android Studio中构建一个Android应用程序,而我正在使用Google App Engine。一切都工作正常,但我想添加一些两个项目之间常见的枚举/类。我创建了一个Android库模块并添加了枚举,但是我在添加App Engine模块的引用时遇到了问题。这是我的应用引擎的gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.14'
        compile 'com.android.support:appcompat-v7:21.0.3'
    }
}

repositories {
    mavenCentral();
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7

dependencies {
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.14'
    compile 'com.google.appengine:appengine-endpoints:1.9.14'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.14'
    compile 'javax.servlet:servlet-api:2.5'
    compile 'com.google.code.gson:gson:2.3'
    compile project(':sharedlibrary')
}

appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
    endpoints {
        getClientLibsOnBuild = true
        getDiscoveryDocsOnBuild = true
    }
}

当我尝试构建时,我遇到了这个错误:

Error:Could not resolve all dependencies for configuration ':backend:compile'.
  

找不到com.android.support:appcompat-v7:21.0.3。     在以下位置搜索:         https://jcenter.bintray.com/com/android/support/appcompat-v7/21.0.3/appcompat-v7-21.0.3.pom         https://jcenter.bintray.com/com/android/support/appcompat-v7/21.0.3/appcompat-v7-21.0.3.jar         https://repo1.maven.org/maven2/com/android/support/appcompat-v7/21.0.3/appcompat-v7-21.0.3.pom         https://repo1.maven.org/maven2/com/android/support/appcompat-v7/21.0.3/appcompat-v7-21.0.3.jar     要求:         Translink公司:后端:不详         Translink:后端:未指定> Translink公司:sharedlibrary:未指定的

我尝试将appcompat添加为依赖项,但这并没有效果。

1 个答案:

答案 0 :(得分:2)

Gradle中的Java项目不依赖于Android项目。 Android项目具有明显更多的项目状态,特别是在源代码集中,Java插件无法处理。您收到此特定错误消息,因为Java插件无法找到Android模块的传递依赖项,因为这些特定的依赖项需要Android插件的帮助才能解决 - 插件是硬编码的在SDK中而不是通过repositories块中的存储库。

要做你想做的事,你需要将公共代码重构为Android和App Engine都依赖的普通Java模块。