11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Play Serviceの分割AARからEclipseのライブラリプロジェクトを作ってメソッド数制限を回避する

Last updated at Posted at 2015-08-12

はじめに

最近、お仕事で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のライブラリプロジェクトの構成にするには

  1. libsフォルダとsrcフォルダを作成する
  2. classes.jarlibsフォルダ配下に移動する
  3. R.txtは不要なので削除する
  4. 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
project.properties
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がインストールされていない場合には勝手にインストールします。あしからず。

11
9
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?