Posted at

ルートフォルダの異なるプロジェクト/moduleをimportせずに参照する

More than 3 years have passed since last update.


1 現状

svn+eclipseで,こんな構成で管理していたとします。

branch_MyLibs

+AndroidLibA

+JavaLibB

branch_MyApp1

+AndroidApp1(AndroidLibA/JavLibBを参照)

branch_MyApp2

+AndroidApp2(AndroidLibA/JavLibBを参照)

eclipseであれば、workspaceを作成してそれぞれをimportしていけばいいですが、AndroidStudioでimport Moduleをすると、ライブラリプロジェクトそのものがコピーされてきてしまいます。

コピーされてきてしまうと、AndroidApp1のJavaLibBのソースコードを変更しても、当然ながら、AndroidApp2のJavaLibBは変わりません。

これでは意味が無いので、なんとかただ「参照」する方法がないか、探しました。

結果、出来たのでその方法を。


2 前提

AndroidStudio 1.3を使用。

それぞれのプロジェクトはAndroidStudio化しているものとする。

以下サンプル。

branch_MyLibs_AndroidStudio

+AndroidLibA

+JavaLibB

branch_MyApp1_AndroidStudio

+AndroidApp1

簡単な方法としては、いったんAndroidApp1をimportしてAndroidSudioプロジェクトに変更させて、出来たライブラリプロジェクトなどを、上記プロジェクト構成になるよう移動させることかな。

移動させた後はいったんビルドが通らなくなるがそのままでOK.(移動前はビルド通ることを確認してね)


3 手順


(1) settings.gradleを書き換える


settings.gradle

include ':AndroidLibA'

include ':JavaLibB'

project(':AndroidLibA').projectDir = new File('../branch_MyLibs_AndroidStudio/AndroidLibA')
project(':JavaLibB').projectDir =new File('../branch_MyLibs_AndroidStudio/JavaLibB')


相対パスは実際のパスに合わせて下さい。


(2) build.gradleのdependenciesを書き換える


build.gradle(app)

dependencies {

compile project(':AndroidLibA')
compile project(':JavaLibB')
}


以上でOK。