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

UnityでGooglePlayServicesを入れるにはPlayServicesResolver(unity-jar-resolver)が便利

More than 3 years have passed since last update.

前置き

Unity+Androidで、Google Play Servicesのライブラリを使いたい場合、
google-play-services_libを丸ごと入れてしまうと、メソッド数が多すぎて
65K超えエラーになることが良くあります。

こんな感じのエラーですね。
http://developer.android.com/intl/ja/tools/building/multidex.html

trouble writing output:
Too many field references: 131000; max is 65536.
You may try using --multi-dex option.

AndroidStudioでビルドする場合は、Google Play Servicesのライブラリの中から、
必要なAPIのみをbuild.gradleで指定して追加することができます。
https://developers.google.com/android/guides/setup#split

しかし、Unityのビルドではbuild.gradleを使用することはできないため、
Unityで同じことをするにはどうすれば良いのかという話です。

本題

GooglePlayServicesの中から、必要なAPIのみを追加するためのUnityライブラリを
Googleが公開してくれています。

PlayServicesResolver (unity-jar-resolver)
https://github.com/googlesamples/unity-jar-resolver

これはGoogle公式の以下のUnityプラグインに含まれているため、
これらの機能をUnityで使用したい場合は、公式プラグインをそのまま使えば良いです。

PlayServicesResolverの使い方

上記のリポジトリを持ってきて、play-services-resolver-x.x.x.unitypackageをインポートします。

SampleDependencies.csというサンプルが用意されているので、
実装方法はこれを見ればだいたいわかるかと思います。

試しにGoogle Adsのライブラリを追加するソースを追加してみます。

AdsDependencies.cs
using Google.JarResolver;
using UnityEditor;

[InitializeOnLoad]
public static class AdsDependencies {

    static AdsDependencies() {

        PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(
            "AdsSample", EditorPrefs.GetString("AndroidSdkRoot"), "ProjectSettings");

        svcSupport.DependOn("com.google.android.gms", "play-services-ads", "8+");
    }
}

こんな感じで、PlayServicesSupport#DependOn を必要なだけ呼び出せばOKです。
3つの引数は、見ての通りbuild.gradleで指定する際のコロン区切りの値です。
ここに書いてあるやつです。)

パッケージをインポートした時に、Assets -> Google Play Services というメニューが追加されています。
(Build SettingsでAndroidにSwitchしていないと表示されません)

image

Resolve Client Jars を実行すると、指定したライブラリが依存関係を含めて追加されます。
なお、上記メニューの Settings -> Enable Background resolution がONになっていると、
Resolve Client Jars を実行しなくても勝手に追加してくれます。(デフォルトON)

さて、実行結果ですが、以下のようにaarとjarファイルが、Assets/Plugins/Android 配下に追加されました。

image

以上。

tkyaji
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