18
votes

I have a problem uploading my application into the Store via Xcode, this one in particular.

Invalid Bundle contains disallowed file frameworks

I saw a lot of post about this error, but all are talking about Extension App, that I do not use.

I'm using a Custom framework and Cocoapods.

You can see here my tree :

Tree Xcode Project Custom Framework

  • XXX is my project app name
  • SharedXXX is my custom framework
  • Pods is the project created by cocoa pods

Here is my cocoa podFile :

use_frameworks!
link_with 'XXX', 'SharedXXX'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.1'


workspace 'XXX'

xcodeproj 'XXX/XXX.xcodeproj'
xcodeproj 'Shared/SharedXXX.xcodeproj'

def default_pods
    pod 'Reveal-iOS-SDK', :configurations => ['Debug']
    pod "SnapKit", '~> 0.17.0'
    pod "DKChainableAnimationKit", '~> 1.6.0'
    pod "AsyncSwift"
end

def shared_pods
    pod "Alamofire", '~> 3.0'
    pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
    pod 'ReachabilitySwift', :git => 'https://github.com/ashleymills/Reachability.swift'
end

target :XXX do
    xcodeproj 'XXX/XXX.xcodeproj'
    default_pods
    shared_pods
end

target :XXXDev do
    xcodeproj 'XXX/XXX.xcodeproj'
    default_pods
    shared_pods
end

target :SharedXXX do
    xcodeproj 'Shared/SharedXXXX.xcodeproj'
    shared_pods
end

Build settings for custom framework (SharedXXX) :

Custom Framework build settings

I set the Embedded property to Yes

General Settings for custom framework (SharedXXX) :

Custom Framework General Settings

The framework provided by Cocoapods is linked.

And to finish,

The General Settings to the main project (App Project : called XXX on the tree)

Main project:

Any idea ?

2
From the error message it looks like SharedXXX.frameworks itself contains a file named "frameworks". Apparently apple doesn't like that. Check and see if there is a file by that name. If not then make sure framework isn't referenced twice by mistake. If all else fails google the error code - Sam B
I already googled the error code, but all talk about Embedded Swift property.. I don't have file named 'Frameworks' on my project.. Can it be a file from Cocoapods ? - Kevin Machado

2 Answers

38
votes

I solved the problem

Firstly, set into Build Settings

  • For main project (here XXX) : Embedded Content Contains Swift Code to YES

  • Custom Framework (SharedXXX) : Embedded Content Contains Swift Code to NO

  • Custom Framework (SharedXXX) : Runpath Search Path = @executable_path/../../Frameworks

This helped me solving that issue

15
votes

I faced the same problem while trying to upload from Xcode 9.3 This happened because I added 'use_frameworks' in my OneSignal NotificationServiceExtension

enter image description here

The value Always Embed Swift Standard Libraries found in Build Settings should be set to Yes only for you main Projects and not for your custom frameworks or extensions.