14

我有一个 hello world 全屏 android studio 1.5.1 应用程序,我添加了一个 gradle/eclipse-mars 子项目。除了将 include ':javalib' 添加到 settings.gradle 之外,没有修改其他文件。添加项目库依赖项

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

到根构建构建文件并从命令行运行 gradle,得到:

  • 其中:构建文件 'D:\AndroidStudioProjects\AndroidMain\build.gradle' 行:23

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

    在 org.grad le.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@46 3ca82f 上找不到参数 [project ':javalib'] 的方法 compile()。

将 java 插件添加到根构建文件没有帮助。

我不认为它在错误的地方

根项目和添加的子项目都有 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的建议,这里是一个处女 android studio 项目和一个处女 gradle/eclipse 项目。没有对这些文件进行任何编辑。如果您选择接受它,您的任务是让 android 应用程序轻松访问 java 项目类(即 new Library(); 在 MainActivity.onCreate() 中将编译和运行)。我不在乎 java 项目在哪里。理想情况下,两个来源都将存在于两个 ide 中。

尝试这样做也失败了。说: > 找不到:virginjavaproject,但目录确实存在。

编辑:真正起作用的是 RaGe 对原始 android 项目的拉取请求。

4

5 回答 5

4

你已经有了

compile project(':javalib') 

在您的:app项目中,您不必也从根 build.gradle 注入依赖项。如果您仍想从 root 执行此build.gradle操作,则正确的方法是:

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

处女 android 工作室负责人是有效的。

于 2016-01-23T15:19:37.153 回答
1

我们有 2 个名为“build.gradle”的文件。确保您已将“编译代码”复制到“app”文件夹内的 build.gradle 文件中

于 2017-05-18T14:48:05.820 回答
0

正如@peter-niederwieser 所说

构建脚本将构建脚本依赖项(即构建本身的依赖项;通常这意味着 Gradle 插件)与常规依赖项(即要编译/运行的代码的依赖项)混合在一起。后者需要进入 dependencies { ... },而不是 buildscript { dependencies { ... } }。除了类路径依赖项之外的所有内容都是常规依赖项。

也看看这个:找不到参数 Gradle 的方法 compile()

于 2016-01-23T05:13:06.643 回答
0

只需将其粘贴到 build.gradle(Project:"Your prject name")

 // 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
}
于 2016-06-18T09:03:22.720 回答
0

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

compile project(path: ':MyLib')
于 2017-02-21T02:52:49.037 回答