build.gradle和项目库 [英] build.gradle and project libs

查看:692
本文介绍了build.gradle和项目库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用项目库中的机器人工作室的项目。 我的问题是摇篮文件的configuartion。

我真的尝试了很多的解决方案,被张贴在这里(在项目的lib定义MODUL在设置MODUL ,<一个href="http://stackoverflow.com/questions/16588064/how-do-i-add-a-library-project-to-the-android-studio">sherlock例如,<一个href="http://stackoverflow.com/questions/16905214/problems-trying-to-create-gradle-build/16905808#16905808">setting右sourcesets 的...),但我总是得到同样的错误(当我添加的lib debendency到我的应用程序build.gradle文件):

 发生配置项目中的问题:MyApp的。
&GT;未能通知项目评估听众。
   &GT;配置名为'默认'未找到。
 

我已经做了清洁和构建命令行,但没有任何效果。 是否有可能,这是Android的Studio的早期版本只是一个错误(喜欢评论在这篇文章中)?还是我错过了什么?

我目前的Andr​​oid工作室版本:0.1.6和我的操作系统:Windows 7,64位

请帮帮我,我是新来的摇篮之前,我从来没有使用Maven的或蚂蚁。

修改1:

  gardelw compileDebug --stacktrace

*例外是:

org.gradle.api.ProjectConfigurationException:发生配置Pro的问题
拍摄对象:MyApp的。
        在org.gradle.configuration.LifecycleProjectEvaluator.addConfigurationFa
ilure(LifecycleProjectEvaluator.java:79)
        在org.gradle.configuration.LifecycleProjectEvaluator.notifyAfterEvaluat
E(LifecycleProjectEvaluator.java:74)
        在org.gradle.configuration.LifecycleProjectEvaluator.evaluate(生命周期
ProjectEvaluator.java:61)
        在org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:465)
        在org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:76)
        在org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuil
dConfigurer.java:31)
        在org.gradle.initialization.DefaultGradleLauncher.doBuildStages(默认
GradleLauncher.java:142)
        在org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradle
Launcher.java:113)
        在org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLaun
cher.java:81)
        在org.gradle.launcher.exec.InProcessBuildActionExecuter $ DefaultBuildCon
troller.run(InProcessBuildActionExecuter.java:64)
        在org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav
一:33)
        在org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav
一:24)
        在org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:35)
        在org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:26)
        在org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
        在org.gradle.api.internal.Actions $ RunnableActionAdapter.execute(操作
的.java:171)
        在org.gradle.launcher.cli.CommandLineActionFactory $ ParseAndBuildAction。
执行(CommandLineActionFactory.java:201)
        在org.gradle.launcher.cli.CommandLineActionFactory $ ParseAndBuildAction。
执行(CommandLineActionFactory.java:174)
        在org.gradle.launcher.cli.CommandLineActionFactory $ WithLogging.execute(
CommandLineActionFactory.java:170)
        在org.gradle.launcher.cli.CommandLineActionFactory $ WithLogging.execute(
CommandLineActionFactory.java:139)
        在org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep
ortingAction.java:33)
        在org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep
ortingAction.java:22)
        在org.gradle.launcher.Main.doAction(Main.java:48)
        在org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        在org.gradle.launcher.Main.main(Main.java:39)
        在org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBoots
trap.java:50)
        在org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.j
AVA:32)
        在org.gradle.launcher.GradleMain.main(GradleMain.java:26)
        在org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.ja
VA:33)
        在org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
        在org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
org.gradle.listener.ListenerNotificationException:产生的原因未能通知p
roject评估听众。
        在org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:90)
        在org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:30)
        在org.gradle.messaging.dispatch.ProxyDispatchAdapter $ DispatchingInvocat
ionHandler.invoke(ProxyDispatchAdapter.java:93)
        在com.sun.proxy。$ Proxy8.afterEvaluate(来源不明)
        在org.gradle.configuration.LifecycleProjectEvaluator.notifyAfterEvaluat
E(LifecycleProjectEvaluator.java:67)
        ... 29更多
致:org.gradle.api.artifacts.UnknownConfigurationException:配置
 名为默认未找到。
        在org.gradle.api.internal.artifacts.configurations.DefaultConfiguration
Container.createNotFoundException(DefaultConfigurationContainer.java:94)
        在org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(
DefaultNamedDomainObjectCollection.java:184)
        在org.gradle.api.internal.artifacts.configurations.DefaultConfiguration
Container.getByName(DefaultConfigurationContainer.java:84)
        在org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependen
cy.getProjectConfiguration(DefaultProjectDependency.java:72)
        在org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependen
cy_Decorated.getProjectConfiguration(来源不明)
        在org.gradle.api.internal.BeanDynamicObject $ MetaClassAdapter.getPropert
Y(BeanDynamicObject.java:146)
        在org.gradle.api.internal.BeanDynamicObject.getProperty(BeanDynamicObje
ct.java:102)
        在org.gradle.api.internal.CompositeDynamicObject.getProperty(合成
ynamicObject.java:78)
        在org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependen
cy_Decorated.getProperty(来源不明)
        在com.android.build.gradle.BasePlugin $ _ensureConfigured_closure92.doCal
L(BasePlugin.groovy:1252)
        在com.android.build.gradle.BasePlugin.ensureConfigured(BasePlugin.groov
Y:1250)
        在com.android.build.gradle.BasePlugin $ ensureConfigured.callCurrent(UNKN
自己的源)
        在com.android.build.gradle.BasePlugin.resolveDependencyForConfig(BasePl
ugin.groovy:1214)
        在com.android.build.gradle.BasePlugin $ resolveDependencyForConfig.callCu
rrent(来源不明)
        在com.android.build.gradle.BasePlugin.resolveDependencies(BasePlugin.gr
oovy:1164)
        在com.android.build.gradle.BasePlugin $ resolveDependencies.callCurrent(U
nknown源)
        在com.android.build.gradle.AppPlugin.doCreateAndroidTasks(AppPlugin.gro
ovy:196)
        在com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.gro
ovy:242)
        在com.android.build.gradle.BasePlugin $ _apply_closure1.doCall(BasePlugin
.groovy:190)
        在org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(CL
osureBackedMethodInvocationDispatch.java:40)
        在org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(CL
osureBackedMethodInvocationDispatch.java:25)
        在org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:81)
        ... 33更多


构建失败

总时间:2.947秒
 

编辑2:

项目结构:

  MyProject的
 -  MyApp的
   -  build.gradle
   - 图书馆
     --- projectLib
         --- build.gradle
 -  build.gradle
 - 设置
 

settings.gradle

 包括:MyApp的
包括':库:projectLib
//也试图定义projectLib为MODUL:
//项目。(:projectLib')PROJECTDIR =新的文件(MyApp的/库/ projectLib)
 

的MyApp build.gradle:

  buildscript {
    库{
        mavenCentral()
    }
    依赖{
        类路径com.android.tools.build:gradle:0.4
    }
}
应用插件:'机器人'
依赖{
    编译文件(库/ Android的支持 -  v4.jar)
    编制项目(':库:projectLib)//加入这一行
                                             //  - &GT;构建失败
}

安卓{
    compileSdkVersion 17
    buildToolsVersion17.0.0

    defaultConfig {
        的minSdkVersion 7
        targetSdkVersion 16
    }

    sourceSets {
        主要{
            manifest.srcFile钢骨混凝土/主/ AndroidManifest.xml中
            java.srcDirs = ['src'中]
            resources.srcDirs = ['src'中]
            res.srcDirs = ['钢骨混凝土/主/ RES']
            aidl.srcDirs = ['水库']
            assets.srcDirs = ['资产']
            renderscript.srcDirs = ['src'中]
        }
    }
}
 

projectLib的build.gradle:

  buildscript {
    库{
        mavenCentral()
    }
    依赖{
        类路径com.android.tools.build:gradle:0.4
    }
}
应用插件:机器人库

依赖{
    编译文件树(导演:库,包括:的* .jar)
}

安卓{
    compileSdkVersion 17
    buildToolsVersion17.0.0

    defaultConfig {
        的minSdkVersion 7
        targetSdkVersion 16
    }

    sourceSets {
        主要{
            manifest.srcFile的Andr​​oidManifest.xml
            java.srcDirs = ['src'中]
            resources.srcDirs = ['src'中]
            res.srcDirs = ['水库']
            aidl.srcDirs = ['水库']
            assets.srcDirs = ['资产']
            renderscript.srcDirs = ['src'中]
        }
    }
}
 

修改3:

settings.gradle

 包括:MyApp的
包括:MyApp的:库:projectLib
 

的MyApp build.gradle:

  buildscript {
    库{
        mavenCentral()
    }
    依赖{
        类路径com.android.tools.build:gradle:0.4.2
    }
}
应用插件:'机器人'
依赖{
    编译com.android.support:support-v4:13.0.0
    编制项目(:MyApp的:库:projectLib)
}
 

projectLib的build.gradle:

  buildscript {
    库{
        mavenCentral()
    }
    依赖{
        类路径com.android.tools.build:gradle:0.4.2
    }
}
应用插件:机器人库

依赖{
    编译com.android.support:support-v4:13.0.0
}
 

解决方案

我觉得你指定的路径库项目不正确。如果我是跨preting项目布局正确的路线应该是以下几点:

 编制项目(:MyApp的:库:projectLib)
 

当你启动一个项目路径以:你是从根项目做一个绝对路径,然后基本上只是书面的路径:而不是/。在这种情况下,您projectLib模块在MyProject目录下/ MyApp的/库/ projectLib,并MyProject的是你settings.gradle是,使之成为您的根项目。因此,在交换冒号斜线让你我在上面写了一行。

您需要修改您的settings.gradle,包括完整的路径,以及:

 包括MyApp的:图书馆:projectLib
 

最后,如果你想节省一些打字的东西,如你的资料库的配置,你可以把它放在一个 allproject 块的根项目。

  allprojects {
    库{
        mavenCentral()
    }
}
 

很多像盖在多模块的文档不错的小技巧。

I have a project in android studio that uses a project library. My problem is the configuartion of the gradle files.

I really tried a lot of solution that were posted here (define modul in project lib in settings as modul, sherlock example, setting right sourcesets ...), but I always get the same error (as soon as I add the lib debendency to my apps build.gradle file):

A problem occurred configuring project ':MyApp'.
> Failed to notify project evaluation listener.
   > Configuration with name 'default' not found.

I already did a clean and build from command line, but this has no effect. Is it possible that this is just a bug in the early version of Android Studio (like the comment in this post)? Or do I miss something?

My current Android Studio Version: 0.1.6 and my OS: Windows 7, 64bit

Please help me, I'm new to gradle and I never used maven or ant before.

EDIT 1:

gardelw compileDebug --stacktrace

* Exception is:

org.gradle.api.ProjectConfigurationException: A problem occurred configuring pro
ject ':MyApp'.
        at org.gradle.configuration.LifecycleProjectEvaluator.addConfigurationFa
ilure(LifecycleProjectEvaluator.java:79)
        at org.gradle.configuration.LifecycleProjectEvaluator.notifyAfterEvaluat
e(LifecycleProjectEvaluator.java:74)
        at org.gradle.configuration.LifecycleProjectEvaluator.evaluate(Lifecycle
ProjectEvaluator.java:61)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:465)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:76)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuil
dConfigurer.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default
GradleLauncher.java:142)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradle
Launcher.java:113)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLaun
cher.java:81)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildCon
troller.run(InProcessBuildActionExecuter.java:64)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav
a:33)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav
a:24)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:26)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
        at org.gradle.api.internal.Actions$RunnableActionAdapter.execute(Actions
.java:171)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.
execute(CommandLineActionFactory.java:201)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.
execute(CommandLineActionFactory.java:174)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(
CommandLineActionFactory.java:170)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(
CommandLineActionFactory.java:139)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep
ortingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep
ortingAction.java:22)
        at org.gradle.launcher.Main.doAction(Main.java:48)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at org.gradle.launcher.Main.main(Main.java:39)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBoots
trap.java:50)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.j
ava:32)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:26)
        at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.ja
va:33)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: org.gradle.listener.ListenerNotificationException: Failed to notify p
roject evaluation listener.
        at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:90)
        at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:30)
        at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocat
ionHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy8.afterEvaluate(Unknown Source)
        at org.gradle.configuration.LifecycleProjectEvaluator.notifyAfterEvaluat
e(LifecycleProjectEvaluator.java:67)
        ... 29 more
Caused by: org.gradle.api.artifacts.UnknownConfigurationException: Configuration
 with name 'default' not found.
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration
Container.createNotFoundException(DefaultConfigurationContainer.java:94)
        at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(
DefaultNamedDomainObjectCollection.java:184)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration
Container.getByName(DefaultConfigurationContainer.java:84)
        at org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependen
cy.getProjectConfiguration(DefaultProjectDependency.java:72)
        at org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependen
cy_Decorated.getProjectConfiguration(Unknown Source)
        at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.getPropert
y(BeanDynamicObject.java:146)
        at org.gradle.api.internal.BeanDynamicObject.getProperty(BeanDynamicObje
ct.java:102)
        at org.gradle.api.internal.CompositeDynamicObject.getProperty(CompositeD
ynamicObject.java:78)
        at org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependen
cy_Decorated.getProperty(Unknown Source)
        at com.android.build.gradle.BasePlugin$_ensureConfigured_closure92.doCal
l(BasePlugin.groovy:1252)
        at com.android.build.gradle.BasePlugin.ensureConfigured(BasePlugin.groov
y:1250)
        at com.android.build.gradle.BasePlugin$ensureConfigured.callCurrent(Unkn
own Source)
        at com.android.build.gradle.BasePlugin.resolveDependencyForConfig(BasePl
ugin.groovy:1214)
        at com.android.build.gradle.BasePlugin$resolveDependencyForConfig.callCu
rrent(Unknown Source)
        at com.android.build.gradle.BasePlugin.resolveDependencies(BasePlugin.gr
oovy:1164)
        at com.android.build.gradle.BasePlugin$resolveDependencies.callCurrent(U
nknown Source)
        at com.android.build.gradle.AppPlugin.doCreateAndroidTasks(AppPlugin.gro
ovy:196)
        at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.gro
ovy:242)
        at com.android.build.gradle.BasePlugin$_apply_closure1.doCall(BasePlugin
.groovy:190)
        at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(Cl
osureBackedMethodInvocationDispatch.java:40)
        at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(Cl
osureBackedMethodInvocationDispatch.java:25)
        at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java
:81)
        ... 33 more


BUILD FAILED

Total time: 2.947 secs

EDIT 2:

project structure:

MyProject
- MyApp
  -- build.gradle
  -- libraries
     --- projectLib
         --- build.gradle
- build.gradle
- settings

settings.gradle

include ':MyApp'
include ':libraries:projectLib'
// also tried to define projectLib as modul:
// project(':projectLib').projectDir = new File('MyApp/libraries/projectLib')

build.gradle of MyApp:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'
dependencies {
    compile files('libs/android-support-v4.jar')
    compile project(':libraries:projectLib') // adding this line 
                                             // --> build failed
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }

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

build.gradle of projectLib:

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

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

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }

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

EDIT 3:

settings.gradle

include ':MyApp'
include ':MyApp:libraries:projectLib'

build.gradle of MyApp:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.2'
    }
}
apply plugin: 'android'
dependencies {
    compile 'com.android.support:support-v4:13.0.0'
    compile project(':MyApp:libraries:projectLib')
}

build.gradle of projectLib:

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

dependencies {
    compile 'com.android.support:support-v4:13.0.0'
}

解决方案

I think you are specifying the path to your library project incorrectly. If I'm interpreting your project layout correctly the line should be the following:

compile project(':MyApp:libraries:projectLib')

When you start a project path with ':' you are making an absolute path from the root project and then basically just writing a path with ':' instead of '/'. In this case your projectLib module is in the directory MyProject/MyApp/libraries/projectLib, and MyProject is where your settings.gradle is, making it your root project. So swapping in colons for slashes gets you the line I wrote above.

You'll need to modify your settings.gradle to include the full path as well:

include 'MyApp:libraries:projectLib'

Finally, if you want to save some typing for stuff like your repository configuration you can put it in an allproject block in your root project.

allprojects {
    repositories {
        mavenCentral()
    }
}

A lot of nice little tips like that covered in the multi-module docs.

这篇关于build.gradle和项目库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆