2014-12-18 94 views
1

我正在Android Studio中构建一个Android应用程序,并且正在使用Google App Engine。一切正常,但我想添加一些在两个项目之间通用的枚举/类。我创建了一个Android库模块并添加了枚举,但我无法从App Engine模块添加参考。这里是我的应用程序引擎的gradle产出:如何在Android Studio中使用App Engine模块中的Android库模块?

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'. 

Could not find com.android.support:appcompat-v7:21.0.3. Searched in the following locations: 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 Required by: Translink:backend:unspecified Translink:backend:unspecified > Translink:sharedlibrary:unspecified

我尝试添加的程序兼容性作为一个依赖但这并没有工作。

回答

2

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

要做你想做的事,你需要将你的通用代码重构成一个普通的Java模块,Android和App Engine都依赖它。

+0

很好的解释,谢谢Scott – dmgdotnet 2014-12-18 22:27:15