スポンサーリンク

[Android Studio]jar化して他プロジェクトで利用する

スポンサーリンク

なんだか滅茶苦茶つまってしまったので残します.
根本原因は解決していない・・・

Intellijでは,他モジュールに依存する場合,シンボルを見つけられないことがある

なぜ?これは時間がなくて対策を見つけることが出来ませんでした.一応途中まであっていると思うので備忘録的に残しておく.

経緯としては,Android Studioで作成したクラスをサーバー側プログラムでも使用したいので,サーバープログラム⇒Android appに依存性を持たせたかった.

[Project Setting]⇒[Android studioの*.imi]
でプロジェクト内にモジュールを追加できます.

依存させたい側(今回はServer側モジュール)のDependenciesで依存される側(Android App)のモジュールへの依存性を追加します.

これで[OK]ボタンを押すと再読み込みが始まります.ここで,新しいモジュール内のクラスが使用できない場合は,Android AppがSourceとして認識されないので,srcにSources属性を付与します.

これで少なくともIntellijのInspectionは通過し,問題なくAndroid Appのクラスを使用できるようになります.しかしビルドしようとすると・・・・

java: package {package name} does not exist
java: cannot find symbol
   symbol:   class {class name}
   location: class {class location}

のようなエラーがでて,ビルドできません.どうしてなんでしょうか?どなたかわかる方教えてください・・・・.下記のような対策を行っても治りませんでした.

上記の対策一般

cannot find symbolが発生した場合には,一般に以下の手法が有効なようです.

①Cacheを一度消去する

②Build > Rebuild Project を行う

なお,私の場合なりませんでした.

Android Studioのクラスをjar化してライブラリとして参照する

結局,手間でしたが上記の手法を取ることにしました.

Android ライブラリを作成する  |  Android Studio  |  Android Developers
Android ライブラリの作成方法について説明します。

アプリ モジュールをライブラリ モジュールに変換するの章を参考にしましょう.

手順としては,Project直下にあるappモジュールのbuild.gradleに以下の変更を加えます.
①pluginをcom.android.libraryに変更する
②applicationIdをコメントアウトする

これでGradle > buildを行ってください.ただし,一部jar化するにあたって,Rライブラリに対してswitchは使えないと言われたりすることがありますが,AndroidのSuggestion通りに修正すれば無事build successできます.

作製されたファイルは

app/build/outputs/aar/xxx.aar

に存在しています.aarはandroid archive の略称のようで,単純なzipファイルのようです.これをunzipで解凍するとclasses.jarが中に存在しますので,これを適当な箇所において,それをサーバー側のモジュールでライブラリとして追加しましょう.

Gradleってなんだか凄く苦手・・・.Mavenのほうが分かりやすいです.またいつかしっかり勉強して使いこなせるようになろう・・.正直わざわざ解凍して配置して,っていうのは面倒くさいので,ここを一括でできるようになりたいね・・・・.

タイトルとURLをコピーしました