Android Studio 中缺少模块并且 Gradle 同步失败

Module missing in Android Studio and Gradle sync fails

我已经在 Android Studio 1.1 RC 1 中建立了一个全新的项目:

编译一切正常,但 Android Studio 有两个问题:

  1. 当我查看 Project Structure 时,左窗格中缺少 [common] 模块,但它仍作为引用模块出现在右窗格中!?

  1. 我的项目树看起来很好,所有模块都被识别,但是 gradle 告诉我同步失败。

Gradle 表示 "Task '' not found in root project"('' 看起来是空字符串)。当 运行 来自终端时,我在日志中收到一个警告和一个异常,但它似乎不相关(与索引相关),所以我没有在这里包含它。

settings.gradle 指定了两个模块:

include ':backend', ':common'

我试图将主项目的 .iml 文件与包含两个模块的假文件交换,结果(除了多个副作用)两个模块都在那里。 (因为副作用,我恢复了原来的状态。)

这是我的 gradle 个文件:

根模块:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.1'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

[后端]

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.17'
    }
}

repositories {
    jcenter();
}

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.17'
    compile 'com.google.appengine:appengine-endpoints:1.9.17'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.17'
    compile 'javax.servlet:servlet-api:2.5'
    compile 'com.googlecode.objectify:objectify:5.1.3'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'io.jsonwebtoken:jjwt:0.4'
    compile project(':common')
}

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

[普通]

apply plugin: 'java'

task sourcesJar(type: Jar, dependsOn:classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}
artifacts {
    archives sourcesJar
}

dependencies {
    compile 'com.google.http-client:google-http-client-android:1.18.0-rc'
    compile 'com.google.code.gson:gson:2.3.1'
}

apply plugin: 'maven'

group = 'cc.closeup'
version = 'v2-2.0-SNAPSHOT'

install {
    repositories.mavenInstaller {
        pom.artifactId = 'common'
        pom.packaging = 'jar'
    }
}

有什么想法吗?您还想在这里看到什么?

我的错误是我删除了 [app]。似乎如果您创建一个 App Engine 后端模块,您必须在同一个项目中保留一个 "fake" 前端模块以保持 Android Studio/gradle 快乐。

在早期的 Android Studio 版本中,可以毫无问题地删除前端模块,但似乎 Google 已经以某种方式锁定了它。当我保留假的前端模块时它仍然有效。

--

为什么我这样配置?在我的配置中,我在不同的项目中有后端和前端模块,我让后端项目将库安装到本地 Maven 中,然后我在我的前端项目中获取这些库(对于一个团队,你会选择本地 Maven 服务器)。这种配置有很多好处,比如我可以同时在两个屏幕上测试 backend/frontend 而无需一直来回切换。一些公司可能还希望此配置保持其后端代码独立和安全。

如果你只想建立一个AE项目。您可以尝试本教程以获取 intellij idea jetbrains.com/idea/help/creating-google-app-engine-project.html