TextureGroup / Texture

Smooth asynchronous user interfaces for iOS apps.
https://texturegroup.org/
Other
8.02k stars 1.29k forks source link

Clash between application and sdk using separate versions of the Texture library #2043

Open noambartouv opened 2 years ago

noambartouv commented 2 years ago

We have an SDK that utilizes the Texture library and when applications that use our SDK also use the Texture library independently they receive a duplicate symbols warning at runtime, something like this:

Class ASNavigationController is implemented in both /Applications/... (0xXXXXXXXXXXX) and /Users/.../Frameworks/.../framework_name (0xYYYYYYYYY). One of the two will be used. Which one is undefined.

We need a way for both copies of the library to work together because the application and SDK my be using different versions of the Texture library. Directing the application and SDK to use just one of the versions may lead to the application not building, something we've been experiencing with applications running 2.7.0 and SDK running 3.0.0 versions of Texture.

We've tried multiple solutions with no luck, including the cocoapods-mangle plugin but just as the plugin's caveats section explains, prefixing the library symbols fails with all AS class categories, and its not something we've managed to fix manually.

What solution would you purpose to allow two pod versions to compile and run together?

akhrail1996 commented 2 years ago

In my case it was iOS 15 problem which I solved by upgrading to https://github.com/TextureGroup/Texture/releases/tag/3.1.0. Not sure that this is applicable in your case, but maybe it will help..

noambartouv commented 2 years ago

The issue I'm describing is unrelated to the ASNavigationController name change to ASDKNavigationController that was conducted as part of #2020 to fix a collision with another pod.

The name conflict in our case exists with all class names shared between the two versions of the Texture pod (used separately by the application and SDK), we present just one message as an example. The solution we're seeking is how to integrate two versions of the Texture pod that function along side one another.