Social Connector v0.5.0

Social Connectorの最新版としてv0.5.0が出ていました。これにより現在あるAndroid 8.1までの機種で画像付きでSNSへの共有ができるようになりました。以前のバージョンのものだとAndroid 7.0以上のものでの画像付きの共有ができなくなっていました。(Android 6.0以下は可能だった。)

Android 7.0(Nougat)からファイルのパーミッションが厳しくなりました。今までのやり方では、あるアプリが作ったファイルに別のアプリがアクセスすることが禁じられてしまったのです。そのため、新しいAPIでファイルにアクセスしなければいけなくなり、v0.5.0以前のものでは対応されてない状態でした。

以下はAdMobを使っていたりすると起きる問題のメモです。単にライブラリが衝突している問題です。

起きた問題

エラー

Consoleに出ていた内容の最初の部分です。

CommandInvokationFailure: Unable to convert classes into dex format.
C:/Program Files/Java/jdk1.8.0_162\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir=”C:/Users/FreelyApps/AppData/Local/Android/Sdk\tools” -Dfile.encoding=UTF8 -jar “C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar” –

stderr[
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/coreutils/BuildConfig;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/AppLaunchChecker;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/NavUtils;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/NavUtils$NavUtilsImpl;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/NavUtils$NavUtilsImplBase;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/NavUtils$NavUtilsImplJB;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/NavUtilsJB;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/TaskStackBuilder;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/TaskStackBuilder$SupportParentable;

already addedというのがエラーの原因のようです。

理由

v0.5.0ではAndroid用にsupport-core-utils-25.3.1.aarライブラリが含まれています。これが私の作っていたプロジェクトには既に含まれていたらしくビルドに失敗しました。たぶんAdMobで使われているのだと思います。AdMobのUnity Packageでは必要なライブラリを自動で取り込む仕組み(PlayServicesResolver)があるため、com.android.support.support-core-utils-25.2.0.aarがプロジェクトに入っていました。バージョンは異なるようですが同じものなのでぶつかりました。

対応方法

Social Connector v0.5.0に入っていたライブラリを削除して対応しました。