Embedded Frameworks within a Message Extension App causing TestFlight submission Errors

I'm running into a problem that I'm not quite sure how to solve.


I have a stand alone message app that has a few embedded frameworks that I have written. In a normal app, those frameworks can live within the container app, and the extensions can reference them. With a message app, the dummy container app has no way to manage frameworks/linked libraries, so the message extension needs to manage them. This means the .appex now contains a framework folder within it.


When attempting to upload the binary, TestFlight returns the following error:


ERROR ITMS-90205: "Invalid Bundle. The bundle at 'XXXXXX.app/PlugIns/XXXXXXX.appex' contains disallowed nested bundles."


I'm not exactly sure how to manage the frameworks in this particular heirarchy to please the TestFlight Gods and get the app processed.


Has anyone successfully submitted a standalone message app with embedded frameworks? Should I file a rdar?

Accepted Reply

We've now got a Technical Q&A document with a workaround for this issue of embedding a framework. https://developer.apple.com/go/?id=framework-imessage

Replies

At the moment, I don't have any updates. The issue is building standalone iMessage apps with frameworks, where there's no way to put the framework into the wrapper app that is created. In the short term if you're able to compile your framework's code directly into your app that would be one approach.

So what I did was add the copy frameworks target to the message extension then I manually edited the project file and moved that build phase from the extension to the wrappers build phases. The extension ran fine on my phone and validated to the store - I'm uploading now to try a test flight install.

Did the upload to TestFlight work?

Yes it validated and uploaded fine. I and another tester were able to install from TestFlight with no issues. Will this be accepted when iOS10 moves out of beta? No idea - I hope so!

This is brilliant but insane you need to resort to this.

We've now got a Technical Q&A document with a workaround for this issue of embedding a framework. https://developer.apple.com/go/?id=framework-imessage

Thanks for the write up PDM.

Sure thing, credit goes to our engineering and Developer Technical Support teams for getting that together.

Post not yet marked as solved Up vote reply of pdm Down vote reply of pdm

I've tried implementing this solution but failed. Literally a whole day went to trying to fix this and still fail😢. I use cocoapods so I have no idea how to follow that work around. please help.


//My Pod File
platform :ios, '10.0'
target 'MyAppName' do
  use_frameworks!
end
target 'MessagesExtension' do
  pod 'Firebase'
  pod 'DataCache'
  pod 'BuddyBuildSDK'
  pod 'Firebase/Storage'
  pod 'FirebaseDatabase'
  use_frameworks!
end