playgameservices / play-games-plugin-for-unity

Google Play Games plugin for Unity
Other
3.46k stars 967 forks source link

"Unable to convert classes into dex format" When building GPG with FacebookSDK? #1118

Closed vexe closed 8 years ago

vexe commented 8 years ago

Greetings

Building with GPG was OK until I imported FacebookSDK (7.5.0) then I started getting build errors "Unable to convert classes into dex format". I tried finding the duplicate jars but there was none. I tried "findstr /spin" on the duplicate classes it mentioned but I couldn't find much, except for:

findstr /spin Landroid/support *

which yielded:

GooglePlayGames\Platforms\Android\Gms\Common\Api\GoogleApiClient.cs:100 base.InvokeCallVoid("stopAutoManage","(Landroid/support/v4/app/FragmentActiv ity;)V", arg_object_1);

That's what lead me to post here cause it seems the duplicates are GPG and FacebookSDK related.

We have Chartboost, Admob, UnityPurchasing, GPG and now FacebookSDK.

Any thoughts, ideas or help are appreciated. Thanks.

CommandInvokationFailure: Unable to convert classes into dex format. See the Console for details.
C:\Program Files\Java\jdk1.8.0_65\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/TitanCode2/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/v4/BuildConfig;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoJellyBeanMr2;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/animation/AnimatorCompatHelper;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActionBarDrawerToggle;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActionBarDrawerToggle$1;

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Translation has been interrupted
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:608)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at SDKMain.main(SDKMain.java:129)
Caused by: java.lang.InterruptedException: Too many errors
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:600)
... 9 more
]
stdout[
processing archive G:\Projects\tap-smiths-v2\unity\Temp\StagingArea\android-libraries\AmazonAppStore\bin\classes.jar...
ignored resource META-INF/
ignored resource META-INF/MANIFEST.MF
ignored resource com/
ignored resource com/unity/
ignored resource com/unity/purchasing/
ignored resource com/unity/purchasing/amazon/
processing com/unity/purchasing/amazon/AmazonPurchasing.class...
processing com/unity/purchasing/amazon/AmazonPurchasing$1.class...
processing com/unity/purchasing/amazon/AmazonPurchasing$2.class...
processing com/unity/purchasing/amazon/AmazonPurchasing$3.class...
processing com/unity/purchasing/amazon/AmazonPurchasing$4.class...
processing com/unity/purchasing/amazon/AmazonPurchasing$LocaleNotFoundException.class...
processing com/unity/purchasing/amazon/AmazonPurchasingService.class...
processing com/unity/purchasing/amazon/BuildConfig.class...
processing com/unity/purchasing/amazon/CurrencyMapper.class...
processing com/unity/purchasing/amazon/IPurchasingService.class...
processing archive G:\Projects\tap-smiths-v2\unity\Temp\StagingArea\android-libraries\AmazonAppStore\libs\.\in-app-purchasing-1.0.3.jar...
ignored resource META-INF/MANIFEST.MF
processing com/amazon/device/iap/package-info.class...
processing com/amazon/device/iap/PurchasingListener.class...
processing com/amazon/device/iap/PurchasingService.class...
processing com/amazon/device/iap/ResponseReceiver.class...
processing com/amazon/device/iap/internal/a.class...
processing com/amazon/device/iap/internal/a/a.class...
processing com/amazon/device/iap/internal/a/b.class...
processing com/amazon/device/iap/internal/a/c.class...
processing com/amazon/device/iap/internal/a/c$1.class...
processing com/amazon/device/iap/internal/a/d.class...
processing com/amazon/device/iap/internal/b.class...
processing com/amazon/device/iap/internal/b/a.class...
processing com/amazon/device/iap/internal/b/a/a.class...
processing com/amazon/device/iap/internal/b/a/b.class...
processing com/amazon/device/iap/internal/b/a/c.class...
processing com/amazon/device/iap/internal/b/a/d.class...
processing com/amazon/device/iap/internal/b/b.class...
processing com/amazon/device/iap/internal/b/b/a.class...
processing com/amazon/device/iap/internal/b/b/a$1.class...
processing com/amazon/device/iap/internal/b/b/b.class...
processing com/amazon/device/iap/internal/b/b/c.class...
processing com/amazon/device/iap/internal/b/b/d.class...
processing com/amazon/device/iap/internal/b/c.class...
processing com/amazon/device/iap/internal/b/c/a.class...
processing com/amazon/device/iap/internal/b/c/b.class...
processing com/amazon/device/iap/internal/b/c/c.class...
processing com/amazon/device/iap/internal/b/c/d.class...
processing com/amazon/device/iap/internal/b/d.class...
processing com/amazon/device/iap/internal/b/d/a.class...
processing com/amazon/device/iap/internal/b/d/b.class...
processing com/amazon/device/iap/internal/b/d/c.class...
processing com/amazon/device/iap/internal/b/d/d.class...
processing com/amazon/device/iap/internal/b/e.class...
processing com/amazon/device/iap/internal/b/e/a.class...
processing com/amazon/device/iap/internal/b/e/b.class...
processing com/amazon/device/iap/internal/b/e/c.class...
processing com/amazon/device/iap/internal/b/e/d.class...
processing com/amazon/device/iap/internal/b/e$1.class...
processing com/amazon/device/iap/internal/b/f.class...
processing com/amazon/device/iap/internal/b/f/a.class...
processing com/amazon/device/iap/internal/b/f/b.class...
processing com/amazon/device/iap/internal/b/f/c.class...
processing com/amazon/device/iap/internal/b/g.class...
processing com/amazon/device/iap/internal/b/g/a.class...
processing com/amazon/device/iap/internal/b/g/b.class...
processing com/amazon/device/iap/internal/b/h.class...
processing com/amazon/device/iap/internal/b/h/a.class...
processing com/amazon/device/iap/internal/b/i.class...
processing com/amazon/device/iap/internal/c.class...
processing com/amazon/device/iap/internal/c/a.class...
processing com/amazon/device/iap/internal/c/a$1.class...
processing com/amazon/device/iap/internal/c/b.class...
processing com/amazon/device/iap/internal/c/c.class...
processing com/amazon/device/iap/internal/c/d.class...
processing com/amazon/device/iap/internal/c/e.class...
processing com/amazon/device/iap/internal/d.class...
processing com/amazon/device/iap/internal/e.class...
processing com/amazon/device/iap/internal/model/ProductBuilder.class...
processing com/amazon/device/iap/internal/model/ProductDataResponseBuilder.class...
processing com/amazon/device/iap/internal/model/PurchaseResponseBuilder.class...
processing com/amazon/device/iap/internal/model/PurchaseUpdatesResponseBuilder.class...
processing com/amazon/device/iap/internal/model/ReceiptBuilder.class...
processing com/amazon/device/iap/internal/model/UserDataBuilder.class...
processing com/amazon/device/iap/internal/model/UserDataResponseBuilder.class...
processing com/amazon/device/iap/internal/model/a.class...
processing com/amazon/device/iap/internal/util/MetricsHelper.class...
processing com/amazon/device/iap/internal/util/a.class...
processing com/amazon/device/iap/internal/util/a$1.class...
processing com/amazon/device/iap/internal/util/b.class...
processing com/amazon/device/iap/internal/util/c.class...
processing com/amazon/device/iap/internal/util/d.class...
processing com/amazon/device/iap/internal/util/e.class...
processing com/amazon/device/iap/model/package-info.class...
processing com/amazon/device/iap/model/FulfillmentResult.class...
processing com/amazon/device/iap/model/Product.class...
processing com/amazon/device/iap/model/Product$1.class...
processing com/amazon/device/iap/model/ProductDataResponse.class...
processing com/amazon/device/iap/model/ProductDataResponse$RequestStatus.class...
processing com/amazon/device/iap/model/ProductType.class...
processing com/amazon/device/iap/model/PurchaseResponse.class...
processing com/amazon/device/iap/model/PurchaseResponse$RequestStatus.class...
processing com/amazon/device/iap/model/PurchaseUpdatesResponse.class...
processing com/amazon/device/iap/model/PurchaseUpdatesResponse$RequestStatus.class...
processing com/amazon/device/iap/model/Receipt.class...
processing com/amazon/device/iap/model/RequestId.class...
processing com/amazon/device/iap/model/RequestId$1.class...
processing com/amazon/device/iap/model/UserData.class...
processing com/amazon/device/iap/model/UserData$1.class...
processing com/amazon/device/iap/model/UserDataResponse.class...
processing com/amazon/device/iap/model/UserDataResponse$RequestStatus.class...
processing archive G:\Projects\tap-smiths-v2\unity\Temp\StagingArea\android-libraries\ChartboostSDK\libs\.\chartboost.jar...
ignored resource META-INF/MANIFEST.MF
processing com/chartboost/sdk/CBImpressionActivity.class...
processing com/chartboost/sdk/CBImpressionActivity$1.class...
processing com/chartboost/sdk/CBImpressionActivity$2.class...
processing com/chartboost/sdk/CBLocation.class...
processing com/chartboost/sdk/Chartboost.class...
processing com/chartboost/sdk/Chartboost$1.class...
processing com/chartboost/sdk/Chartboost$10.class...
processing com/chartboost/sdk/Chartboost$11.class...
processing com/chartboost/sdk/Chartboost$12.class...
processing com/chartboost/sdk/Chartboost$13.class...
processing com/chartboost/sdk/Chartboost$14.class...
processing com/chartboost/sdk/Chartboost$15.class...
processing com/chartboost/sdk/Chartboost$16.class...
processing com/chartboost/sdk/Chartboost$17.class...
processing com/chartboost/sdk/Chartboost$18.class...
processing com/chartboost/sdk/Chartboost$19.class...
processing com/chartboost/sdk/Chartboost$2.class...
processing com/chartboost/sdk/Chartboost$20.class...
processing com/chartboost/sdk/Chartboost$21.class...
processing com/chartboost/sdk/Chartboost$22.class...
processing com/chartboost/sdk/Chartboost$23.class...
processing com/chartboost/sdk/Chartboost$24.class...
processing com/chartboost/sdk/Chartboost$25.class...
processing com/chartboost/sdk/Chartboost$26.class...
processing com/chartboost/sdk/Chartboost$27.class...
processing com/chartboost/sdk/Chartboost$28.class...
processing com/chartboost/sdk/Chartboost$29.class...
processing com/chartboost/sdk/Chartboost$3.class...
processing com/chartboost/sdk/Chartboost$30.class...
processing com/chartboost/sdk/Chartboost$31.class...
processing com/chartboost/sdk/Chartboost$32.class...
processing com/chartboost/sdk/Chartboost$33.class...
processing com/chartboost/sdk/Chartboost$34.class...
processing com/chartboost/sdk/Chartboost$35.class...
processing com/chartboost/sdk/Chartboost$4.class...
processing com/chartboost/sdk/Chartboost$5.class...
processing com/chartboost/sdk/Chartboost$6.class...
processing com/chartboost/sdk/Chartboost$7.class...
processing com/chartboost/sdk/Chartboost$8.class...
processing com/chartboost/sdk/Chartboost$9.class...
processing com/chartboost/sdk/Chartboost$CBFramework.class...
processing com/chartboost/sdk/Chartboost$CBMediation.class...
processing com/chartboost/sdk/Chartboost$a.class...
processing com/chartboost/sdk/ChartboostActivity.class...
processing com/chartboost/sdk/ChartboostDelegate.class...
processing com/chartboost/sdk/InPlay/CBInPlay.class...
processing com/chartboost/sdk/InPlay/a.class...
processing com/chartboost/sdk/InPlay/a$1.class...
processing com/chartboost/sdk/InPlay/a$2.class...
processing com/chartboost/sdk/InPlay/a$a.class...
processing com/chartboost/sdk/InPlay/a$b.class...
processing com/chartboost/sdk/Libraries/CBLogging.class...
processing com/chartboost/sdk/Libraries/CBLogging$Level.class...
processing com/chartboost/sdk/Libraries/CBUtility.class...
processing com/chartboost/sdk/Libraries/a.class...
processing com/chartboost/sdk/Libraries/a$1.class...
processing com/chartboost/sdk/Libraries/b.class...
processing com/chartboost/sdk/Libraries/c.class...
processing com/chartboost/sdk/Libraries/c$1.class...
processing com/chartboost/sdk/Libraries/c$a.class...
processing com/chartboost/sdk/Libraries/d.class...
processing com/chartboost/sdk/Libraries/e.class...
processing com/chartboost/sdk/Libraries/e$1.class...
processing com/chartboost/sdk/Libraries/e$a.class...
processing com/chartboost/sdk/Libraries/e$b.class...
processing com/chartboost/sdk/Libraries/f.class...
processing com/chartboost/sdk/Libraries/g.class...
processing com/chartboost/sdk/Libraries/g$1.class...
processing com/chartboost/sdk/Libraries/g$a.class...
processing com/chartboost/sdk/Libraries/g$b.class...
processing com/chartboost/sdk/Libraries/g$c.class...
processing com/chartboost/sdk/Libraries/g$d.class...
processing com/chartboost/sdk/Libraries/g$e.class...
processing com/chartboost/sdk/Libraries/g$f.class...
processing com/chartboost/sdk/Libraries/g$g.class...
processing com/chartboost/sdk/Libraries/g$h.class...
processing com/chartboost/sdk/Libraries/g$i.class...
processing com/chartboost/sdk/Libraries/g$j.class...
processing com/chartboost/sdk/Libraries/g$k.class...
processing com/chartboost/sdk/Libraries/g$l.class...
processing com/chartboost/sdk/Libraries/g$m.class...
processing com/chartboost/sdk/Libraries/g$n.class...
processing com/chartboost/sdk/Libraries/g$o.class...
processing com/chartboost/sdk/Libraries/g$p.class...
processing com/chartboost/sdk/Libraries/g$q.class...
processing com/chartboost/sdk/Libraries/h.class...
processing com/chartboost/sdk/Libraries/h$a.class...
processing com/chartboost/sdk/Libraries/i.class...
processing com/chartboost/sdk/Libraries/j.class...
processing com/chartboost/sdk/Libraries/j$1.class...
processing com/chartboost/sdk/Libraries/j$2.class...
processing com/chartboost/sdk/Libraries/j$a.class...
processing com/chartboost/sdk/Libraries/k.class...
processing com/chartboost/sdk/Model/CBError.class...
processing com/chartboost/sdk/Model/CBError$1.class...
processing com/chartboost/sdk/Model/CBError$CBClickError.class...
processing com/chartboost/sdk/Model/CBError$CBImpressionError.class...
processing com/chartboost/sdk/Model/CBError$a.class...
processing com/chartboost/sdk/Model/a.class...
processing com/chartboost/sdk/Model/a$1.class...
processing com/chartboost/sdk/Model/a$a.class...
processing com/chartboost/sdk/Model/a$b.class...
processing com/chartboost/sdk/Model/a$c.class...
processing com/chartboost/sdk/Model/a$d.class...
processing com/chartboost/sdk/Model/a$e.class...
processing com/chartboost/sdk/Model/b.class...
processing com/chartboost/sdk/Tracking/CBAnalytics.class...
processing com/chartboost/sdk/Tracking/CBAnalytics$1.class...
processing com/chartboost/sdk/Tracking/CBAnalytics$CBIAPPurchaseInfo.class...
processing com/chartboost/sdk/Tracking/CBAnalytics$CBIAPType.class...
processing com/chartboost/sdk/Tracking/CBAnalytics$CBLevelType.class...
processing com/chartboost/sdk/Tracking/a.class...
processing com/chartboost/sdk/a.class...
processing com/chartboost/sdk/b.class...
processing com/chartboost/sdk/b$1.class...
processing com/chartboost/sdk/b$2.class...
processing com/chartboost/sdk/b$3.class...
processing com/chartboost/sdk/b$4.class...
processing com/chartboost/sdk/b$5.class...
processing com/chartboost/sdk/b$a.class...
processing com/chartboost/sdk/b$b.class...
processing com/chartboost/sdk/b$c.class...
processing com/chartboost/sdk/b$d.class...
processing com/chartboost/sdk/b$e.class...
processing com/chartboost/sdk/c.class...
processing com/chartboost/sdk/c$1.class...
processing com/chartboost/sdk/c$a.class...
processing com/chartboost/sdk/d.class...
processing com/chartboost/sdk/d$1.class...
processing com/chartboost/sdk/d$1$1.class...
processing com/chartboost/sdk/d$2.class...
processing com/chartboost/sdk/d$3.class...
processing com/chartb<message truncated="">
claywilkinson commented 8 years ago

These classes like, Landroid/support/v4/BuildConfig come from the the Android support library, android-support-v4.jar. It looks like that you have multiple copies of this jar (maybe included with one of the plugins?) You should just delete all the copies exception one and try rebuilding.

vexe commented 8 years ago

Yeah I figured that out eventually by brute-force. Installing the packages one by one into an empty project till it breaks. I noticed GoogleAds also added that PlayServicesResolver which in turn grabbed that support jar. Deleting that jar does indeed solve the problem. Thanks.

vexe commented 8 years ago

It's such a strange thing, it blows my mind that Java people don't have a solution for this issue. Like how about not including duplicate classes? or telling the user exactly what jar file the duplicates are? or not having me wait till the end of the build and tell me there's duplicates...