Skip to content

Recommended "Resolution" for Complex Projects (Android X) #338

@thomasjohnwolfe

Description

@thomasjohnwolfe

Unity editor version:

2018.4.2f1

###External Dependency Manager version:
Current: 1.2.105.0
Attempted Upgrade: 1.2.137.0

###Features in External Dependency Manager in use (Android Resolver, iOS Resolver, VersionHandler, etc.):
We use the *Dependencies.xml files to define iOS and (newer) Android SDK dependencies.
Most Unity plugins seem to be using this now and we've converted our internal solutions to also use these files.

###Plugins SDK in use:
Adjust - 4.13
Admob - 4.2.1
Admob Mediation, AppLovin, Facebook Audience Network, IronSource, UnityAds, Vungle
Apple ID "Lupidan Sign In With Apple“
BuildPipeline(DotsInternal)
Braze - 1.21.2 => Relies on Custom JAR (and our own Deep-link solution) that extends AppboyUnityPlayerActivity extends UnityPlayerActivity
Facebook => Divergent(2 unity SDKS) unity-7.11.1 (Android)unity-7.18.1 (iOS)
Firebase - Unity - 5.3.0
Google Play Games - 9.50
Localytics - 2.5 (this is old!)
SafeDK
Sentry - (custom plugin that wraps native)
Unity IAP - 1.22.0

Platforms you are using the Unity editor:

Mac/Windows (mostly Macs)

Platforms you are targeting:

Android / iOS

###Scripting Runtime:
IL2CPP

Please describe the issue here:

We haven't been able to use this plug-in as intended to "resolve" for over a year now due to the complexity/history of our project. This plug-in was intended as a one-time solution to "resolve" dependencies. We are large game studio with complex SDK management and custom CI. Our game has been live for roughly 6 years.

Is there any sort of configuration you would recommend where we can run "resolve" without running any sort of custom processing, reverting of files, or guess work?
I’d like to work with this plug-in and not against it. It is a great tool for a newer setup or a project with less SDKS and less custom solutions. It works well for other (newer) projects in our studio.

Currently when after we use the plugin to "resolve" Android dependencies we have to do one or more of the following:

  • Commit the libraries we need and then revert the rest (quite often this happens with extremely time consuming amounts of trial and error and swapping in and out versions of Play Services Resolver)
  • Avoid the plugin in directly and download the files we need from Maven directly.
  • Run the resolver 2x for production and dev bundle IDs and then make custom preprocessor scripts (for Firebase that copy the AARs in and out of Unity project)
  • There are usually a large amount of "dex" errors (lately) which seem harder to resolve by using this plug-in, than it was 4 years ago without it.

Now with newer SDKs moving towards Android X, problems with this plugin are even worse (scarier) and it seems we are about to reach a tipping point where half our plug-ins want to use Android X libraries and old ones we will have to remove. We are trying to avoid updating 3+ SDKs at a time to fix these issues (as its very risky and our game is live)

Here is a link to a watered down log (trimmed for security reasons) of tests I have performed trying to make builds over the past week when exploring this issue.
https://dots.quip.com/uGq0Ajvzs7LM/Android-X-Exploration-Play-Services-Resolver

I anticipate this might be a duplicate issue. But we have been doing research on our plan for supporting Android X and I have yet to make a build that works. So please feel free to point me in the right direction!

Thanks!
Thomas Wolfe

What's the issue repro rate?

95% of the time we do an SDK update for Android, we run into large scale issues that can’t seem to be fully resolved with this plugin the way it was intended.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions