はじめに
最近、お仕事でUnityとかcocos2dxのプロジェクトを触る機会があるのですが大抵の場合Eclipse形式のプロジェクト(or Unityプロジェクト)です。
Eclipse形式のプロジェクトで困るポイントの一つがGoogle Play Serviceの導入です。
Android SDKに含まれているGoogle Play Serviceのライブラリプロジェクトが全部盛りの超巨大ライブラリなせいで、こいつをそのまま使うとあっという間にメソッド数の64K制限に引っかかってきます。
この問題を回避するため、Android Studio(Gradle)では機能毎に分割されたAARファイルを使うことができるのですが、残念ながらライブラリプロジェクトは用意されていません。
ただ、AARはJarファイルとリソースをひとまとめにした普通のZipファイルなのでこいつを解凍し、Eclipseプロジェクトのディレクトリ構成にしてやればEclipseでライブラリプロジェクトとしてImportすることができます。
AARファイルを入手する
Android SDKがインストールされていない場合は、Android SDKをインストールしてください。
AARファイルを使用するためにはSDK ManagerでGoogle Repository
をインストールします。
AARファイルは$SDK_ROOT/extras/google/m2repository/com/google/android/gms/play-services-[モジュール名]/[バージョン]
に格納されています。
今回はplay-services-baseの7.5.0を例に説明します。
まずは以下のファイルを適当な作業フォルダにコピーして拡張子をzip
に変更、解凍します。
$SDK_ROOT/extras/google/m2repository/com/google/android/gms/play-services-base/7.5.0/play-services-base-7.5.0.aar
AARの中身をEclipseプロジェクトの構成に変更する
解凍したファイルのディレクトリ構成は次のようになっています。
play-services-base-7.5.0
├── AndroidManifest.xml
├── R.txt
├── classes.jar
├── proguard.txt
└── res
├── color
├── drawable
...
これをEclipseのライブラリプロジェクトの構成にするには
-
libs
フォルダとsrc
フォルダを作成する -
classes.jar
をlibs
フォルダ配下に移動する -
R.txt
は不要なので削除する -
project.properties
というファイルを作り、android.library=true
の1行を追加する
これだけです。最終的に以下の構成になります。
play-services-base-7.5.0
├── AndroidManifest.xml
├── libs
│ └── classes.jar
├── proguard.txt
├── project.properties
├── res
│ ├── color
│ ├── drawable
│ ...
└── src
android.library=true
このディレクトリをEclipseからAndroid ProjectとしてImportすることができます。
また、UnityのPlugin/Android
フォルダ配下に入れることも可能なはずです。
スクリプト
やっていることは非常に簡単なのでPythonでスクリプトにしてみました。ただし、Mac OS Xでしか動作は確認してません。
また、Android SDKにコマンドのパスが通っている必要があります。
Gist: play_service_proj_builder.py
Gistからローカルにコピペかダウンロードしてきて実行します。
使い方は作成するモジュール名とバージョンを指定するだけです。
python play_service_proj_builder.py <module name> <version>
今回のplay-services-base 7.5.0の場合には次のようになります。
python play_service_proj_builder.py base 7.5.0
なお、Android SDKにGoogle Repositoryがインストールされていない場合には勝手にインストールします。あしからず。