Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ITMS-90338: Non-public API usage #4

Open
hxicoder opened this issue Mar 18, 2022 · 3 comments
Open

ITMS-90338: Non-public API usage #4

hxicoder opened this issue Mar 18, 2022 · 3 comments

Comments

@hxicoder
Copy link

hxicoder commented Mar 18, 2022

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

@apotocki
Copy link
Owner

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
Copy link
Owner

apotocki commented May 3, 2022

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.

@hxicoder
Copy link
Author

hxicoder commented May 3, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants