UnityのAsset「Android Native Plugin」でエラー(AdMobとの相性が悪いようでした)
UnityのAsset「Android Native Plugin」でビルドエラー(最新版だけ?)
UnityでGoogleのGame Service系を簡単に使えるようにすることで有名なアセット「Android Native Plugin」を導入したのですが、ビルドしようとすると下記のようなエラーが出ていました。
CommandInvokationFailure: Failed to re-package resources. /Users/wakepon/Library/Android/sdk/build-tools/23.0.2/aapt package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S "res" -I "/Users/wakepon/Library/Android/sdk/platforms/android-24/android.jar" -F bin/resources.ap_ --extra-packages com.chartboost.sdk.unity:com.google.unity:com.example.an_billing:com.example.an_googleplay:com.example.an_social:com.example.androidnative:android.support.v7.appcompat:com.google.android.gms.ads.impl:com.google.android.gms.ads.impl:com.google.android.gms.ads:com.google.android.gms.ads:com.google.android.gms.analytics:com.google.android.gms.analytics:com.google.android.gms.appinvite:com.google.android.gms.auth.api:com.google.android.gms.auth:com.google.android.gms.base:com.google.android.gms.base:com.google.android.gms:com.google.android.gms:com.google.android.gms.clearcut:com.google.android.gms.drive:com.google.android.gms.games:com.google.android.gms:com.google.android.gms.gcm:com.google.android.gms.iid:com.google.android.gms.plus:com.google.android.gms.tasks:android.support.v4:android.support.v4:com.unity3d.ads.android -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/AN_Res/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/an_billing/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/an_googleplay/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/an_social/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/androidnative/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/appcompat-v7-23.1.1/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-ads/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-ads-9.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-ads-lite/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-ads-lite-9.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-analytics/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-analytics-impl/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-appinvite/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-auth/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-auth-base/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-base/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-base-9.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-basement/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-basement-9.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-clearcut-9.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-drive/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-games/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-gass-9.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-gcm/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-iid/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-plus/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/play-services-tasks-9.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/support-v4-23.1.1/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/support-v4-23.4.0/res" -S "/Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/unityads-release/res" stderr[ /Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/appcompat-v7-23.1.1/res/layout/abc_alert_dialog_button_bar_material.xml:18: note: removing attribute http://schemas.android.com/apk/res/android:layoutDirection from <android.support.v7.widget.ButtonBarLayout> /Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/appcompat-v7-23.1.1/res/layout/abc_alert_dialog_button_bar_material.xml: note: using v17 attributes; synthesizing resource com.waken.Divide:layout/abc_alert_dialog_button_bar_material for configuration v17. /Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/appcompat-v7-23.1.1/res/layout/abc_alert_dialog_material.xml:48: note: removing attribute http://schemas.android.com/apk/res/android:textAlignment from <android.support.v7.widget.DialogTitle> /Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/appcompat-v7-23.1.1/res/layout/abc_alert_dialog_material.xml: note: using v17 attributes; synthesizing resource com.waken.Divide:layout/abc_alert_dialog_material for configuration v17. /Users/wakepon/projects/2357/Temp/StagingArea/android-libraries/appcompat-v7-23.1.1/res/layout/abc_dialog_title_material.xml:29: note: removing attribute http://schemas.android.com/apk/res/android:textAlignment from <TextView> ...
色々と調べた結果、Assets/Plugin/Android以下と、Assets/Plugin/Android/lib以下の両方にplay-service系のaarができてしまっていることが問題のようでした。
Assets/Plugin/Android 以下にあるappcompat-v7-23.1.1.aarや、play-services-ads-9.4.0.aarといったaarファイル郡を削除したら、無事にビルドできるようになりました。
ただ、これらのファイルを削除するのも一筋縄では行かず、ProjectSettings/GoogleDependencyAdMobUnity.xmlを削除しないと、aarは何度でも復活してしまいました。
また、GoogleDependencyAdMobUnity.xml自体を削除してもビルド後に復活してしまい、これは未だに謎です。
現在、このエラーに関して「Android Native Plugin」のサポートチームに問い合わせ中。
P.S
GoogleDependencyAdMobUnity.xmlは、AdMobが生成しているようでした。
Assets/PlayServicesResolver/Editor/AdMobDependencies.cs というファイルが、上記xmlを吐くようだったので、全部コメントアウトしたら煩わされることがなくなりました。
コメントアウトしても、Plugin/Android/libs以下にAndroid Native Plugin が追加したaarファイル郡があるので問題なく動きます。
ただ、Unityの人に聞いたところ、ロムに含まれるaarファイルはAndroid直下だけというのが現在の仕様(サブフォルダ以下のaarも含まれている現状はバグ)とのことだったので、今後のUnityのバージョンでは危ういかも。