My watchkit app extension has suddenly stopped launching. I have a breakpoint in (void)awakeWithContext:(id)context, but that does not get called.
I am running the WatchKit app extension, and all the certificates are in order. I have a 42mm screen set as the external hardware display. I have tried re-starting XCode.
I had during the course of development cleared my DerviedData. This removes the WatchKit extension from the list of embedded binaries in the app. To fix this, you have to
1. Rebuild the project.
2. Click on Add Embedded Binaries, select the "App Name WatchKit extension.appex" file.
This solved the problem for me.
Related
I added a new watch app for an existing iOS App that is build with react native. I never developed a watch app before. I read everywhere that this should create two targets, the watch App and the App extension. But only a watch app gets created.
Now I want to add a complication for this watch app. I tried to follow the steps here and here. It says that on the general tab of the extension (which is not present in my project) I should configure the Complication Configuration. But this option is just not present.
Was this changed with watchOS 9 or am I missing something else?
I’m having a similar issue after creating a watchOS app in Xcode 13 without an initial complication. Fortunately, I was able to work around the missing configuration UI by manually setting the values.
Assuming you’ve followed these steps of creating the ComplicationController class and “Complication” placeholder in Assets,
Go to Project -> watch app target -> Build Settings
Set “Complication Principal Class” to $(PRODUCT_MODULE_NAME).ComplicationController under Info.plist Values
Set “Watch Complication Name” to Complication under Asset Catalog Compiler - Options
I want to get main app, today-extension debug info at same time.
I run the scheme main app and got only main app debug info.
I try the attach by Process Identifier(today-extension id) but it's blank when I select today-extension process.
What should I do?
Basically select the Watch App as the scheme in xcode, hit build+run
which will build the iOS app and WatchKit app, install the WatchKit
app on to the Watch and attach the debugger to the WatchKit Extension.
Then in xcode select the iOS app in the scheme selector and select the
iPhone as the target device, launch the iOS app by tapping the app
icon on the phone and in xcode in the menu bar select "Debug > Attach
to Process" and select your app in the list. This should result in
having xcode attached to both processes at the same time. If you want
to debug something early in the iOS app's lifecycle you can select
"Debug > Attach to Process by PID or Name..." and type in the process
name of the iOS app prior to launching it manually. This way the
debugger will be attached right when the app launches.
From Apple Developer site.
Note that they discuss WatchKit but it´s the same for Today Extension.
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.
I am trying to debug and run the app on apple watch simulator. I have tried by using different target for notification, Glance and Watch app but apple simulator don't shows any thing.. It stuck in waiting for attach process of extension. I just see a black screen for the Apple Watch Simulator.
What did I do wrong?
How to overcome this issue ?
This post from the dev forums solved my issue. More specifically, this excerpt:
In order for Watch apps to function properly, certain properties
must match across the Watch app and its App Extension (18857540):
The WKAppBundleIdentifier property of NSExtensionAttributes in the WatchKit App Extension’s Info.plist must match the
CFBundleIdentifier of WatchKit App's Info.plist.
The WKCompanionAppBundleIdentifier property of the WatchKit App's Info.plist must match the CFBundleIdentifier of the Containing iOS App's Info.plist.
I have exactly same problem. I created a new project and added WatchKit extension in Xcode 6.2 beta 4 with WatchKit. I tried all ways mentioned in other answers but still failed to let watch app run in the simulator. Finally, I made it work.
My steps:
Delete the containing app in the iPhone simulator.
Clean your project in Xcode.
Do not run the containing app, run the WatchKit app from Xcode.
I had the same issue. The only thing that helped was to delete and recreate the target scheme.
Before spending a lot of time on changing things, restart Xcode. Sometimes, this solves the problem.
Even if everything is configured correctly, it may take 20 seconds to attach the process to the debugger.
You need to run the Watch App target and then from iPhone/iPad simulator check (Hardware -> External displays), any one of the Apple Watch options.
I was experiencing the same issue. Mainly when creating an app extension in an existing app.
I was able to consistenly solve it by doing the following steps:
Make sure that the app extension gets the .appex extension. XCode tends to set it to .app. You can do this under 'build settings' -> 'wrapper'.
Under the 'Build Phases' tab in your target, your app extension should be listed under 'Embed App Extensions'. If you don't see this section, you can enforce it by adding a normal app extension to your app (fe. action extension). The section will now be visible. Replace the dummy extension you just created with the Watch app extension.
Start the host app and then start the Watch app, it should be working now.
I had some trouble on iPhone 6 simulator, but each time I switch on iPhone5S it works.
In my case the trouble was caused by a scheme with missing target although not the one I was trying to run.
Hope that helps somebody.
I was running into this problem as well and tried a few of the suggestions above. I found that deleting and recreating the target scheme resolved it. Everything is working fine now.
I'm trying to debug the sample Action App Extension provided on Xcode 6 (6A313).
Even though the app runs flawlessly, I can't see any NSLog messages on the Debug Area neither Xcode will stop on my break points.
Things I've tried:
I've tried uninstalling Xcode 6, re-downloading it from the Mac Store and installing again with no success.
I've also tried to go through Debug -> Attach to Process -> By Process Identifier (PID) or Name... but the Status Bar shows "Waiting for -bundle id- to launch" when it is already running.
Tried different devices.
Tried running on the simulator, but my App Extension won't show on the App Extensions list (it is not present in the "more" list also).
I've checked this answer also, which didn't help me.
I've ran out of ideas on what to do :)
When you added the Application Extension target Xcode should have added also a new Scheme for the Extension (or you can create one in 'Manage Schemes...').
If this happened you just have to change the Active Scheme, on the very left of the drop down with which you choose the device/os of the simulator, and run.
If you change the Active Scheme to the Widget one, then breakpoint and NSLog works, at least for me.