【问题标题】:multiproject gradle build error: package does not exist多项目 gradle 构建错误:包不存在
【发布时间】:2013-09-05 12:55:24
【问题描述】:

我在使用 gradle 构建多项目时遇到了一些问题。我阅读了所有类似的问题,但没有任何帮助。我的项目结构如下:

App/
    settings.gradle
    app/
        build.gradle
    libraries/
        Core(git submodule)/
            Core/
                build.gradle
            libraries/
                ZBarLibrary/
                    build.gradle
            settings.gradle

应用程序/settings.gradle

include ':App', ':libraries:Core', ':libraries:ZBarLibrary'
project(':libraries:Core').projectDir = new File(settingsDir, 'libraries/Core/Core')
project(':libraries:ZBarLibrary').projectDir = new File(settingsDir, 'libraries/Core/libraries/ZBarLibrary')

App/app/build.gradle

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

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 16
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile project(':libraries:Core')
}

App/libraries/Core/Core/build.gradle

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

repositories {
    mavenCentral()
}

dependencies {
    instrumentTestCompile "junit:junit:4.5+"
    compile project(':libraries:ZBarLibrary')
    compile fileTree(dir: 'libs', include: '*.jar')

}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 16
    }
}

App/libraries/Core/libraries/ZBarLibrary/build.gradle

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

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 16
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

App 目录中的命令“gradle build”生成错误:“package com... 不存在”。这个包在 app 模块中使用,但它在 App/libraries/Core/Core/src/main/java 中找到。你能帮帮我吗?

【问题讨论】:

    标签: android build gradle android-studio


    【解决方案1】:

    您的应用模块的 build.gradle 应该包含(除其他外)

    apply plugin: 'com.android.application'
    dependencies {
        compile project(':my_library_module')
    }
    

    你的库模块的 build.gradle 文件应该包含

    apply plugin: 'com.android.library'
    

    【讨论】:

      【解决方案2】:

      如果您使用 Core 作为库,您应该在 App/libraries/Core/Core/build.gradle

      中将 apply plugin: 'android' 更改为 apply plugin: 'android-library'

      【讨论】:

      • 我注意到没有图书馆。此外,从 setting.gradle 为 ZBarLibrary 设置目录对我不起作用。
      • 仅供参考,我现在收到一条消息,“android-library”现已弃用,您应该使用 com.android.library
      【解决方案3】:

      为了解决找不到包的错误,我在app模块的build.gradle文件中添加了

      dependencies {
          // ...
          compile project(':library')
      }
      

      library 模块添加为app 模块的依赖项

      【讨论】:

        【解决方案4】:

        我对 Gradle 6.4(多模块项目)和 Java 13 有同样的问题

        项目结构:

        app:
            backend:
                /src
                build.gradle
            base:
                /src
                build.gradle
            build.gradle
            settings.gradle
        

        主类包含在 base/build.gradle 中,并且 base-module 依赖于 backend-module

        解决方案:需要在backend/build.gradle

        中添加以下行
        jar {
            enabled = true
        }
        bootJar {
            enabled = false
        }
        

        并检查 base/build.gradle 是否有以下行:

        bootJar {
            archivesBaseName = 'base'
        }
        dependencies {
            implementation project(":backend")
        }
        

        以防万一,对于 gradle 中的新人,请列出 settings.gradle 文件

        rootProject.name = 'app'
        include 'backend', 'base'
        

        【讨论】:

          猜你喜欢
          • 2017-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-26
          • 2022-01-10
          • 2014-03-08
          • 2021-11-01
          相关资源
          最近更新 更多