Help us understand the problem. What is going on with this article?

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

More than 5 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。

le_skamba
Android/iPhoneアプリ開発者。その前はゲームプログラマをしてました。Windowsアプリも幾つか作りました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away