「別プロジェクトのモジュールを参照するには」の版間の差分
(→モジュールの build.gradleを変更する) |
(→settings.gradleを変更する) |
||
(1人の利用者による、間の27版が非表示) | |||
3行: | 3行: | ||
− | + | '''AndroidStudioでは、ライブラリプロジェクトを別のプロジェクトからインポートすることなく参照することができません。''' | |
同一プロジェクト内にモジュールを並べ、モジュールをアプリやライブラリとみなせばよいのですが、プロジェクトが VCSに登録する | 同一プロジェクト内にモジュールを並べ、モジュールをアプリやライブラリとみなせばよいのですが、プロジェクトが VCSに登録する | ||
単位なのでややこしいことになりそうです。 | 単位なのでややこしいことになりそうです。 | ||
− | + | 本来 ローカルの Maven リポジトリなどを作り、間接参照するのが筋なのかもしれませんが、はっきり言って大袈裟です。 | |
− | + | ||
− | + | 実はAndroidStudioのGUIの操作だけでは不可能ですが、Gradleのファイルをわずかに変更するだけで、プロジェクトにまたがるモジュールの参照は可能です。 | |
+ | |||
+ | しかもとても簡単です。 | ||
+ | |||
+ | 以下では '''FreyjaLibrary''' プロジェクトの '''freyja''' モジュールを参照する例を示します。 | ||
==settings.gradleを変更する== | ==settings.gradleを変更する== | ||
+ | |||
+ | まずモジュールを参照する側のプロジェクトの settings.gradle を変更します。 | ||
settings.gradle はビルドプロセスの初期化を行う部分ですが、プロジェクトに属するモジュールを決定するのに | settings.gradle はビルドプロセスの初期化を行う部分ですが、プロジェクトに属するモジュールを決定するのに | ||
用いられています。 | 用いられています。 | ||
− | + | settings.gradleは AndroidStudioでは プロジェクトツールウィンドウが Android View の場合、Gradle Scripts の中にありますので | |
+ | それを変更してください。 | ||
− | 通常、settings.gradle | + | |
+ | 通常、settings.gradle では | ||
include ':app', ':lib1' | include ':app', ':lib1' | ||
− | など、include | + | など、include メソッドで、プロジェクトに属するモジュールを指定します。これをプロジェクトツリーといいます。 |
− | + | ||
− | + | この場合、プロジェクトに属するモジュールは'''プロジェクトのフォルダの直下'''にあると仮定されています。 | |
− | + | ||
− | + | これを以下のように変更すると'''、任意の場所にあるモジュールをプロジェクトツリーに含めることができます'''。 | |
− | + | ||
+ | include ':app', ':lib1'''', ':freyja'''' | ||
+ | '''project(':freyja').projectDir = new File(settingsDir, '../../libs/FreyjaLibrary/freyja')''' | ||
+ | |||
+ | ちなみに、gradle ではモジュールのことを project、プロジェクトのことを root project といいます。 | ||
+ | つまり '''project(':freyja')''' はモジュールを指してます。 | ||
+ | |||
+ | '''settingsDir''' は setteings.gradle の在るフォルダ(プロジェクトのあるフォルダ)です。 | ||
+ | 絶対パスでモジュールの場所を指定してもかまいませんが、たいていは settingsDir に対する相対で指定した方が便利でしょう。 | ||
==モジュールの build.gradleを変更する== | ==モジュールの build.gradleを変更する== | ||
− | あるモジュールが、settings.gradle | + | あるモジュールが、settings.gradle に追加したモジュールを使いたい場合、 |
− | そのモジュールの build.gradle の dependencies | + | そのモジュールの build.gradle の dependencies に以下の太字の行を追加します。 |
dependencies { | dependencies { | ||
43行: | 56行: | ||
compile 'com.android.support:appcompat-v7:23.0.1' | compile 'com.android.support:appcompat-v7:23.0.1' | ||
compile 'com.android.support:design:23.0.1' | compile 'com.android.support:design:23.0.1' | ||
− | compile project(':freyja') | + | '''compile project(':freyja')''' |
} | } | ||
− | + | 追加したモジュールが別プロジェクトの場合、'''IDE の Project Structure のDependencies タブでは何故か編集できない'''ので注意してください。 | |
− | + | 直接ファイルを編集して下さい。 | |
− | + | ||
+ | この後、プロジェクトをビルドすると、プロジェクトにモジュール freyja が加わり、プロジェクトツールウィンドウやProject Structureからも見えるようになります。 | ||
+ | 実際 この時点で freyja モジュールはプロジェクトの一部になっており、編集も可能です。 | ||
− | + | モジュール freyja はそれを使いたいモジュールから見えるようになり、クラスのインポートなども通常通り行えます。 | |
− | + | これで、ライブラリを変更しても、ライブラリをコンパイルして、 *.aar を利用しているプロジェクトに配布しなおす必要はなくなります。 | |
− | + |
2015年11月9日 (月) 23:21時点における最新版
メインページ>コンピュータの部屋#Android>AndroidStudio Tips
AndroidStudioでは、ライブラリプロジェクトを別のプロジェクトからインポートすることなく参照することができません。
同一プロジェクト内にモジュールを並べ、モジュールをアプリやライブラリとみなせばよいのですが、プロジェクトが VCSに登録する 単位なのでややこしいことになりそうです。
本来 ローカルの Maven リポジトリなどを作り、間接参照するのが筋なのかもしれませんが、はっきり言って大袈裟です。
実はAndroidStudioのGUIの操作だけでは不可能ですが、Gradleのファイルをわずかに変更するだけで、プロジェクトにまたがるモジュールの参照は可能です。
しかもとても簡単です。
以下では FreyjaLibrary プロジェクトの freyja モジュールを参照する例を示します。
settings.gradleを変更する
まずモジュールを参照する側のプロジェクトの settings.gradle を変更します。
settings.gradle はビルドプロセスの初期化を行う部分ですが、プロジェクトに属するモジュールを決定するのに 用いられています。
settings.gradleは AndroidStudioでは プロジェクトツールウィンドウが Android View の場合、Gradle Scripts の中にありますので それを変更してください。
通常、settings.gradle では
include ':app', ':lib1'
など、include メソッドで、プロジェクトに属するモジュールを指定します。これをプロジェクトツリーといいます。
この場合、プロジェクトに属するモジュールはプロジェクトのフォルダの直下にあると仮定されています。
これを以下のように変更すると、任意の場所にあるモジュールをプロジェクトツリーに含めることができます。
include ':app', ':lib1', ':freyja' project(':freyja').projectDir = new File(settingsDir, '../../libs/FreyjaLibrary/freyja')
ちなみに、gradle ではモジュールのことを project、プロジェクトのことを root project といいます。 つまり project(':freyja') はモジュールを指してます。
settingsDir は setteings.gradle の在るフォルダ(プロジェクトのあるフォルダ)です。 絶対パスでモジュールの場所を指定してもかまいませんが、たいていは settingsDir に対する相対で指定した方が便利でしょう。
モジュールの build.gradleを変更する
あるモジュールが、settings.gradle に追加したモジュールを使いたい場合、 そのモジュールの build.gradle の dependencies に以下の太字の行を追加します。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:23.0.1' compile project(':freyja') }
追加したモジュールが別プロジェクトの場合、IDE の Project Structure のDependencies タブでは何故か編集できないので注意してください。 直接ファイルを編集して下さい。
この後、プロジェクトをビルドすると、プロジェクトにモジュール freyja が加わり、プロジェクトツールウィンドウやProject Structureからも見えるようになります。 実際 この時点で freyja モジュールはプロジェクトの一部になっており、編集も可能です。
モジュール freyja はそれを使いたいモジュールから見えるようになり、クラスのインポートなども通常通り行えます。
これで、ライブラリを変更しても、ライブラリをコンパイルして、 *.aar を利用しているプロジェクトに配布しなおす必要はなくなります。