Invalid Bundle Structure for WatchKit - xcode6

I'm trying to submit a WatchKit app to the App Store but get this error.

Another cause for this is including a WatchKit or any other TargetApplication.app inside your application bundle.
Do not include any in your project settings > target > Build Phases > Copy Bundle Resources.
A bug in Xcode (6.2..) added it there when I tried to add it to Target > General > Embedded Binaries. Nothing changed in that section and no errors were shown so I ignored the bad feeling it gave me.
After hours dealing with other certificate issues (and hosing all of our TestFlight testers, due to revoking distribution certs, which was apparently/probably required), upgrading to Xcode 6.3.1 I finally remembered this bad feeling and found the app watchkit application lurking in the Copy Bundle Resources section and removed it.
In addition to the Invalid Bundle Structure error above the specific errors exhibited for me were:
ERROR ITMS-90378: "CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value 'com.company.App.watchkitapp' under the iOS application 'App.app'
ERROR ITMS-90451: "CFBundleIdentifier Collision. The Info.plist CFBundleIdentifier value 'com.company.App.watckitapp' of 'App.app/App Watchkit App.app' is in conflict with the Info.plist CFBundleIdentifier value of 'App.app/Plugins/App Watchkit Extension.appex/App WatchKit App.app'
All were gone and submission worked fine after removing.
Also, validation passed fine even with both instances of the watckit app.

You cannot submit WatchKit apps yet even though Xcode 6.2 and iOS 8.2 are officially out. See the following answer for more info.

Related

ITMS-90424: Invalid Swift Support

I am trying to upload my app to the app store. I can archive my app and successfully upload to App Store Connect, however, it keeps getting rejected with the following error message:
Dear Developer,
We identified one or more issues with a recent delivery for your app, "Retainer Tracker" 1.0 >>(8). Please correct the following issues, then upload again.
ITMS-90424: Invalid Swift Support - The SwiftSupport folder is empty. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
Best regards,
The App Store Team
I've tried a bunch of diffrent fixes I've found online but still can't get it to work. Can anyone help?
The basic reason is your application using swift and your swiftsupport folder is empty. Let's move in detail
If your application using Xcode to make .ipa file and there is no third-party IDE involve to create Xcode project, you can fix this issue by upgrading your Xcode
If you are using some other IDE to make the Xcode project then please follow that link. I already give the answer to this question. Invalid Swift Support - The SwiftSupport folder is empty
The problem occurred right after I added a specific Swift Library
Doing the following fixed the issue in my case
Go to Targets > YourApp > Build Settings
Under Packaging:
Defines Module: Yes
Under Assets:
Always Embed Swift Standard Libraries: Yes
ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
For us, our CICD pipeline was using an Ad-Hoc Provisioning Profile to distribute the ipa build to Testflight/AppStore.
We fixed this by using an App-Store Provisioning Profile instead.

Xcode error when running on connected device: "he executable was signed with invalid entitlements"

Issue Description
I'm working on an app based on ReactNative 0.40, I am using Fastlane for beta deployments and I'm using Match to manage my signing profiles. Most things work as expected, however:
Issue:
When I try to run my app on a physical device directly from Xcode 8, it gives me this error:
This is what I've tried:
[x] Follow Apple's Entitlements Troubleshooting Guide
[x] made sure that the entitlements selected in XCode's "Capabilities" screen match the ones selected in the app id on the developer panel.
[x] Re-ran match. i.e. fastlane match development fastlane match adhoc fastlane match appstore
[x] Ran fastlane match decrypt and then security cms -D -i /path/to/***.mobileprovision. Although I'm not entirely sure what I'm looking for that is missing/extra/invalid.
Questions:
What should these settings be for both the project and the target?
Which signing identity should be used for running the app on a device from xcode during development?
What else can I try to troubleshoot this?
... and, finally fixed this. Just in case some other poor soul out there is spinning their wheels, here's what was broken in my case.
The App ID on the dev portal has 3 options for data protection:
However, Xcode doesn't:
The setting has to match anyway, so I hadn't noticed that the entitlements file was set to NSFileProtectionComplete as opposed to NSFileProtectionCompleteUntilFirstUserAuthentication
Making that change, along with switching to Automatic Signing (which in hindsight might have had no effect), fixed the issue. I may switch back to match-managed development profiles and see what happens.
I got this error due to trying to build with a wrong Scheme.
I used Release config by mistake instead of debug config
So double check whether correct Scheme / Build config is selected

Works on Simulator, fails on device: error: WatchKit App doesn't contain any WatchKit Extensions

I am seeing the following error when trying to run a project on a real device, in the simulator it runs fine.
error: WatchKit App doesn't contain any WatchKit Extensions. Verify that the value of NSExtensionPointIdentifier in your WatchKit Extension's Info.plist is set to com.apple.watchkit
Things which may or may not be relevant
I am using cocoa pods in both the watch and main app target
The project is mostly objective-c but has a few swift files
Xcode 8.1 (8B62)
Device Software Versions: iOS 10.1.1 & WatchOS 3.1
Deployment Info > Deployment Target: iOS 10.0 watchOS 3.0
Things I’ve tried
I have checked several times that all the correct files belong to the watch target. I may have missed something here, but I assume it wouldn’t run on the simulator if this was the case
Bundle identifiers
main app’s identifier: < app id >
watch app’s bundle identifier: < app id >.watchkit
watch app’s WKCompanionAppBundleIdentifier: < app id >
watch extension’s bundle identifier: < app id >.watchkit.extension
watch extension’s NSExtension>NSExtensionAttributes>WKAppBundleIdentifier: < app id >.watchkit
NSExtension>NSExtensionPointIdentifier: com.apple.watchkit
WKWatchKitApp is set to YES in both the Watch Extension and the Watch App
I have removed and re-added the .appex from Build Phases>Embed App Extensions
Ensuring Mach-O Type is set to executable in all targets
Re-installing pods as described in this answer
Clearing derived data
Clearing build folder
Restarting Xcode
I tried an archive and this failed with the same error
In lieu of an answer, advice on debugging / troubleshooting this would be appreciated too.
I've seen this intermittently, but usually rebuilding a second time fixed it. I've never got to the bottom of why.
I've always assumed it's a bug in Xcode.
Sorry can't be more help, but you're not alone in seeing this.
I encountered this error, with 3 other errors.
Turned out the problem is that Valid Architectures is set incorrectly. Under Build Settings, make sure Valid Architectures includes i386 and armv7k.
Once that is fixed, the watch extension will be build, and all errors gone.

Installing the app Extension to the device?

I am trying to install my application extension on my iPhone device, but I am getting the following error:
This application or a bundle it contains has the same bundle identifier as
this application or another bundle that it contains. Bundle identifiers must be unique.
The app container have the bundle id: com.companyName.AppName and the bundle identifier for the app extension is com.companyName.AppName.WidgetApp.
I have tried to sign the extension with the same provisioning, also I have installed a different AppID from the apple developer site and new provisioning profiles for the App Extension and Also tried to set the signing for the extension Widget to Automatic but still the same error and the app cannot be launched on the device.
What should i do in order to install my application extension to the device?
Here are screenshots of my General Tab for both my app and the Extension:
App:
Extension:
Thank you.
Executing a clean command worked for me.
This is done through the XCode menu item; Product > Clean or SHIFT + COMMAND + K
I had this exact problem and it was due to having a duplicated framework included in the build. I had included both a test and non-test version of the same dynamic framework. Once I removed one, the installation proceeded as expected.
I'm sharing this in the hopes that it will help someone else in case they encounter this particularly obscure situation.
In Swift :
If you installed pods then you have to change bundle identifier as org.cocoapods.podName in general identity. Make sure deployment target of all pods should be same to the project’s deployment target.

Could not load the "TweetSheetLocationArrow.png" image... Twitter/Social Framework for iOS

I am using Twitter and Social framework in my app for iOS. I have been using the same frameworks for days now without any issues. However, today when I run the app in the simulator (haven't changed any Twitter or Social specific code), I get the following error as I try to send a tweet from my app:
Could not load the "TweetSheetLocationArrow.png" image referenced from a nib in the bundle with identifier "com.apple.sociald.Social"
Any idea what's this problem is related to and how can I fix this?
The tweet sheet wants the resource "TweetSheetLocationArrw.png" at runtime from a nib bundle with the bundle identifier specified ( if that doesn't mean anything to you google "apple bundle programming guide" ) and it is either unable to read the resource, or the resource no longer exists.
Ignore it. It's a missing image asset in the device simulator and is harmless.