Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 模块依赖关系_Android_Gradle_Android Studio - Fatal编程技术网

Android 模块依赖关系

Android 模块依赖关系,android,gradle,android-studio,Android,Gradle,Android Studio,我正在尝试一个有两个模块的项目,比如说M1和M2M1应将M2作为依赖项。我在M2中添加了一个类Test,我想从M1访问它 我正在使用Android Studio 0.3.2。无论我尝试什么(重新导入项目、同步梯度文件等等),我都无法从M1访问Test类:无法解析符号“Test” 文件夹结构: - root - M1 - src - build.gradle - ... - M2 - src - bui

我正在尝试一个有两个模块的项目,比如说
M1
M2
M1
应将
M2
作为依赖项。我在
M2
中添加了一个类
Test
,我想从
M1
访问它

我正在使用Android Studio 0.3.2。无论我尝试什么(重新导入项目、同步梯度文件等等),我都无法从
M1
访问
Test
类:
无法解析符号“Test”

文件夹结构:

- root
    - M1
        - src
        - build.gradle
        - ...
    - M2
        - src
        - build.gradle
        - ...
    - build.gradle
    - settings.gradle
    - ...
include ':M1', ':M2'
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')
}
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 {
}
根目录/设置。渐变:

- root
    - M1
        - src
        - build.gradle
        - ...
    - M2
        - src
        - build.gradle
        - ...
    - build.gradle
    - settings.gradle
    - ...
include ':M1', ':M2'
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')
}
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 {
}
root/build.gradle:

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

- root
    - M1
        - src
        - build.gradle
        - ...
    - M2
        - src
        - build.gradle
        - ...
    - build.gradle
    - settings.gradle
    - ...
include ':M1', ':M2'
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')
}
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 {
}
root/M2/build.gradle:

- root
    - M1
        - src
        - build.gradle
        - ...
    - M2
        - src
        - build.gradle
        - ...
    - build.gradle
    - settings.gradle
    - ...
include ':M1', ':M2'
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')
}
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应用程序插件

apply plugin: 'android'
如果M1依赖于M2,那么M2必须是一个库项目,它的gradle文件应该是

apply plugin: 'android-library'

奇怪的我有一个类似的配置,它工作得很好。所以,显而易见的问题是:当你在Android Studio中打开
MainActivity
时,你是否看到
com.mypackage.m2
下的红色波浪?类
Test
实际存在吗?你把包裹导入了吗?您是否尝试过运行
com.mypackage.m2.Test中的
gradlew clean build
?单词
Test
为红色。自动完成找不到包
m2
。它确实存在于模块
M2
中<代码>导入com.mypackage.m2.*导致
未使用的导入语句
(但没有错误)。我刚刚试过运行gradlew clean build,没有结果。啊,是的,就是这样!谢谢