icu4c-iosx icon indicating copy to clipboard operation
icu4c-iosx copied to clipboard

ITMS-90338: Non-public API usage

Open hxicoder opened this issue 2 years ago • 3 comments

When I integrated the ICU library and submitted the IPA package, it was rejected by apple

ITMS-90338: Non-public API usage - The app references non-public symbols in xxxx: _ubrk_current, _ubrk_first, _ubrk_getRuleStatus, _ubrk_isBoundary, _ubrk_next, _unorm_normalize. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information athttp://developer.apple.com/support/technical/

Best regards,

The App Store Team

hxicoder avatar Mar 18 '22 02:03 hxicoder

Thank you for your report! But the goal of this project is only to build ICU for Apple platforms. The method naming is the responsibility of the ICU project (https://github.com/unicode-org/icu). And I see that it's a real problem: ubrk_* methods are a part of public ICU API and have nothing to do with private Apple APIs. So there is no "Non-public API usage". It is not the right decision to change ICU API only because Apple uses the same names in its private API (perhaps their private API uses internally ICU and this is the root of the problem). Have you tried to strip binaries in your IPA package before submitting? Maybe those names are just debugging symbols and their removal will resolve the problem.

apotocki avatar Mar 18 '22 10:03 apotocki

Recently my own application PotoHEX (https://apps.apple.com/us/app/potohex/id1620963302) was successfully approved by Apple. It also contains ICU4C binaries built by this project and I haven't taken any additional actions. So perhaps the problems you faced caused some other reasons.

apotocki avatar May 03 '22 14:05 apotocki

Thank you for your reply, My guess is that I called methods such as ubrk_current in the ICU4 library in the project, and these methods happened to be the same as Apple's internal private api names, which caused this problem. I tried many times and failed to pass the review. In the end, I tried to change the names of these apis to verify my guess. As a result, the ipa package submitted after changing the api names passed Apple's review.

hxicoder avatar May 03 '22 15:05 hxicoder