14

gradle/eclipse-mars サブプロジェクトを追加した Hello World フルスクリーン Android Studio 1.5.1 アプリがあります。include ':javalib' を settings.gradle に追加したことを除いて、他のファイルは変更されていません。プロジェクト lib 依存関係の追加:

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 で、引数 [プロジェクト ':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プロジェクトのバッチを持っています。

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

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

編集: RaGeの提案に従って、ここに未使用の android studio プロジェクト未使用の gradle/eclipse プロジェクトがあります。これらのファイルは編集されていません。受け入れることを選択した場合の使命は、Android アプリが Java プロジェクト クラスに簡単にアクセスできるようにすることです (つまり、MainActivity.onCreate() の new Library(); がコンパイルされて実行されます)。Java プロジェクトがどこにあるかは気にしません。理想的には、両方のソースが両方の ideでライブになります。

これを試みても失敗します。> :virginjavaproject が見つかりませんでしたが、ディレクトリは存在します。

編集:実際に機能したのは、処女のAndroidプロジェクトへのRaGeのプルリクエストでした。

4

5 に答える 5

4

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

compile project(':javalib') 

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

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

ヴァージン アンドロイド スタジオヘッドが機能したものです。

于 2016-01-23T15:19:37.153 に答える
1

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

于 2017-05-18T14:48:05.820 に答える
0

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

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

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

于 2016-01-23T05:13:06.643 に答える