错误:在Android Studio中未找到名称为“default”的配置。

117

我正在使用Volley库在Android中进行网络操作。因此,我正在尝试将此库添加到我的项目中,该项目是在Android Studio和gradle系统中创建的。

我已经将Volley库添加到我的项目中,但是当我与gradle同步时,我收到错误消息。我尝试了这里看到的所有答案,但对我都没有用。

错误消息:在Android Studio中找不到名称为“默认”的配置。

Volley/build.gradle

apply plugin: 'android-library'

android {

    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    sourceSets {
        defaultConfig {
            minSdkVersion 8
            targetSdkVersion 19
        }

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

        }
    }
}

app/build.gradle

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile project(':library:volley')
}

root/build.gradle

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

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.1'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

settings.gradle

include ':app'
include ':library:volley'

你是否将库文件夹添加到正确的位置,例如projectname/library? - Ajay S
我在应用程序目录中添加了库目录。 - Bot
https://dev59.com/KGEh5IYBdhLWcg3wVCEb - k3b
1
在我的情况下,我的一个Gradle配置文件丢失了。它没有被正确地推送。 - Zar E Ahmer
11个回答

97

尝试:

git submodule init
git submodule update

1
这对于作为子模块添加的库绝对有效,谢谢! - Arne
@Vilius,请问我应该在终端的哪个目录下运行这个命令?我试过在我的项目目录下运行,但是它显示“不是git仓库(或任何父目录)”。我有一个示例应用程序,我尝试导入它,但它没有设置gradle,所以他们进行了包装。我想知道这是否是问题的一部分。事实上,我甚至没有settings.gradle文件,只有build.gradle和其他一些文件。 - Azurespot
2
你应该从项目的根目录运行。它应该是来自Git仓库的项目,并且应该是一个具有子项目的项目。在build.gradle文件中查找类似于compile project(':libs:my-custom:library')的内容。 - ViliusK
1
子模块允许您在存储库的子目录中保留另一个Git存储库。另一个存储库有自己的历史记录,不会干扰当前存储库的历史记录。这可用于具有外部依赖项(例如第三方库)的情况。[来源](http://git-scm.com/docs/git-submodule) - ViliusK
3
git submodule和gradle构建错误有什么关系? - teddy

68

在您的项目根目录中添加您的库文件夹,并将所有库文件复制到其中。例如:YourProject/library,然后同步它,其他事情对我来说似乎没问题。


5
这句话的意思是:它也可能意味着库目录中缺少 build.gradle 文件或 .iml 文件。 - W.K.S
7
要获取完整的错误信息,您只需要运行终端命令:./gradlew assembleDebug。您可以从Android Studio或外部终端应用程序中运行该命令。 - eleven
你能发布示例和照片吗?谢谢,因为这种方法不起作用。 - user3402040
1
这让我意识到我丢失了我的子模块,@ViliusK的回答更详细地解释了这一点。 - Ionoclast Brigham
这意味着您需要从设置或build.gradle文件中删除最近删除的库项目名称。请仅翻译文本内容,不要进行解释。 - Lucky Rana
我需要在“settings.gradle”中更正导入项目的路径。该项目是通过project(':UISDK').projectDir = new File('../UI_Android_SDK/UISDK')导入的,我需要修复发送到File()的路径。 - Sufian

22

这可能是一个罕见的情况,但对我来说,在settings.gradle中包含的库确实不存在。

例如,我在settings.gradle中有include ':libraries:Android-RateThisApp:library',但Android-RateThisApp文件夹是空的。只要我检出了这个子模块,gradle同步就成功了。


是的,你可能不得不执行 git submodule initgit submodule update。这在检出带有子模块的项目时很常见。 - ViliusK
这种错误对我来说并不罕见...很多时候都会出现。 - sirvon
这对我来说也是一样的!更新了react-native-maps,它改变了到android目录的路径。 - cbartondock

14

如果您想在多个项目中使用相同的库文件夹,您可以像这样在gradle中将其引用到外部位置:

settings.gradle:

include 'app', ':volley'
project(':volley').projectDir = new File('../libraries/volley')

在你的应用程序 build.gradle 文件中

dependencies {
    ...
    compile project(':volley')
...}

当我将整个项目作为子模块时,这对我很有用,但我只想使用该项目的库模块(并排除示例应用程序)。 - phreakhead

6
我也遇到了这个问题,但是我按照以下步骤进行操作: 1)将模块(库)添加到名为ThirdPartyLib的特定文件夹中。
为了解决这个问题,我打开了settings.gradle,然后添加了以下内容: project(':').projectDir = new File('ThirdPartyLib/')
“:-”是模块名称...

3

请检查 settings.gradle 文件。包含的模块可能已经丢失或在其他目录中。例如,如果在 settings.gradle 中有以下行,则 gradle 将在您的项目目录中搜索 common-lib 模块:

include ':common-lib'

如果它缺失了,你可以在你的项目中找到并复制这个模块,或者在settings.gradle文件中引用它的路径:
include ':common-lib'
project(':common-lib').projectDir = new File('<path to your module i.e. C://Libraries/common-lib>') // 

3
为了快速诊断此错误,请转到终端或使用内置于Android Studio中的终端(在底部状态栏中可访问)。切换到您的项目的主目录(其中包含settings.gradle)。
1.) 检查settings.gradle是否包括子项目。类似以下内容。这将确保您的多项目构建知道您的库子项目。
include ':apps:App1', ':apps:App2', ':library:Lib1'

冒号之间的文本是子目录。

2.) 运行以下gradle命令,只需查看Gradle是否能为库提供任务列表。在settings.gradle定义中使用相同的限定符。这将揭示与Library构建脚本隔离的问题。

./gradlew :library:Lib1:tasks --info

3.) 确保上一步骤的输出列出了一个"assembleDefault"任务。如果没有,请确保库在build.gradle中包含Android Library插件。就像这样,在顶部。

apply plugin: 'com.android.library'

我知道原帖的问题已经得到了回答,但我认为答案在过去一年中已经发生了变化,我认为出现错误的原因有多种。我认为这个解决方案应该能够帮助那些遇到各种问题的人。


0

如果您在删除某些节点模块后发现此错误,则理想情况下应该不会存在build.gradle(Module:app)库。 可以手动删除并重新同步项目。


0

我也遇到了同样的问题,问题是一些文件中缺少库。

settings.gradle、app/build.gradle、package.json、MainApplication.java

假设库是react-native-vector-icons,则应在以下文件中提到:

在app/build.gradle文件的dependencies部分中添加:

compile project(':react-native-vector-icons')

在settings.gradle文件的android文件夹下添加以下内容:

include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android')

在MainApplication.java中添加以下内容:

导入依赖项: import com.oblador.vectoricons.VectorIconsPackage;

然后在getPackages()方法中添加: new VectorIconsPackage()


0

移除几个React Native依赖项解决了问题。

删除这些行后,问题得到了解决。这一行是由rnpm link创建的,但是是一个bug。

compile project(':react-native-gps')
compile project(':react-native-maps')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接