2016-10-13 11 views
0

私は複数のアンドロイドのアプリケーションとライブラリを含むgradleのビルドセットアップを持っています。プロジェクト構造のGradle:ネストされたプロジェクトからクラスパスの依存関係が解決されない

サンプル:

root (Project Root) 
| android 
    | module1 (Android Application) 
    | module2 (Android Library) 
| ios (in the future) 

は、私はいくつかのサブプロジェクトに特定のGradleプラグインを適用したいです。 (このようなだけアンドロイドサブプロジェクトにアンドロイドのGradleプラグインとして) 従って私は2つのAndroidのサブプロジェクトに:android -> build.gradleにおけるクラスパス依存し、プラグインの宣言を追加した:問題はGradleのは、AndroidのGradleを発見できないことである
:android:module1 -> build.gradle -> apply plugin: 'com.android.application'

:android:module2 -> build.gradle -> apply plugin: 'com.android.library' プラグイン:

Error:(1, 1) A problem occurred evaluating project ':Shoppr:presentation'. Plugin with id 'com.android.application' not found.

はまた、それが他のいくつかの質問(Gradleのバージョン3.1、アンドロイドのGradleプラグインのバージョン:2.2.1)のように、バージョンの問題ではありません:root -> build.gradle:android:moduleX -> build.gradleにクラスパスの依存関係を定義すると、期待どおりすべてが機能しているので、 。

:ルート - > build.gradle

allprojects { 
    repositories { 
    mavenCentral() 
    jcenter() 
    } 
} 

:アンドロイド - > build.gradle

buildscript { 
    repositories { 
    jcenter() 
    } 

    dependencies { 
    classpath 'com.android.tools.build:gradle:2.2.1' <-- Should only be applied for android project 
    } 
} 

:アンドロイド:Module1を - > build.gradle

apply plugin: 'com.android.application' --> Plugin with id 'com.android.application' not found. 

:アンドロイド:module2 - > build.gradle

apply plugin: 'com.android.library' 

答えて

0

私はこのようなフォルダ構成を見てきました。特に、androidフォルダとwebフォルダを含むGoogleサンプルプロジェクトがあります。あなたが試みることができるのは、projectフォルダとしてandroidフォルダを使用してプロジェクトをインポートすることです。これは、プロジェクト用に2つのフォルダがあれば、gradosを使用してIosとWebを構築できないためです。

プロジェクトを閉じて、プロジェクトルートとしてアンドロイドフォルダを使用してプロジェクトを閉じ直してください。この方法では、gradleはうまく動くはずです。私のプロジェクトフォルダは、私もWebとアンドロイドの両方のプロジェクトを1つのリポジトリに持っていますが、アンドロイドスタジオでビルドしている間、アンドロイドのプロジェクトルートとしてアンドロイドフォルダを使用しています。

+0

ありがとうございました。私はhteモジュールの依存関係をきめ細かく制御するためにプロジェクトを分割しました。元の問題は解決しませんが、私はあなたの答えを受け入れたものとしてマークします。 – chris115379

関連する問題