googlesamples / unity-jar-resolver

Unity plugin which resolves Android & iOS dependencies and performs version management
Other
1.25k stars 340 forks source link

Resolver ignores installed Ads package, generatig duplicated symbols #368

Closed rsodre closed 4 years ago

rsodre commented 4 years ago

Unity editor version: 2919.3.10 External Dependency Manager version: 1.2.153 Source you installed EDM (from .unitypackage or Unity Package Manager): Package Manager Features in External Dependency Manager in use (Android Resolver, iOS Resolver, VersionHandler, etc.): Android Resolver Plugins SDK in use (Firebase, Admob, Facebook, etc.): Admob, Unity Ads Platform you are using the Unity editor on (Mac, Windows, or Linux): Mac Platform you are targeting (iOS, Android, and/or desktop): Android, iOS Scripting Runtime (Mono, and/or IL2CPP):IL2CPP

Please describe the issue here:

I have installed Unity Ads version 3.4.5, from the Package Manager( com.unity.ads) When I build for Android, the Resolver ignores it and dowmloads com.unity3d.ads.unity-ads-3.4.2.aar, causing a ton of duplicated symbols. I tried to update the package to 3.4.2, same version that is resolved, and the problem persists.

The resolver should detect that the Unity Ads package is installed and use it instead of the lib.

Someone at Unity suggested that we should just remove the package, but I need the UnityEngine.Advertisements namespace on my scripts.

What's the issue repro rate? 50% After the build fails, if I delete com.unity3d.ads.unity-ads-3.4.2.aar, I can build successfully But later on some build it will resolve the lib and fail again.

chkuang-g commented 4 years ago

Hi @rsodre

I downloaded Admob 5.1.0 and try Android Resolver, and I did not see com.unity3d.ads.unity-ads-3.4.2.aar under Assets/Plugin/Android folder.

Besides, Unity Ads package does not really utilize Android Resolver at all so it cannot take that into consideration.

Could you try the latest Admob package and see if that resolves your issue?

Thank you, Shawn

rsodre commented 4 years ago

Sorry, I forgot to mention I also use AdMob mediation, with Unity Ads as an active source.

I can confirm it's the resolver who's downloading the unity ads libs, because if I turn off resolver before build, it's not downloaded.

chkuang-g commented 4 years ago

I see what you mean. https://github.com/googleads/googleads-mobile-unity/blob/v5.1.0/mediation/UnityAds/source/plugin/Assets/GoogleMobileAds/Editor/UnityMediationDependencies.xml#L3

I am not familiar with how mediation works and whether it is designed to work with Unity Ads package. Could you file a bug through their channel? It is apparent that Admob Unity Ads mediation need to find some solution for this. https://github.com/googleads/googleads-mobile-unity/issues

And to reiterate, Android Resolver can only handle packages following Android Resolver standard, which is that Dependencies.xml file, and apparently Unity Ads is not. As a result, it cannot take those .aar files in Unity Ads package into consideration.

Since this is a scenario that is out of our control, I would recommend you for the following approaches (either one):

Hope this helps. Shawn

rsodre commented 4 years ago

And to reiterate, Android Resolver can only handle packages following Android Resolver standard, which is that Dependencies.xml file, and apparently Unity Ads is not. As a result, it cannot take those .aar files in Unity Ads package into consideration.

It's not clear to me if it's possible for the Resolver to identify a lib from an installed package. If it can, I agree that the AdMob plugin is failing to find it, and I will open an issue there. But if it can't, the Resolver has a flaw, because that's where plugins and packages are supposed to be from now on. It should be able to find dependencies there too.

On my project, here's where the project's lib is installed...

unity-ads-package-lib
chkuang-g commented 4 years ago

@rsodre

And again, it is out of our control to ask Unity to follow EDM4U's standard to resolve Android dependencies. If those loose .aar is not documented in a way, ex. Dependencies.xml, that EDM4U can recognized, there is very limited thing that this plugin can do.

Since this is an open-source project and used by many company other than Google, we welcome any potential solutions for this and pull requests!

Let us know if you hear anything from Ads team.

Shawn

google-oss-bot commented 4 years ago

Hey @rsodre. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

rsodre commented 4 years ago

Google Ads did some digging here... https://github.com/googleads/googleads-mobile-unity/issues/1337#issuecomment-640950840

chkuang-g commented 4 years ago

@rsodre

Hope I explained the situation well enough in both threads. Basically EDM4U currently cannot resolve dependencies for .aar which is not documented in any Dependencies.xml file. What EDM4U can solve is limited but we welcome any proposal or pull request.

And please do try their suggestion about removing the dependencies.

Hope this help. Shawn