web-dev-qa-db-ja.com

Gradleは引数のメソッドcompile()を見つけることができませんでした

hello world full screen Android studio 1.5.1 gradle/Eclipse-marsサブプロジェクトを追加したアプリ。設定にinclude:javalib 'を追加することを除いて、他のファイルは変更されませんでした。 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プロジェクトです。 gradle -p standaloneprojectdir/jarを実行し、jarをlibs /にコピーしたAndroidプロジェクトにバッチがあります。

jarを公開してリポジトリから取得するよりも簡単な方法があると思いますが、これはすべて私のPCで行うためです。

すべてのコードをライブにして、ビルドを実行するだけでいいです:(

編集: RaGe の提案に従って、ここに virgin Android studio projectvirgin gradle/Eclipse project 。これらのファイルの編集は行われていません。受け入れることを選択した場合、Androidアプリに簡単にアクセスしてJavaプロジェクトクラス(つまり、新しいLibrary(); MainActivity.onCreate()でコンパイルおよび実行されます)。Javaプロジェクトの場所。理想的には、両方のソースがlive両方のIDEで。

this の試行も失敗します。言う:>:virginjavaprojectが見つかりませんでしたが、ディレクトリは存在します。

編集:実際に動作したのは、RaGeによる virgin Android project へのプルリクエストでした。

11
Ray Tayek

あなたはすでに持っています

compile project(':javalib') 

:appプロジェクトでは、ルートbuild.gradleから依存関係を注入する必要もありません。それでもルートbuild.gradleから実行したい場合、正しい方法は次のとおりです。

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

virgin Android studio headが機能しました。

4
RaGe

「build.gradle」という名前の2つのファイルがあります。 "app"フォルダー内にあるbuild.gradleファイルに「コンパイルコード」をコピーしたことを確認してください

1
Mahdi

@ peter-niederwieser で述べたように:

ビルドスクリプトは、ビルドスクリプトの依存関係(つまり、ビルド自体の依存関係;通常、これはGradleプラグインを意味します)と通常の依存関係(つまり、コンパイル/実行するコードの依存関係)を混同しています。後者は、ビルドスクリプト{依存関係{...}}ではなく、依存関係{...}に入る必要があります。クラスパスの依存関係以外はすべて、通常の依存関係です。

これもご覧ください: 引数Gradleのメソッドcompile()が見つかりませんでした

0
TejjD

これをbuild.gradle(Project: "Your project 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
}
0
ebin Francis

私はこの問題を抱えていましたが、自分のライブラリを使用していました。正しくコンパイルする方法は次のとおりです。

compile project(path: ':MyLib')
0
Ari