2014-07-09 2 views
0

Итак, я впервые пытаюсь создать многомодульный проект в IntelliJ IDEA с использованием Gradle. Я потратил час, читая документы и различные учебники и SO-вопросы, не имея возможности решить этот простой случай. Моя структура:Почему Gradle не подхватывает мою зависимость от модуля Android?

-Project 
    |-vg 
    |-vgcommon 

vgcommon является Gradle модуль Android, в то время как vg это приложение Android Gradle (технически и модуль).

  • vg зависит от vgcommon
  • vgcommon строит
  • vg не делает, так как все классы от vgcommon "не нашли".

Вот мои файлы gradle.build и setup.gradle. Может ли кто-нибудь увидеть, что я делаю неправильно?

settings.gradle (корневой уровень)

include ':vgcommon', ':VG' 

vgcommon \ build.gradle

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.10+' 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1+' 
    } 
} 
apply plugin: 'android' 
apply plugin: 'crashlytics' 

repositories { 
    mavenCentral() 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
    productFlavors { 
     defaultFlavor { 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:19.+' 
    compile 'com.koushikdutta.ion:ion:1.2.4' 
    compile 'com.crashlytics.android:crashlytics:1+' 
} 

В.Г. \ build.gradle

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.10+' 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1+' 
    } 
} 
apply plugin: 'android' 
apply plugin: 'crashlytics' 

repositories { 
    mavenCentral() 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion '19.1.0' 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 19 
    } 

    buildTypes { 
     release { 
      runProguard false 
      signingConfig signingConfigs.release 
      debuggable false 
     } 
    } 
    productFlavors { 
     defaultFlavor { 
     } 
    } 
    applicationVariants.all { variant -> 
     variant.outputFile = file("../build/publish/app.apk") 
    } 
} 

configurations { 
    unitTestCompile.extendsFrom compile 
    unitTestRuntime.extendsFrom unitTestCompile 
} 

dependencies { 
    compile project(':vgcommon') 
    compile 'com.android.support:appcompat-v7:19.0.1' 
    compile files('libs/gcm.jar') 
    compile files('libs/spring-appsensor-android-1.7.1.jar') 
    compile files('libs/spring-util-android.jar') 
    compile 'com.crashlytics.android:crashlytics:1.+' 
    compile 'com.squareup:otto:1.3.4' 
    compile 'com.google.code.gson:gson:2.2.4' 
    compile 'com.koushikdutta.ion:ion:1.2.4' 
    compile 'com.mobsandgeeks:android-saripaar:1.0.2' 
    provided 'junit:junit:4.11' 
    // Next 2 Just to make IntelliJ happy: 
    provided 'org.mockito:mockito-all:1.9.5' 
    provided 'org.robolectric:robolectric:2.3' 
    unitTestCompile 'com.google.android:android:4+' 
    unitTestCompile files("$project.buildDir/classes/defaultFlavor/debug") 
    unitTestCompile 'junit:junit:4.11' 
    unitTestCompile 'org.mockito:mockito-all:1.9.5' 
    unitTestCompile 'org.robolectric:robolectric:2.3' 
} 

sourceSets { 
    unitTest { 
     java.srcDir file('src/test/java') 
    } 
} 

task unitTestDisplayResults << { 
    toOpen = projectDir.toString() + "/build/reports/tests/index.html" 
    println "Opening page: " + toOpen 
    ("cmd /C start " + toOpen).execute() 
} 

task unitTest(type:Test, dependsOn: assemble) { 
    description = "run unit tests" 
    testClassesDir = project.sourceSets.unitTest.output.classesDir 
    classpath = project.sourceSets.unitTest.runtimeClasspath 
    finalizedBy unitTestDisplayResults 
} 

Ошибка ouptut выдержка:

:VG:generateDefaultFlavorDebugSources 
:VG:compileDefaultFlavorDebugJava FAILED 

C:\source\VG\src\main\java\com\myapp\errorhandling\VgErrorHandler.java:15: error: cannot find symbol 

ответ

2

Модуль vgcommon определяется как модуль приложения, не библиотека. В своем build.gradle, вместо этой строки:

apply plugin: 'android' 

использовать это:

apply plugin: 'android-library' 
+0

Спасибо. Примечание для других: Также удалите раздел «productFlavors», поскольку таких библиотек нет. – Nilzor

Смежные вопросы