Search code examples
iosxcode

ERROR ITMS-90171: "Invalid Bundle Structure The binary file APP.app/libswiftRemoteMirror.dylib is not permitted


I'm going to convert sift 2.2 to swfit 3.0 and uploading to itunes store then get one error.

I'm so tired with this error:-

ERROR ITMS-90171: "Invalid Bundle Structure - The binary file 'ideaPitch.app/libswiftRemoteMirror.dylib' is not permitted. Your app can’t contain standalone executables or libraries, other than the CFBundleExecutable of supported bundles. Refer to the Bundle Programming Guide at https://developer.apple.com/go/?id=bundle-structure for information on the iOS app bundle structure."

I have try some solution like this question but did not get proper result.

Any one can hlep me out.


Solution

  • I assume that you're generating the IPA on the command line.

    Your best option is to simply use the Xcode7/8 default way to generate an IPA file:

    xcodebuild -scheme $SCHEME clean archive $ARCHIVE_PATH
    xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath $IPA_PATH -exportOptionsPlist $EXPORT_PLIST
    

    This approach will automatically take care of removing the libswiftRemoteMirror.dylib from the resulting IPA file.

    Alternatively you will have to remove the dylib on your own. You'll have to do it after creating the xcarchive but before exporting it to an IPA file: rm -rf $APP_PATH/libswiftRemoteMirror.dylib

    EDIT

    In case you can't rebuild the IPA on your own and just want to remove the libswiftRemoteMirror.dylib from it, you'll have to resign it: unzip the IPA, delete the dylib, re-codesign the bundle and zip it together again:

    unzip AppName.ipa -d IPA
    cd IPA
    rm -rf Payload/$APP_NAME.app/libswiftRemoteMirror.dylib
    codesign -vfs '$IDENTITY_NAME' Payload/$APP_NAME.app
    zip -r --symlinks New_IPA.ipa *
    

    Replace $APP_NAME with the name of your App bundle. Replace $IDENTITY_NAME with the name of the codesign identity used to originally sign the app. If unknown, you display it with codesign -dvv Payload/$APP_NAME.app 2>&1 | grep Authority | head -1 | cut -d= -f2.

    The matching Certificate and Private Key must be present in your keychain for a successful resign. If your app uses special entitlements for push, associated domains etc., you'll have to pass a proper --entitlements param to the codesign command above.