【问题标题】:Module Dependency模块依赖
【发布时间】:2013-12-04 20:52:41
【问题描述】:

我正在尝试使用具有两个模块的项目,例如 M1M2M1 应该有 M2 作为依赖项。我添加了一个类 TestM2,我想从 M1 访问它。

我正在使用 Android Studio 0.3.2。无论我尝试什么(重新导入项目、同步 gradle 文件等),我都无法从 M1 访问 Test 类:Cannot resolve symbol 'Test'

文件夹结构:

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

root/settings.gradle:

include ':M1', ':M2'

root/build.gradle:

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

root/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')
}

root/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;
                    ^

我应该怎么做才能解决这个问题?

【问题讨论】:

  • 奇怪...我有一个类似的配置,它工作正常。所以,显而易见的问题:当你在 Android Studio 中打开 MainActivity 时,你看到 com.mypackage.m2 下的波浪状红色东西了吗? Test 类真的存在吗?你导入包了吗?你试过运行gradlew clean build吗?
  • com.mypackage.m2.Test test; 中的单词Test 是红色的。自动完成未找到包 m2。它确实存在于模块M2 中。 import com.mypackage.m2.*; 导致 unused import statement(虽然没有错误)。我刚才试过运行 gradlew clean build ,没有结果。

标签: android gradle android-studio


【解决方案1】:

您的两个模块都应用了 android 应用程序插件

apply plugin: 'android'

如果M1要依赖M2,M2必须是库项目,其gradle文件应该说

apply plugin: 'android-library'

【讨论】:

  • 啊,是的,就是这样!谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 2019-02-11
  • 1970-01-01
  • 2015-07-03
  • 2020-02-05
相关资源
最近更新 更多