![](/img/trans.png)
[英]Difference between build.gradle (Project) and build.gradle (Module)
[英]build.gradle and project libs
我在android studio中有一個使用項目庫的項目。 我的問題是gradle文件的配置。
我真的嘗試了很多在這里發布的解決方案( 在模塊中定義modul作為modul , sherlock示例 , 設置正確的源集 ......)但是我總是得到相同的錯誤(只要我添加lib debendency就可以了我的應用build.gradle文件):
A problem occurred configuring project ':MyApp'.
> Failed to notify project evaluation listener.
> Configuration with name 'default' not found.
我已經從命令行進行了清理和構建,但這沒有任何效果。 是否有可能這只是Android Studio早期版本中的一個錯誤( 如本文中的評論 )? 或者我會錯過什么?
我目前的Android Studio版本:0.1.6和我的操作系統:Windows 7,64位
請幫助我,我是新手,我以前從未使用過maven或ant。
編輯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
編輯2:
項目結構:
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')
MyApp的build.gradle:
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']
}
}
}
projectLib的build.gradle:
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']
}
}
}
編輯3:
settings.gradle
include ':MyApp'
include ':MyApp:libraries:projectLib'
MyApp的build.gradle:
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')
}
projectLib的build.gradle:
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'
}
我認為您正在錯誤地指定庫項目的路徑。 如果我正確地解釋您的項目布局,那么該行應該如下:
compile project(':MyApp:libraries:projectLib')
當您使用':'啟動項目路徑時,您將從根項目創建絕對路徑,然后基本上只使用':'而不是'/'編寫路徑。 在這種情況下,projectLib模塊位於MyProject / MyApp / libraries / projectLib目錄中,MyProject是settings.gradle所在的位置,使其成為您的根項目。 因此,用冒號換掉斜線可以獲得我上面寫的那條線。
您需要修改settings.gradle以包含完整路徑:
include 'MyApp:libraries:projectLib'
最后,如果您想為存儲庫配置等內容保存一些類型,可以將它放在根項目中的allproject
塊中。
allprojects {
repositories {
mavenCentral()
}
}
很多很棒的小技巧,如多模塊文檔中所述。
經過長時間的研究,幾個設置和Josh的幫助,我解決了上面問題中描述的問題。
現在我的解決方案:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.