2016-01-23 87 views
9

我有一个hello world全屏android studio 1.5.1应用程序,我添加了一个gradle/eclipse-mars子项目。没有其他文件被修改,除了在settings.gradle中添加':javalib'。加入project lib dependencyGradle无法找到方法编译()的参数

project(':app') { 
    dependencies { 
     compile project(':javalib') // line 23 
    } 
} 

在命令行根构建构建文件并运行gradle这个,得到:

  • 其中: 构建文件“d:\ AndroidStudioProjects \ AndroidMain \的build.gradle 'line:23

  • 出错了: 评估根项目“AndroidMain”时出现问题。

    Could not find method compile() for arguments [project ':javalib'] on org.grad le.api.interna[email protected]46 3ca82f.

adding the java plugin到根构建文件并没有帮助。我不认为它在wrong place

根项目和添加的子项目都有gradle包装。

任何指针将不胜感激。

感谢

编辑:澄清,根构建文件是:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 
buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.5.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 
allprojects { 
    repositories { 
     jcenter() 
    } 
    task hello << { task -> println "I'm $task.project.name" } 
} 

project(':app') { 
    dependencies { 
     //compile project(':javalib') // causes problems 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

和应用程序构建文件是:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "acme.androidmain" 
     minSdkVersion 22 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    //compile project(':javalib') // use :javalib:jar? 
    //testCompile project(':javalib') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:support-v4:23.1.1' 
} 

编辑:这个练习的整个目的是将核心java代码放入android项目中。目前核心代码是独立的gradle/eclispe项目。我在Android项目中有一个批处理,它执行gradle -p standaloneprojectdir/jar并将jar复制到libs /中。

我只是虽然会有一个更简单的方法,而不是发布该jar,并从存储库中获取它,因为这一切都在我的电脑上完成。

这将是不错的所有代码直播和只是做一个构建:(

编辑:按RaGe的建议,这里是一个virgin android studio projectvirgin gradle/eclipse project没有编辑已经做了这些文件。你应该选择接受它,是让android应用程序轻松访问java项目类(即新的Library();在MainActivity.onCreate()中将编译并运行)。我不关心java项目在哪里理想情况下,两个来源都将是live in both。

试图this也失败。说:>找不到:virginjavaproject,但目录确实存在。

编辑:实际工作的是RaGe对virgin android project的拉动请求。

+0

Java插件是不适合的Android项目,但是你应该有Android插件的地方,这增加编译配置。您是否使用Android Studio创建项目? – RaGe

+0

你可以显示你的项目文件夹结构请 – RaGe

+0

是的。应用程序构建文件中有一个。请参阅编辑。 –

回答

3

你已经有

compile project(':javalib') 

:app项目,你不必也从根的build.gradle注入的依赖。如果你仍然想从根build.gradle做,做正确的做法是:

configure(':app') { 
    dependencies { 
     compile project(':javalib') // causes problems - NOT ANYMORE! 
    } 
} 

virgin android studio头是什么工作。

+0

我确实在应用程序构建文件中进行了编译。删除它并没有帮助。 –

+1

从应用程序构建文件中删除编译,并且用根编译文件中的configure(){...}将我的项目(){...}替换为编译行仍然失败。配置的文档在哪里? –

+0

你可以显示你的settings.gradle请吗?配置[doc在这里](https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:configure(java.lang.Iterable,groovy.lang .closure)) – RaGe

0

如前所述通过@peter-niederwieser

The build script is mixing up buildscript dependencies (i.e. dependencies of the build itself; typically this means Gradle plugins) with regular dependencies (i.e. dependencies of the code to be compiled/run). The latter need to go into dependencies { ... }, not into buildscript { dependencies { ... } }. Everything but the classpath dependencies are regular dependencies.

也看看这个:Could not find method compile() for arguments Gradle

+1

依赖项不在buildscript中。 –

0

简单地粘贴上的build.gradle(项目: “你的名字prject”)

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

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

    // NOTE: Do not place your application dependencies here; they belong 
    // in the individual module build.gradle files 
    } 
} 

    allprojects { 
repositories { 
    jcenter() 
    } 
} 

task clean(type: Delete) { 
delete rootProject.buildDir 
} 
0

我有这个问题,但我自己的图书馆。正确编译的方法是:

compile project(path: ':MyLib') 
1

我们有2个名为“build.gradle”的文件。 确保你在的build.gradle文件里面复制你的“编译代码” “应用程序”文件夹

相关问题