Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-5178] TiAPI: Duplicate Symbol conflict with Async APIs

GitHub Issuen/a
TypeBug
PriorityHigh
StatusClosed
ResolutionFixed
Resolution Date2012-08-15T19:46:41.000+0000
Affected Version/sRelease 1.7.2, Release 2.1.0
Fix Version/sSprint 2012-16 Core, Release 3.0.0
ComponentsiOS
Labelscore, qe-port
ReporterJeff English
AssigneeMax Stepanov
Created2011-08-30T15:30:55.000+0000
Updated2013-01-09T11:45:04.000+0000

Description

When attempting to use a module that includes a 3rd party library, receiving Duplicate Symbol errors with several 'Async...' symbols. Specifically, - AsyncSocket - AsyncSpecialPacket - AsyncWritePacket - AsyncReadPacket The 3rd party library also defines these same symbols and so it is unable to link.

Attachments

FileDateSize
build.log2012-07-27T10:29:03.000+00001258305
list_symbols.sh2012-08-14T11:19:11.000+0000718

Comments

  1. Jeff English 2011-08-31

    The 3rd party library is provided as a static library that is used by the module. So we are unable to change the class names so that they do not conflict with ours. We are in contact with the provider of this particular static library to try and get a version that does not include or renames these symbols.
  2. Jeff English 2011-08-31

    Renaming the aforementioned classes in Titanium source with a 'Ti' prefix will also resolve the conflicts.
  3. Jeff English 2011-09-02

    Changing priority to next release since we are working with the 3rd party developer to get a version of their static library with these symbols renamed.
  4. Jeff English 2012-06-29

    This issue of duplicate symbols for open source libraries that we use in Titanium is one of the most common issues that I hear from module developers. Most of the time the module developers don't have access to the library that they are trying to integrate as a module, so telling them to change their use of it is not a workable solution. We just need to 'namespace' those APIs in Titanium in order to fix this issue (e.g. by adding a 'Ti' prefix) and eliminate this as a customer engineering / module development issue.
  5. Pedro Enrique 2012-06-29

    Adding _AsyncUdpSocket_ to the list
  6. Stephen Tramer 2012-07-06

    Pulling in since this is a simple change and may affect another existing customer ticket already in this sprint (TIMOB-9452)
  7. Carl Orthlieb 2012-07-10

    Ask by the customer (RDI/McDonalds) to pull in this ticket for 2.1.1 at the end of this month.
  8. Blain Hamon 2012-07-11

    Pull merged.
  9. Max Stepanov 2012-08-13

    Test instructions: 1. Build KS project for device 2. Open Terminal and cd to /build/iphone/build/KitchenSink.build/Debug-iphoneos/KitchenSink-universal.build/Objects-normal/armv7/ 3. Run attached list_symbols.sh file inside the directory above.
  10. Max Stepanov 2012-08-14

    PR pending https://github.com/appcelerator/titanium_mobile/pull/2740
  11. Blain Hamon 2012-08-15

    Second time's the charm. Pull merged.
  12. Tamila Smolich 2012-12-07

    Closing as fixed. Tested on: Titanium Studio, build: 3.0.0.201211301903 Titanium SDK, build: 3.0.0.v20121206113203 Devices: iPhone 4 (5.1.1)

JSON Source