Build iOS Release Non-Public API Usage

When building a release version for ios with fuse build --target=ios --configuration=release it creates the Xcode Project.
But when I submit it to iTunes Connect I receive
The app references non-public symbols in ApplicationName: _ubidi_close, _ubidi_getLevels, _ubidi_open, _ubidi_setPara

Any ideas?


Are you using -DUSE_HARFBUZZ? This is a known issue that will be fixed in the next release.

The fix is included in the 0.31 release.

Downloading! Thank you! and thank you for stop asking for email for every download.

Is this issue back?
I can’t upload anything to the App Store and yes, I am using -DUSE_HARFBUZZ

App Store email:

The app references non-public symbols in The Monster and the Cat: _ubidi_close, _ubidi_getLevels, _ubidi_open, _ubidi_setPara, _ubrk_close, _ubrk_first, _ubrk_next, _ubrk_open


Tried a second time, same issue.
Tried with Fuse 1.0, same issue.
Tried manually deleting the Fuse packages and rebuilding, same issue.

Yeah, looks like this issue is back. We’re currently looking into it.

I just tried myself, and I can’t reproduce this. Could you post a working reproduction-case?

I created a new project to make sure it wasn’t just me and built it with -DUSE_HARBUZZ and I can see the APIs being used in the my .xcworkspace in Fuse.Text

Screenshots ->
(I think uploading pictures is not working)

We do reference symbols with these names, but not the ones provided by Apple. Instead we ship our own version of ICU (which is the library that provides these symobols). This can be verified by checking the imported symbols:

nm -u | grep ubidi

I just thought I’d update this thread a bit. The problem has been located, and is an interaction between Cocoapods and -DUSE_HARFBUZZ. It seems like Cocoapods transforms our XCode projects in a way that makes the linker pick up Apple’s internal version of ICU rather than the one we provide.

Further work is being done to try to fix this problem.