Can';添加库后,不要使用gradle编译Android项目

Can';添加库后,不要使用gradle编译Android项目,android,gradle,android-studio,Android,Gradle,Android Studio,在将库添加到我的Android项目之前,布局如下: MyappProject Myapp 格雷德尔先生 格雷德尔酒店 格雷德尔先生 顶层build.gradle始终为空,settings.gradle文件仅包含: include ':Myapp' 我获得了一个库项目,我能够成功地将其导入Android Studio,因此我认为其中的gradle文件是好的。我现在有以下结构: Library LibrarySubProject1 build.gradle

在将库添加到我的Android项目之前,布局如下:

  • MyappProject
    • Myapp
      • 格雷德尔先生
  • 格雷德尔酒店
  • 格雷德尔先生
顶层build.gradle始终为空,settings.gradle文件仅包含:

include ':Myapp'
我获得了一个库项目,我能够成功地将其导入Android Studio,因此我认为其中的gradle文件是好的。我现在有以下结构:

Library
    LibrarySubProject1
        build.gradle
    ....
    build.gradle
  • MyappProject
    • Myapp
      • 格雷德尔先生
    • 图书馆
      • 图书馆
        • 图书馆子项目1
          • 格雷德尔先生
        • 格雷德尔先生
  • 格雷德尔酒店
  • 格雷德尔先生
…顶级设置gradle现在看起来像:

include ':Myapp'
include ':libraries:Library'
我还更新了Myapp的build.gradle,以便在依赖项中包含额外的最后一行:

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/commons-lang3-3.1.jar')
    compile files('libs/jsoup-1.7.3.jar')
    compile project(':libraries:Library')
}
不幸的是,任何试图对gradle(同步文件、构建等)进行任何操作的尝试现在都会让我产生以下问题:

Gradle 'MyappProject' project refresh failed:
     Configuration with name 'default' not found.
     Gradle settings
对设置的任何更改似乎都没有效果,androidstudio将设置保持为“使用默认的gradle包装器”。 据我所知,这意味着顶级build.gradle在这个文件中存在一个问题,它没有包含足够的信息来构建子项目。但是,也许我误解了,因为我的应用程序用于构建和库似乎也很好。删除编译项目(“:libraries:Library”)允许再次同步gradle文件,但我想使用该库

欢迎就如何解决这一问题提出任何建议

编辑以从库中添加build.gradle。顶级:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

allprojects {
    version = VERSION_NAME
    group = GROUP

    repositories {
        mavenCentral()
    }
}
从下一个层面:

apply plugin: 'android-library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
    }

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

        instrumentTest.setRoot('tests')

        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'

您的库具有多模块生成文件结构:

Library
    LibrarySubProject1
        build.gradle
    ....
    build.gradle
使用像Android Studio这样的两级build.gradle文件结构,项目已经实现了,但这不适用于库。MyApp正在拉入:libraries:Library的依赖项,但只看到带有
buildscript
allprojects
标记的顶级构建文件,并且在其中找不到可依赖的默认配置

您的库不能有settings.gradle文件来引导到LibrarySubProject1/build.gradle。您需要将库向上移动一个目录级别到库,并将两个build.gradle文件向下折叠到一个目录级别:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

repositories {
    mavenCentral()
}

apply plugin: 'android-library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
    }

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

        instrumentTest.setRoot('tests')

        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'

我不知道如何处理顶级build.gradle中的
版本
内容;你必须弄清楚这一点。

你不能在Android Studio的项目中拥有项目。您只能使用模块,以便按如下所示更改项目结构,使其符合允许的项目-模块级结构

MyappProject
   Myapp
    build.gradle
   libraries
    LibrarySubProject1
     build.gradle
     ....
settings.gradle
build.gradle(Root only one)
现在对build.gradle文件执行以下操作

1。根级别
build.gradle
file

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

repositories {
    mavenCentral()
}
apply plugin: 'android-library'

    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.3"

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 19
        }

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

            instrumentTest.setRoot('tests')

            debug.setRoot('build-types/debug')
            release.setRoot('build-types/release')
        }
    }

    apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'

        android {
            compileSdkVersion 19
            buildToolsVersion "19.0.3"

            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 19
            }
       }

       dependencies {
           //YOUR MODULE DEPENDENCIES
           compile project(':libraries:LibrarySubProject1')
       }
  include ':Myapp'
  include ':libraries:LibrarySubProject1'
如果在库项目的根级别build.gradle文件中有某些内容,请将其也包含在此根级别build.gradle文件中,因为只有根级别才允许有这些内容,编译时这些内容将自动包含在每个子级别的build.gradle文件中

2。LibraryProject的
build.gradle
文件

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

repositories {
    mavenCentral()
}
apply plugin: 'android-library'

    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.3"

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 19
        }

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

            instrumentTest.setRoot('tests')

            debug.setRoot('build-types/debug')
            release.setRoot('build-types/release')
        }
    }

    apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'

        android {
            compileSdkVersion 19
            buildToolsVersion "19.0.3"

            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 19
            }
       }

       dependencies {
           //YOUR MODULE DEPENDENCIES
           compile project(':libraries:LibrarySubProject1')
       }
  include ':Myapp'
  include ':libraries:LibrarySubProject1'
3。您的主模块的
build.gradle
文件应该如下所示

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

repositories {
    mavenCentral()
}
apply plugin: 'android-library'

    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.3"

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 19
        }

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

            instrumentTest.setRoot('tests')

            debug.setRoot('build-types/debug')
            release.setRoot('build-types/release')
        }
    }

    apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'

        android {
            compileSdkVersion 19
            buildToolsVersion "19.0.3"

            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 19
            }
       }

       dependencies {
           //YOUR MODULE DEPENDENCIES
           compile project(':libraries:LibrarySubProject1')
       }
  include ':Myapp'
  include ':libraries:LibrarySubProject1'
您的
设置。gradle
文件将类似于

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

repositories {
    mavenCentral()
}
apply plugin: 'android-library'

    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.3"

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 19
        }

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

            instrumentTest.setRoot('tests')

            debug.setRoot('build-types/debug')
            release.setRoot('build-types/release')
        }
    }

    apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'

        android {
            compileSdkVersion 19
            buildToolsVersion "19.0.3"

            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 19
            }
       }

       dependencies {
           //YOUR MODULE DEPENDENCIES
           compile project(':libraries:LibrarySubProject1')
       }
  include ':Myapp'
  include ':libraries:LibrarySubProject1'

在我的例子中,通过删除包含

maven_push.gradle

此行试图将项目上载到maven,而我不需要。

听起来像
:库:库
不(隐式或显式)声明
默认配置,在这种情况下,无法使用项目依赖项引用它。谢谢。我一直在浏览gradle文档,但不清楚如何声明配置。请您指出我应该阅读的内容,好吗?您能展示一下您的build.gradle库项目吗?我已根据要求添加了一些build.gradle文件。您不必手动声明
默认
配置;
android库
插件可能会解决这个问题。我不知道这个插件如何工作的细节,但是你应该能够在研究官方的Gradle Android插件文档之后找到一个解决方案,该文档包含了很多关于项目依赖性等方面的信息。