Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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 如何将一个项目与另一个项目中的子项目一起用作gradle的子项目(子模块)?_Android_Git_Gradle_Project Structure - Fatal编程技术网

Android 如何将一个项目与另一个项目中的子项目一起用作gradle的子项目(子模块)?

Android 如何将一个项目与另一个项目中的子项目一起用作gradle的子项目(子模块)?,android,git,gradle,project-structure,Android,Git,Gradle,Project Structure,有一些gradle-android项目A。它依赖于几个gradle子项目,每个子项目都位于自己的git存储库中,并通过git子模块连接到我们的项目。我可以在我的owr存储库中查看它,作为我项目的It子目录 项目层级为: └─ ProjectRootDir --- projectA ├─ gradle ├─ mainProject │ └─ subpr

有一些gradle-android项目A。它依赖于几个gradle子项目,每个子项目都位于自己的git存储库中,并通过git子模块连接到我们的项目。我可以在我的owr存储库中查看它,作为我项目的It子目录

项目层级为:

└─ ProjectRootDir                                  --- projectA
             ├─ gradle
             ├─ mainProject
             │   └─ subprojectA                    --- submoduleA
             │        ├─ libs
             │        ├─ src
             │        ├─ settings.gradle
             │        └─ build.gradle
             ├─ relatedProjects                   --- folder for submodules
             │  ├─ subprojectA                    --- submoduleA
             │  │  ├─ library
             │  │  ├─ gradle
             │  │  ├─ libs
             │  │  └─ relatedProjects             --- related projects for submoduleA
             │  │     ├─ subprojectAA             --- first submodule of submoduleA
             │  │     │  ├─ Test
             │  │     │  ├─ libs
             │  │     │  ├─ src
             │  │     │  ├─ settings.gradle
             │  │     │  └─ build.gradle
             │  │     └─ subprojectAB             --- first submodule of submoduleA
             │  │        ├─ libs
             │  │        ├─ src
             │  │        ├─ tests
             │  │        ├─ settings.gradle
             │  │        └─ build.gradle
             │  └─ subprojectB                    --- submodule of submoduleB
             │     ├─ demo
             │     ├─ gradle
             │     ├─ library
             │     ├─ settings.gradle
             │     └─ build.gradle
             ├─ settings.gradle
             └─ build.gradle
mainProject build.gradle

apply plugin: 'android'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile project(':relatedProjects:subprojectB:library')
    compile project(':relatedProjects:subprojectA:library')
}
 buildscript {
     repositories {
         mavenCentral()
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:0.+'
     }
 }
apply plugin: 'android-library'

repositories {
    mavenCentral()
    flatDir {
        name 'localRepository'
        dirs 'src/main/libs'
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
    sourceSets {
        instrumentTest {
            assets.srcDirs = ["src/tests/assets"]
            res.srcDirs = ["src/tests/res"]
            resources.srcDirs = ["src/tests/src"]
            java.srcDirs = ["src/tests/src"]
        }
    }
}

dependencies {
    compile project(':relatedProjects:submoduleAA')
    compile project(':relatedProjects:submoduleAB')
}
rootProject settings.gradle

include ':mainProject'
include ':relatedProjects:subprojectB:library'
include ':relatedProjects:subprojectA'
include ':library'
include ':relatedProjects:subprojectAA'
include ':relatedProjects:subprojectAB'
rootProject build.gradle

apply plugin: 'android'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile project(':relatedProjects:subprojectB:library')
    compile project(':relatedProjects:subprojectA:library')
}
 buildscript {
     repositories {
         mavenCentral()
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:0.+'
     }
 }
apply plugin: 'android-library'

repositories {
    mavenCentral()
    flatDir {
        name 'localRepository'
        dirs 'src/main/libs'
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
    sourceSets {
        instrumentTest {
            assets.srcDirs = ["src/tests/assets"]
            res.srcDirs = ["src/tests/res"]
            resources.srcDirs = ["src/tests/src"]
            java.srcDirs = ["src/tests/src"]
        }
    }
}

dependencies {
    compile project(':relatedProjects:submoduleAA')
    compile project(':relatedProjects:submoduleAB')
}
subprojectA settings.gradle

include ':mainProject'
include ':relatedProjects:subprojectB:library'
include ':relatedProjects:subprojectA'
include ':library'
include ':relatedProjects:subprojectAA'
include ':relatedProjects:subprojectAB'
子项目a build.gradle

apply plugin: 'android'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile project(':relatedProjects:subprojectB:library')
    compile project(':relatedProjects:subprojectA:library')
}
 buildscript {
     repositories {
         mavenCentral()
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:0.+'
     }
 }
apply plugin: 'android-library'

repositories {
    mavenCentral()
    flatDir {
        name 'localRepository'
        dirs 'src/main/libs'
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
    sourceSets {
        instrumentTest {
            assets.srcDirs = ["src/tests/assets"]
            res.srcDirs = ["src/tests/res"]
            resources.srcDirs = ["src/tests/src"]
            java.srcDirs = ["src/tests/src"]
        }
    }
}

dependencies {
    compile project(':relatedProjects:submoduleAA')
    compile project(':relatedProjects:submoduleAB')
}
但当我尝试构建时。/gradlew assembleDebug 我每次都收到错误

FAILURE: Build failed with an exception.

* Where:
Build file   '.../ProjectRootDir/relatedProjects/submoduleA/library/build.gradle'   line: 38

* What went wrong:
A problem occurred evaluating project ':relatedProjects:submoduleA:library'.
> Project with path ':relatedProjects:submoduleAA' could not be found in project     ':relatedProjects:submoduleA:library'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to     get more log output.
第38行是

       compile project(':relatedProjects:submoduleAA')
但当我为子模块项目运行./gradlew assembleDebug时,一切都正常


请大家帮帮我。如何将一个项目与另一个项目中的子项目一起用作子项目子模块

Gradle生成只能有一个settings.Gradle,并且您只能在属于同一生成的项目之间具有项目依赖关系。跨越构建边界,您通常会通过本地或远程Maven或Ivy存储库交换二进制工件和外部依赖项。当然,两个settings.gradle可能包含一些相同的项目。IntelliJ还有一个功能,可以将另一个Gradle版本添加到同一IntelliJ项目中,也许Android Studio中也存在此功能。

谢谢。我想,我的问题是主项目要寻找的:relatedProjects:submoduleAA与主项目相关。我还想知道,如何在我的根项目中使用子项目和非工件。因为我认为使用子项目,然后将其复合到主项目是一种很好的方法。我不理解这个问题。也许会问一个新问题。我的意思是我可以用哪种方式为子项目添加子项目。Android Studio只允许创建一级子项目。当我尝试为existone创建库子项目时,Idea会在项目树的根目录中创建它。为什么根项目应该了解子项目的子项目?Gradle就是这样工作的。settings.gradle声明生成的所有项目,而不仅仅是直接子项。和子项目{…}如果您所说的是指逻辑项目层次结构中当前项目下的所有项目,而不仅仅是直接子项目。您可以在的“多项目构建”一章中了解有关这些概念的更多信息。另外,请查看完整Gradle发行版中的示例版本。抱歉,这里讨论了我的问题: