Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging on real Apple Watch

I updated my app for Apple Watch, but I should have weighed it too much and now it's definitely slow. I can't understand the reasons of this slowdown so I would like to debug app but I don't know how to do that because in the simulator app works normally, slowdowns manifest only on the device.

I tried running app directly from xCode on Watch but once xCode launched the installation of the app on the Watch, it stops the run so I can't see what happens while running (for instance when run certain breakpoint or otherwise do us debug).

Does anyone have an idea of what's the right way to debug on a physical Apple Watch?

P.S.: For instance, this code:

func clearScreen() {
    firstPicker.setSelectedItemIndex(0)
    secondPicker.setSelectedItemIndex(0)

    defaultLabels()
}

func defaultLabels() {
    feesLabel.setText(NSLocalizedString ("FEES", comment: "Commissioni"))

    clearAllMenuItems()
    addMenuItemWithItemIcon(.Decline, title: NSLocalizedString("CAN_CEL", comment: ""), action: "clearScreen")
    if DefaultParameter.sharedInstance.wishMode == true {
        addMenuItemWithImage(UIImage(named: "will")! , title: NSLocalizedString("WILL_RECEIVE", comment: ""), action: "willWishButtonPressed")
        receivedLabel.setText(NSLocalizedString ("DESIRED_AMOUNT", comment: ""))
    } else {
        addMenuItemWithImage(UIImage(named: "wish")! , title: NSLocalizedString("WISH_RECEIVE", comment: ""), action: "willWishButtonPressed")
        receivedLabel.setText(NSLocalizedString ("RECEIVED_AMOUNT", comment: ""))
    }
}

takes around 7 seconds to run...

like image 884
Matte.Car Avatar asked Jan 09 '16 15:01

Matte.Car


People also ask

Does Apple Watch have an API?

Apple provides the Apple Watch which does provide some aspects of heart rate variability and that information is exposed via a HealthKit API: HealthKit APIs are device-based APIs as that data is stored on device in the iOS Health database.

How do you poke on Apple Watch?

Press the side button on your Apple Watch to launch the Friends interface. Use the Digital Crown to select the person you want to tap. Tap on the finger icon. Tap the screen as many times as you'd like, where you'd like.


1 Answers

I do not recommend trying to debug your Apple Watch app by pressing the Run button in Xcode. It is very unpredictable as to whether or not it will work. Here is how I debug on the Apple Watch and it works for me every time:

  1. Connect your iPhone to your computer running Xcode
  2. Run your app on your iPhone from Xcode
  3. Click the stop button in Xcode
  4. On your Apple Watch, make sure that the new app update has been transferred over (Note that if you didn't make any changes to the watch app, a new one doesn't seem to get copied over at the moment).
  5. Launch your watch app from your watch (no Xcode yet!)
  6. In Xcode select the Watch Extension from the schemes, make sure your device is selected from device list, should show your phone + your Apple Watch.
  7. In Xcode, click "Debug -> Attach to process" and pick your watch extension's process. Note that you will see a process for both your watch app and the watch extension. Make sure to pick the watch extension
  8. On your watch, tap on some UI element, such as a button.
  9. Your watch app will have a loading spinner appear in the middle of the screen. This spinner continues until the watch can connect to Xcode. Sometimes this take a few minutes (around 3 for me!). When the spinner stops then you should be able to debug in Xcode normally.

The only trick is to be patient when waiting for Xcode to connect in step 8. It is definitely slow to do, but gives you far more performance information that running on the simulator.

like image 50
lehn0058 Avatar answered Oct 23 '22 08:10

lehn0058