Mac App Store Rejection: Malformed Framework

I submitted a project to the Mac App Store today using Application Loader 2.9.1. Build was compiled with Xojo 2014r1. Package was created with App Wrapper. In testing, package installed fine and the built application worked fine and tested okay using the Test User set up in iTunes Connect.

The package uploaded fine with Application Loader (which gave me no errors). However, a few minutes after the upload was complete, I got a rejection notice from Apple. The notice indicated that the app was rejected because of “Malformed Frameworks”. Specifically:

[quote]Malformed Framework - The framework bundle XojoFramework (My App.app/Contents/Frameworks/XojoFramework.framework) must contain a symbolic link ‘XojoFramework’ -> ‘Versions/Current/XojoFramework’. Refer to the Anatomy of Framework Bundles for more information.

Malformed Framework - The framework bundle XojoFramework (My App.app/Contents/Frameworks/XojoFramework.framework) must contain a symbolic link ‘Resources’ -> ‘Versions/Current/Resources’. Refer to the Anatomy of Framework Bundles for more information.

Malformed Framework - The framework bundle XojoFramework (My App.app/Contents/Frameworks/XojoFramework.framework) ‘Versions’ directory must contain a symbolic link ‘Current’ resolving to a specific version directory. Refer to the Anatomy of Framework Bundles for more information.[/quote]

(Note that application name was changed as the client is not letting me discuss this particular app publicly.)

I did check the Anatomy of Framework Bundles, but was fairly confused by Apple’s typical convoluted and impenetrable documentation. And, I’m thinking this is something Xojo is doing and outside my immediate control.

Does anyone have any ideas or thoughts on this?

Thanks!

I have the very same problem. This is definitely beyond what I know. I will go back to the prior version and see if this fixes the issue as I need to get my app up fast.

Looks like this change

31685 MacCocoa: The Cocoa framework is now a framework bundle inside of the Frameworks folder instead of a dylib. 

Is what causes the problem with the App Store submission.

Definitely beyond our control.

Can you send me the wrapped application, and I’ll take a look at it. It sounds like for some reason the soft links are getting mangled. Use sam - @ - ohanaware - . - com.

I am not using App Wrapper but maybe this error message sent by Apple would help

[code]Invalid Code Signature Identifier -

The identifier “com.xojo.framework” in your code signature for XojoFramework in MyApp.app/Contents/Frameworks/XojoFramework.framework must match its Bundle Identifier “com.xojo.XojoFramework”.

Though you are not required to fix the following issues, we wanted to make you aware of them:

Invalid Signature - the nested app bundle XojoFramework at path MyApp.app/Contents/Frameworks/XojoFramework.framework is not signed with an Apple submission certificate.

The following error(s) were reported from codesign:
valid on disk
/Volumes/data01/app_data/dstr/mz_2275318631883375624dir/mz_3068263397187573511dir/com.myname.myapp.pkg/Payload/MyApp.app/Contents/Frameworks/XojoFramework.framework/Versions/A: satisfies its Designated Requirement
test-requirement: code failed to satisfy specified code requirement(s)

Refer to the Code Signing and Application Sandboxing Guide for more information.

Invalid Signature - the nested app bundle XojoFramework at path MyApp.app/Contents/Frameworks/XojoFramework.framework is not signed with an Apple submission certificate. Refer to the Code Signing and Application Sandboxing Guide for more information.

[/code]

Ignore the [ b ] tag, I thought I wanted to bold those but apparently it did not come out as it should.

In any case, reverting back to 2013 Release 4.1 fixes the issue for now. It is an urgent submission so I am going for that first until a fix arises.

[quote=72005:@Edwin Lau]In any case, reverting back to 2013 Release 4.1 fixes the issue for now. It is an urgent submission so I am going for that first until a fix arises.
[/quote]

And you’ll pass their QuickTime deprecation test with 2013r4.1? Let us know how that works.

It means that you’re not correctly code signing the framework, you need to also sign the framework with your code signature.

I’m not getting any messages like what Edwin Lau is pointing out. The only reason my app got rejected is the description I provided in my original message.

Sam, do you really think this is an App Wrapper issue?

I will need to double-check with my client to see if it’s okay to share the application.

[quote=71973:@Scott Crick]
The package uploaded fine with Application Loader (which gave me no errors). However, a few minutes after the upload was complete, I got a rejection notice from Apple. The notice indicated that the app was rejected because of “Malformed Frameworks”. [/quote]
OK well this is truly puzzling since we build 2014r1 with 2014r1 and when I peek inside Contents > Frameworks XojoFramework.framework I see what looks to be all the items Apple’s complaining about

What they’re saying is that the hierarchy should be

Contents Frameworks XojoFramework.framework Resources -> a symlink that leads to 'Versions/Current/Resources' XojoFramework -> a symlink that points to 'Versions/Current/XojoFramework' Versions Current -> a symlink that points to the Current version
When I use terminal and peek I see exactly what I expect

lrwxr-xr-x   1 npalardy  admin   26 Mar  4 01:59 Resources -> Versions/Current/Resources
drwxr-xr-x@  4 npalardy  admin  136 Mar  4 01:59 Versions
lrwxr-xr-x   1 npalardy  admin   30 Mar  4 01:59 XojoFramework -> Versions/Current/XojoFramework
server:XojoFramework.framework npalardy$ cd Versions/
server:Versions npalardy$ ls -al
total 8
drwxr-xr-x@ 4 npalardy  admin  136 Mar  4 01:59 .
drwxr-xr-x@ 5 npalardy  admin  170 Mar  4 01:59 ..
drwxr-xr-x@ 5 npalardy  admin  170 Mar  4 01:59 A
lrwxr-xr-x  1 npalardy  admin    1 Mar  4 01:59 Current -> A

Poke about in the Frameworks dir of your built app and see as this sure looks right to me

I’m concerned it might be… I’ve just wrapped an application here with App Wrapper version 2.5 and I get the same result as Norman.

total 16 drwxr-xr-x 5 rowlands staff 170 Feb 6 11:36 . drwxr-xr-x 3 rowlands staff 102 Feb 6 11:36 .. lrwxr-xr-x 1 rowlands staff 26 Mar 17 10:53 Resources -> Versions/Current/Resources drwxr-xr-x 4 rowlands staff 136 Feb 6 11:36 Versions lrwxr-xr-x 1 rowlands staff 30 Mar 17 10:53 XojoFramework -> Versions/Current/XojoFramework Sams-Retina-MacBook-Pro:~ rowlands$

The output I’m getting looks a little different than Sam’s and Norman’s:

total 3608 drwxr-xr-x 5 scrick staff 170 Mar 16 14:57 . drwxr-xr-x 63 scrick staff 2142 Mar 16 15:51 .. drwxr-xr-x 56 scrick staff 1904 Mar 16 14:57 Resources drwxr-xr-x 4 scrick staff 136 Mar 16 14:57 Versions -rwxr-xr-x 1 scrick staff 1844560 Mar 4 02:59 XojoFramework

Sam, I guess I should’ve pointed out that I used AppWrapper 2.5 Beta (197).

The Application Loader did not complain about that and the app package is now pending review in iTunes Connect. I will update when I get an update from Apple.

The other apps last updates was at the end of February and they have been accepted at the App Store. Those were compiled with 2013r4.1

Thanks. I will try that with my other app later in the week.

Do I need to sign every file in the framework bundle or just the .framework file would do ?

I’m getting the same thing. And you can’t just sign the new Xojo Framework…it says it’s already signed.

Back to 2013 R4.

Does Xojo even test their new releases with the MAS? Jeez…

Uploaded just fine with 2013 R4.1. It’s the new Xojo Framework that’s messing it up. Stay on 2013 R4.1 for now if you use MAS.

Thank you for the confirmation. I will stick with 2013 R4.1 for now.

[quote=72014:@Scott Crick]The output I’m getting looks a little different than Sam’s and Norman’s:

total 3608 drwxr-xr-x 5 scrick staff 170 Mar 16 14:57 . drwxr-xr-x 63 scrick staff 2142 Mar 16 15:51 .. drwxr-xr-x 56 scrick staff 1904 Mar 16 14:57 Resources drwxr-xr-x 4 scrick staff 136 Mar 16 14:57 Versions -rwxr-xr-x 1 scrick staff 1844560 Mar 4 02:59 XojoFramework

Sam, I guess I should’ve pointed out that I used AppWrapper 2.5 Beta (197).[/quote]
Yeah this would be wrong

I suspect Apple will reject your app as depending on Quicktime or QTKit
Thats why we even made some of the changes for 2014r1

Okay. I think I have confirmed it is not an issue with Xojo. With a fresh build out of Xojo the Xojo Framework seems to have the proper symlinks:

total 16 drwxr-xr-x+ 5 scrick staff 170 Mar 16 15:47 . drwxr-xr-x+ 63 scrick staff 2142 Mar 16 15:47 .. lrwxr-xr-x 1 scrick staff 26 Mar 4 02:59 Resources -> Versions/Current/Resources drwxr-xr-x+ 4 scrick staff 136 Mar 16 15:47 Versions lrwxr-xr-x 1 scrick staff 30 Mar 4 02:59 XojoFramework -> Versions/Current/XojoFramework

So, it seems that something is being messed up by App Wrapper, which is the next step in my process. As I said above, I was using the Beta version of App Wrapper 2.5 (which may have not been the best idea for a release application, but was doing so to handle another situation I was running into). I’ll have some time later today to mess with the current release version of App Wrapper and see if the same problem is happening there.

[quote=72025:@Norman Palardy]I suspect Apple will reject your app as depending on Quicktime or QTKit
Thats why we even made some of the changes for 2014r1[/quote]
I submitted a Cocoa app made with 2013r4.1 to the MAS just fine last week. The important part is to avoid using anything that uses QuickTime, e.g. movies and such.