App Rejected: Non-Public Symbols _lzma_code and _lzma_end in Payload/Hogs.app/Hogs

I recently submitted my app, Hogs, to the App Store, but it was rejected due to references to non-public symbols:

_lzma_code _lzma_end I am using the LZMA compression library in my app, and these functions are part of that implementation. Here's a breakdown of my usage:

Library Used: liblzma (custom wrapper around LZMA functions) Error Message: "The app references non-public symbols in Payload/Hogs.app/Hogs: _lzma_code, _lzma_end." Steps I’ve Taken: I’ve wrapped the LZMA functions in my own functions (my_lzma_code, my_lzma_end) to prevent direct references. I have checked the build settings and included -lzma in the linker flags. I’ve tried using a custom framework to encapsulate LZMA, but the issue persists. I would greatly appreciate any help or suggestions on how to resolve this issue and get my app approved. Is there any workaround or adjustment I can make to avoid using these non-public symbols?

Thank you in advance for your assistance.

Thank you for your post. What the exact error message?

I believe the error message indicates that your application is linking against non-public symbols from the LZMA compression library, which is not permitted for App Store submission. Including that library, even that functionality when not in use, or you are not using that functionality inside the framework, will result in the rejection of your application. I recommend exploring an Apple framework or third-party library that provides the same functionality.

Another solution; if you have access to the source code of the third-party framework, you can remove the code that is accessing non-public symbols.

Albert Pascual
  Worldwide Developer Relations.

App Rejected: Non-Public Symbols _lzma_code and _lzma_end in Payload/Hogs.app/Hogs
 
 
Q