2013-12-04 2 views
2

Я пытаюсь работать с проектом, который имеет два модуля, например M1 и M2. M1 должен иметь M2 в качестве зависимости. Я добавил класс Test в M2, который я хочу получить от M1.Зависимость модуля

Я работаю с Android Studio 0.3.2. Независимо от того, что я пытаюсь (реимпорт проекта, файлы с градиентом синхронизации ...), я не могу получить доступ к классу Test от M1: Cannot resolve symbol 'Test'.

Структура Папка:

- root 
    - M1 
     - src 
     - build.gradle 
     - ... 
    - M2 
     - src 
     - build.gradle 
     - ... 
    - build.gradle 
    - settings.gradle 
    - ... 

корень/settings.gradle:

include ':M1', ':M2' 

корень/build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

корень/M1/​​build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 

    defaultConfig { 
     minSdkVersion 19 
     targetSdkVersion 19 
    } 
} 

dependencies { 
    compile project(':M2') 
} 

корень/M2/build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 

    defaultConfig { 
     minSdkVersion 19 
     targetSdkVersion 19 
    } 
} 

dependencies { 
} 

Запуск gradlew compileDebug дает:

root\M1\src\main\java\com\mypackage\m1\MainActivity.java:28: error: package com.mypackage.m2 does not exist 
    com.mypackage.m2.Test test; 
        ^

Что я должен делать решить эту проблему?

+0

Weird .. У меня есть аналогичная конфигурация, и она работает нормально. Итак, очевидные вопросы: когда вы открываете 'MainActivity' в Android Studio, вы видите волнисто-красную вещь под' com.mypackage.m2'? Действительно ли существует класс 'Test'? Вы импортировали пакет? Вы пытались запустить 'gradlew clean build'? – mbmc

+0

Слово 'Test' в' com.mypackage.m2.Test test; 'красное. Autocomplete не находит пакет 'm2'. Он существует в модуле 'M2'. 'import com.mypackage.m2. *;' приводит к 'unused import statement' (хотя ошибки не было). Я пробовал запустить чистую сборку gradlew только сейчас, никакого результата. – nhaarman

ответ

1

И ваш модуль применяется андроида плагин приложения с

apply plugin: 'android' 

Если М1 зависит от M2, M2 должен быть проект библиотеки, а его Gradle файл должен сказать

apply plugin: 'android-library' 
+0

Ах да, вот и все! Благодаря! – nhaarman

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