Error: WatchKit Extension doesn't contain any WatchKit apps. - ios

Verify that the value of WKWatchKitApp in your WatchKit App's Info.plist is set to YES.

After weeks and weeks of investigations i finally found out the problem.
The product name of the Iphone App was the same as the product name of the Watch App.
Once i changed the Product Name of the WatchApp it worked.
go to your targets. Select the watch app target
go to build settings. Search for Product Name
Edit your Product name to be different than the App Target!
Clean and Build. Should Work. Thanks

It seems like this is the default error msg for random stuff on Xcode 7.
All of a sudden I got that error constantly when trying to Archive.
After retracing my steps I've learned that changing the Build Location to Custom - > Relative to WorkSpace is responsible for that error: WatchKit Extension doesn't contain any WatchKit apps..
Setting the Build Location back to Shared Folder -> Build fixed it completely.

Related

iOS - Missing CFBundleIconName in Xcode 9.2

I am uploading build to release app using Xcode 9.2 built with iOS 11 SDK. Binary is archived and uploaded successfully, but I get the following email back.
Dear developer,
We have discovered one or more issues with your recent delivery for
"". To process your delivery, the following issues must be corrected:
Missing Info.plist value - A value for the Info.plist key
CFBundleIconName is missing in the bundle ''. Apps that provide icons
in the asset catalog must also provide this Info.plist key. For more
information see
http://help.apple.com/xcode/mac/current/#/dev10510b1f7. Once these
issues have been corrected, you can then redeliver the corrected
binary.
Regards,
The App Store team
I found a solution.
Missing CFBundleIconName in Xcode9 iOS11 app release
But i need little bit more. I don't want to use *.xcassets file for app icon. I want to use image in xCode project folder for app icon.
Is it possible in xCode 9.2? if yes then how?
Haven't seen this listed on any of the other posts but this was my issue.
Make sure to check the target membership of your assets directory! If you do not correctly link the membership here, you will get this same super-generic error(Apple should do something about the error messages).
The target membership should correlate directly to targets for which you are using the icons. For example, I use this single directory for both my main app, and watch app assets, you must specify this by selecting the appropriate member.
There is a direct option not to use app icon from Assets

Failed to install app error: Invalid Bundle - No Apple Watch Binary

I'm trying to develop an extension of my app for the Apple Watch.
Instead of install the app on the watch, I have this error:
AppName Failed to install AppName, error: Invalid Bundle - No Apple Watch Binary
In my info.plist files...
For the extension, I have:
<key>CFBundleIdentifier</key>
<string>com.mycompany.AppName.watchkitextension</string>
<key>WKAppBundleIdentifier</key>
<string>com.mycompany.AppName.watchkitapp</string>
For the WatchKit app, I have:
<key>CFBundleIdentifier</key
<string>com.mycompany.AppName.watchkitapp</string>
<key>WKCompanionAppBundleIdentifier</key>
<string>com.mycompany.AppName</string>
And for my app, I have:
<key>CFBundleIdentifier</key>
<string>com.mycompany.AppName</string>
Did I miss something?
This error plagued me for about 7 hours then I restarted my watch out of desperation and the error went away.
I was plagued with this error for hours. For me, the problem was that my WatchKit Extension's Deployment Target was set to an iOS version higher than my phone's. I simply changed it to match my device's version and it worked perfectly.
For me the problem was fixed by adding the watch app to my iOS target's Embed Watch Content section.
I'm using Xcode 7 and watchOS 2.0. It was building fine on the device, but the simulator was giving me this error.
Steps:
Find your iOS target
Click Build Phases
Ensure your watch app (.app) is included in "Target Dependencies" and "Embed Watch Content"
Try explicitly setting the "Executable file" in the WatchKit app's info.plist.
I had changed the name of my executable file and had the same issue.
In my case, none of these solutions worked for me, however I noticed that by default, my WatchKit App required iOS 8.3, and my phone was running iOS 8.2. Updating the OS to 8.3 solved my problem. It may seem like an obvious solution, but I thought I would share for anyone who could share my problem.
In my case, I got it when building app for WatchOS2. I fixed by setting the schemes like this:
The Watch Extension Scheme builds
3 Target: iPhone (2 dependencies) + Extension (no dependencies) + Watch App
Running Extension Scheme on iPhone simulator -> works!
In my case it was an Info.plist configuration error. The Bundle identifier was different to the NSExtension -> NSExtensionAttributes -> WKAppBundleIdentifier.
Setting the same value fixed the error.
Resets of watch/xcode/iphone doesn't help sometimes, as it described in other answer.
One more case to solve this:
This error appears, when I change iPhone language of my iPhone to not English (in my case - Russian) language.
When I set back English - everything start works as usual!
Make sure:
The bundle id of iOS app is prefix of watch app & extension' bundle id.
Value of WKCompanionAppBundleIdentifier in Info.plist of your watch app matches bundle id of your iOS app.
iOS app, watch app & extension should signed by the same cert.
There must be a build phase in iOS app target:
Destination: Products Directory
Subpath: $(CONTENTS_FOLDER_PATH)/Watch
Click +, add your watch app target.
Filling in the Bundle Display name in the info.plist.Default is blank,there will be an alert.(Xcode 7.3)

Watch kit CFBundleVersion

Planning for watch kit integration
error: The value of CFBundleVersion in your WatchKit app's Info.plist (1) does not match the value in your companion app's Info.plist (2.0). These values are required to match.
Struck with above error.
- changed the deployment targets of both notification & watchkit app. But build failed
Thanks.
You need to make sure that the CFBundleVersion in the Info.plist of your WatchKit App is identical to the CFBundleVersion in your parent app’s Info.plist.
For those of you who struggling with adapting your build autonumbering scripts (like this one) to WatchKit and getting the same dreaded The value of CFBundleVersion in your WatchKit app's Info.plist ... does not match the value in your companion app's Info.plist ... error, here is the solution: set Strip Debug Symbols During Copy to No for the project, remove same option overrides for all targets, make clean (Cmd+Shift+K) and build (Cmd+B).
Disclaimer: this is more hack than a solution, I don't know why it works, but it's the only way I got my autonumbering script working with WatchKit and I think this information would be useful for someone. If you have better ideas, please share.
Update: finally found a real solution. Turns out even without UI one could easily add a run script to WatchKit App target by manually editing project.pbxproj. Thank you, Curtis Herbert!
error: The value of CFBundleVersion in your WatchKit app's Info.plist (14) does not match the value in your companion app's Info.plist (13). These values are required to match.
I finally figured out the problem is the value of my companion app 's Info.plist which equals to 13, is not equal to that value in WatchKit App.
So you have to make sure that the Bundle version panel 's value in each Info.plist is matched.
After installing WatchKit application extension.There was conflict in
Bundle versions string, short && Bundle version .
So Update both of Keys to values which are equals in both the Extension and main app targets in info.plist file .
&&
When ever you get such problems after updating build number or version. Please follow the steps, which worked for me :
Clean the project
Try to run the project in any one of the simulators
Build or Archive
welcome to the party. I was able to work through this by editing the Info.plist ion both Watchkit App and Watchkit Extension, and then editing the marketing version in the AppName(root level)/Targets/AppName/Versioning/Marketing Version.
Hope this helps anyone else that comes across this issue.
I got this error when I create new target watch kit with different team selected by default while creating the watch app for ios app so i just deleted the targets and again add with same team as my project.

Apple Watchkit simulator issue: SPErrorInvalidBundleNoGizmoBinaryMessage

When I open my existing Watchkit app (Xcode 6.2), it compiles correctly, the simulators are launched (iPhone+Watch), followed by the meaningful error:
Error Launching 'xxx Watchkit Extension'
SPErrorInValidBundleNoGizmoBinaryMessage
I have this issue with all simulators (iPhone 5/5S/6/6+ - 38mm/42mm)
Any ideas what the issue can be?
It seems for some reason the application does not want to run on the simulator, even though it used to. The iPhone application included in the same project does run, as do other Watchkit sample applications.
Did you change the bundle ID of your app? If so you may need to manually update the WKAppBundleIdentifier in the WatchKit Extension and also the WKCompanionAppBundleIdentifier in the WatchKit App.
WKAppBundleIdentifier may need to be same to WatchKit App's Bundle Identifier.
Please check WatchKit Extension's info.plist.
NSExtension - NSExtensionAttributes - WKAppBundleIdentifier - xxxxx.watchkitapp
EDIT: Further explanation to clarify...
Under your App target you go to INFO tab and set Bundle Identifier to com.myapp
Then under the WatchKit Extension target you go to INFO tab and set the Bundle Identifier to com.myapp.watchkitextension
Then still under the WatchKit Extension target and still under the INFO tab you set NSExtension > NSExtensionAttributes > WKAppBundleIdentifier to com.myapp.watchkitapp
So one ends with .watchkitextension and the other ends with .watchkitapp
Check Info.plist for "Your App WatchKit Extension" & "Your App WatchKit App". First part of all indentifiers should be same.
In my case problem was in "Your App WatchKit Extension" > NSExtension > NSExtensionAttributes > WKAppBundleIdentifier.
Be sure you are using an 8.3 simulator.
I got this message consistently when using 8.2. Tried everything listed here and struggled with this for hours. Switching to 8.3 resolved it. Ironic, since you must set the deployment target to 8.2 at the moment, but watchkit apps need 8.3 to run I guess...
I checked all bundle identifiers multiple times but couldn't get rid of the issue. Neither did cleaning the build folder work out.
However, I was able to sort it out by turning off Game Center at the Capabilities of my WatchKit Extension.
Turning it on for the iOS host app seems to work fine, but turning it on for the WatchKit Extension results in the SPErrorInvalidBundleNoGizmoBinaryMessage error when attempting to run the WatchKit App in the simulator, while it completes building without any complaints.
I'm developing a game for Apple Watch and was looking forward to support Game Center. It was actually my plan from the very beginning to communicate with the hosting iOS app to do so, but then I saw Game Center listed in the Capabilities of the WatchKit Extension itself, so I expected to be able to deal with it right there. However, as it doesn't seem to work, I'm going to stick to my original plan to support it through the hosting iOS app.
Xcode Version 6.2 (6C131e)
EDIT: Same issue with Xcode Version 6.3 (6D570)
For issues on real devices (not simulator), do everything in this post:
http://blog.jaredsinclair.com/post/117350678170/jareds-code-signing-tips-apple-watch-edition
Most importantly:
All three targets require the following:
a unique app ID for that target a code signing identity (applies to
all targets) a unique provisioning profile for that target.
and make sure that the app ID's are consistent:
Your app IDs will look something like this:
com.company.App-Name
com.company.App-Name.todaywidget
com.company.App-Name.watchkitapp
com.company.App-Name.watchkitextension
If it still doesn't work, manually delete the app from the watch (by holding onto the icon and then hit 'x') and then try again. This was the kicker that did it for me.
The procedure I solved the problem is
Check if WKAppBundleIdentifier and bundle identifier in WatchKit extension and WatchKit App are correct
Delete subfolders of ~/Library/Developer/CoreSimulator/Devices
Delete subfolders of ~/Library/Developer/Xcode/DerivedData
Clean my project
Restart simulator
Run
I've been struggling with this as well. This is what solved my problem on Xcode 7.1 iOS 9.
Just Make sure you follow the naming below for your identifiers:
Target - com.myCompany.myApp
Watchkit app - com.myCompany.myApp.watchkitApp
Watchkit extension -
com.myCompany.myApp.watchkitApp.watchkitextension
The extension should have the identifier of the WatchKit app target + .watchkitextension
I've tried everything posted thus far in this thread but still couldn't get it to work. I resorted to backtrack to the point when it was working and retrace every single action that I've done to figure out at which point it breaks...
As it turned out, the WatchKit App's info.plist file does not like any custom plist entry, at least that is what I've found out in my case. I've added an entry called "MyAppBundlePrefix" and it caused the "Error Launching 'xxx Watchkit Extension' SPErrorInValidBundleNoGizmoBinaryMessage"
I wish XCode would offer a little bit more specific detail for that error but it took me about 5 hours to find it out by brute force way.

watchKit fails to run on simulator

I have made required changes for ListerWatchApp to run on simulator [link]. When I run the app it throws an error saying
The shared application group container is unavailable. Check your entitlements and provisioning profiles for this target. Details on proper setup can be found in the PDFs referenced from the README.
Even after changing the code Signing Entitlements.
Here is the link where i have downloaded the example :
link
I was able to run the Lister demo after searching the entire project for 'com.example.apple-samplecode' and replacing that with my own identifier 'com.mycompanyname'. After that I had to go to each target and fix the code signing entitlements plus the capabilities
So what I have to do is run a grep for all occurrences of com.example.apple-samplecode.Lister, right? I got 7 hits, 2 of which are plist-files:
/ListerOSX/Info.plist
/ListerWatch/Info.plist
<proj>/Common/AAPLAppConfiguration.m
<proj>/ListerKit/AAPLCloudListCoordinator.m
<proj>/ListerKit/AAPLDirectoryMonitor.m
<proj>/ListerKit/AAPLListsController.m
<proj>/ListerWatch/AAPLWatchStoryboardConstants.m
Do I have to replace the identifier into one oy my own in
1. all of them
2. just the plist files
3. or did I get it all wrong?
After a quick Fix Issue for iCloud and AppGroup in the Targets Capabilties tab everything is fine.
This enables App Groups and iCloud on the App IDs.

Resources