shaka-project / shaka-player-embedded

Shaka Player in a C++ Framework
Apache License 2.0
238 stars 63 forks source link

Apple reject my app #196

Open franciscocarodiaz opened 3 years ago

franciscocarodiaz commented 3 years ago

widevine_cdm_secured_ios.framework ends up nested inside ShakaPlayerEmbedded.framework. This is not allowed by Apple, so we're getting the following error when trying to upload the app to App Store Connect:

ITMS-90338: Non-public API usage - The app references non-public symbols in Tivify: _pb_decode, _pb_decode_varint, _pb_encode, _pb_encode_string, _pb_encode_submessage, _pb_encode_tag_for_field, _pb_encode_varint, _pb_istream_from_buffer, _pb_ostream_from_buffer, _pb_read. 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 at http://developer.apple.com/support/technical/

franciscocarodiaz commented 3 years ago

This is the error when we are trying to upload to Itunes:

Screenshot 2020-11-26 at 18 06 00
TheModMaker commented 3 years ago

The two comments seem to have completely different errors. The second error you showed has already been fixed. Make sure to use the latest master from both this project and the Widevine CDM. You cannot use v1.0; I need to make a v1.0.1 release with these fixes. You should erase the out folder to make sure you get a clean build.

The error you listed in the original post is weird. We don't use internal APIs and those APIs from Google ProtoBuf. We use that as an external dependency. It may be possible that Apple is using protobuf and doesn't want us using it. But we're using our own version. Since we can't change their APIs, it seems odd that Apple would require us to not use that.

TheModMaker commented 3 years ago

It looks like Apple is using protobuf and has problems with us using it. See nanopb/nanopb#448. We may be able to work around this by stripping private symbols and making sure we aren't accidentally exporting protobuf symbols.

TheModMaker commented 3 years ago

Actually, those methods are from just nanopb, we use the full Google-made protocol buffer implementation. So both Embedded and the Widevine CDM don't use those symbols. So make sure this is caused by this framework and not caused by another of your dependencies.

And again, please try with the latest master and try with a clean build to see if the nested framework problem went away.

kareljuricka commented 3 years ago

Our app using shaka player embedded was successfully approved by apple and moved to app store. So I confirm with @TheModMaker that there is no release problem.