Android Studio和Gradle同步中缺少的模块失败

时间:2015-02-17 02:14:22

标签: android-studio gradle

我在Android Studio 1.1 RC 1中设置了一个全新的项目:

  • 创建了一个Android项目[app](因为无法立即创建App Engine后端项目)。
  • 首先创建一个新的App Engine模块,然后手动导入文件[backend],添加现有的后端模块。
  • 删除了Android应用模块[app]。
  • 添加了一个Java库模块,相同的步骤,首先创建一个新模块,然后导入文件[common]。

一切都很好,但Android Studio有两个问题:

  1. 当我查看项目结构时,左侧窗格中缺少[common]模块,但它仍然在右侧窗格中显示为引用的模块!?
  2. Project Structure

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

      Gradle说"任务''在根项目中找不到" (''似乎是空字符串)。从终端运行时,我在日志中收到警告和异常,但它似乎没有关联(与索引相关),所以我没有把它包含在这里。

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

      有什么想法吗?还有其他你想在这里看到的东西吗?

2 个答案:

答案 0 :(得分:0)

我的错误是我删除了[app]。看来如果你创建一个App Engine后端模块,你必须在同一个项目中保留一个“假的”前端模块,以保持Android Studio / gradle的快乐。

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

-

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

答案 1 :(得分:0)

如果您只想构建AE项目。您可以尝试本教程中的intellij idea jetbrains.com/idea/help/creating-google-app-engine-project.html