Today Widget on OS X not working - xcode

I can't seem to get my Today widget (or any extension for that matter) running in the Widget Simulator. The simulator launches and says "Couldn't Open Widget" along with
Failed to find Widget /Users/SomeUser/Library/Developer/Xcode/DerivedData/Build/Products/Debug/MyApp.app/Contents/PlugIns/MyApp.appex
I looked in Console app and I see this as well:
pkd[299]: ignoring mis-configured plug-in at /Users/SomeUser/Library/Developer/Xcode/DerivedData/Build/Products/Debug/MyApp.app/Contents/PlugIns/MyApp.appex: plug-ins must be sandboxed
But it is sandboxed in xcode! It's codesigned, sandboxed and the lot. Even if I try and deploy it on a new machine (registered as a developer machine with my developer provisioning profile), the widgets don't even show up in System Preferences.
Any idea what I need to do?

Okay finally found the problem. I was codesigning my app by hand (which had never been a problem before) since I had an intricate set of frameworks the app relied upon, and needed to hand copy them using a Copy / Runscript post-build script. Any way, it seems starting Xcode 7 at least, this no longer works as expected. The app works and codesign says the app has been signed correctly, but clearly something is happening behind the scenes that's breaking the codesignature. I ended up removing all my manual codesigning stuff and simply using Xcode's 'Copy Framework' post build step and checked 'Sign on Copy'. It's now finally working as expected.

I couldn't stop building & codesigning by hand, so I looked into Xcode build logs and found the difference :) in my case, I just added -fapplication-extension to compiler & linker flags, now it works!

Based on strangetimes's answer here a little more detailed answer:
First select your project and then your App Target (not the extension)
Then click on Build Phases, then on the top navigation on Editor,
here select first Add Build Phase and lastly click on Add Copy Files Build Phase.
That's it. Build again using the Widget Simulator and it should work now.

Related

Deploy a Swift OS X app locally?

I am not new to programming, but I am new to Swift. I have developed a small app that I have no intention of distributing, I just want to use it for myself. Everything works just as desired in XCode and now I want to deploy that app locally. How can I run my app on my machine without needing to have XCode also running? I just want to see my app in my Applications folder and run it when I want. Does XCode put build files somewhere that I can access them and use outside of XCode?
On the Product menu there is an Archive option. Select that to create an archive of your app.
Xcode should then automatically open the Organiser window with the archive of your app selected.
You'll see a big blue button called Upload to App Store on the right with two smaller buttons below it. The one you want is called Export... Press it and you'll get a pane giving you various export options with different kinds of signing.
The bottom option creates an unsigned .app file which you can put in your Applications directory.
NB As Eric D says, you can just drag the app out of the products directory, but unless you edit the scheme, that will give you a debug build with less optimisation and with asserts activated.
Update for Xcode 11.2
As Bell B. Cooper points out, the process has changed slightly. Now when you archive an app, you get a window listing the apps and a big blue "Distribute" button. Pressing this, gets you a dialog box giving you the various options. Which one you choose depends on what you want to do with the executable. With Catalina, unless it's just for your own use, you probably want to go for one of the options that involves signing the app.
Edit: while this answer still works, it targets old Xcode versions and uses the debug version of your executable. For recent Xcode versions, and for using the release version of your executable, see JeremyP's answer.
Each time you build an OS X application with the current scheme, Xcode automatically populates the "Products" folder with the related app bundle.
You can find this folder in the Project Navigator:
Xcode > Project Navigator > "Products" folder
Your .app is in there and ready to be used and/or copied to the /Applications folder.

tvOS Invalid Toolchain when Submitting tvOS 9.1 app

I'm trying to submit a tvOS app through iTunes Connect, and every time I try I get the following message:
Invalid Toolchain. New apps and app updates must be built with the public (GM) versions of Xcode 6 or later, and tvOS 8 SDK or later. Don't submit apps built with beta software.
I have made sure to update Xcode to it's newest App Store version, and I'm not using any beta software.
While I never ended up resolving this issue completely, I did find a workaround.
When submitting an app, iTunes Connect checks the compiled app's compatibility to the latest operating system (in this case, for tvOS 9.1 build 13U85). While compatibility is completely fine between the two, Xcode has a bug. During the archiving process, Xcode specified my archive as Build 13U78 which is inaccurate and not correct.
A workaround I found, which is quite simple, changes the archive's build from (in my case) build 13U78 to build 13U85.
First, we'll create an archive which is self explanatory.
Second (and this is essential) we need to do the following:
Open 'Show in Finder'
Next, you need to right-click your archive and choose 'Show Package Content'
Then go to Products, then Applications, then repeat the second step (right click the .app file, then choose 'Show Package Content').
Once you're there, open the Info.plist file.
You'll see some version information in it, but what we want are:
DTSDKBuild
...
DTPlatformBuild
These two options should be something like:
DTPlatformBuild 13U78
...
DTSDKBuild 13U78
Modify 13U78 to be the most recent build of tvOS, or in my case:
DTPlatformBuild 13U85
...
DTSDKBuild 13U85
You're almost done! Just save the modified Info.plist file and close it out. Then Submit to App Store- you're done!
Make absolutely sure you're using the most recent build of tvOS.

iOS9 Share Extension can not debug on Xcode

When I build share extension from Xcode for the real device, Xcode arbitrarily stop debug. But when I launch for simulator, the problem does not occur.
Environment
Xcode 7.1.1
iOS 9.1
Details
When I build share extension, Xcode shows "Finished running MobileSafari.app on iPhone", but Safari does not run. And, The square stop button is arbitrarily gray. So, I launch Safari by myself and choose my extension and post. The debug section does not show anything. Also, URL request is not sent Rails server.
This is the picture when I build the share extension for the real device.
I do not know why the real device can not launch share extension at Xcode.
If anyone know the answer about this problem, please tell me.
Typically you can debug a share extension by going to Debug -> Attach to process or PID and entering the name of your share extension. From there you can open the share extension on your device or simulator and Xcode's debugger should attach and hit breakpoints correctly. However, I've noticed that log messages do not show up when doing this, nor do values populate for variables in the debugger view.
Here's how I got the debugging to work correctly. Run the share extension scheme. When it asks you what app to run, chose 'Photos' (because that's the app your extension will operate in). The Photos app will then launch on your device and you may proceed to use your extension. The debugger in Xcode should then work as expected.
I encountered this issue as well, though unfortunately I don't know the exact solution, maybe I can offer some information that might be helpful.
I (like you, judging by your screenshot) was using Cocoapods, and Cocoapods was copying resources from the pods into the bundle of the app extension after it was code signed. If memory serves, this was interfering with the code signing in some way, and therefore preventing the app from running under the debugger.
I believe that one of the symptoms of this was that logs appeared in the mac's console (or the device's console, can't remember which) saying something about "blasting onto the device using the old skool[sic] method."
You could confirm that this is the case by removing Cocoapods from your project, or any pods that require resources to be copied after compilation. I believe that the solution was to add some kind of special build phase to the extension project to copy the bundle resources, and disabling whatever Cocoapods uses by default.
As a temporary solution, I believe that deleting your app from the device should allow you to attach the debugger once, on the run where the app is installed for the first time. You might also try deleting derived data for your project.

Getting "Cannot verify client. (3000)" when trying to upload archive from Xcode to itunesConnect

Just updated to Xcode 7.1 and getting this error.
Was able to upload fine using 7.0.1
Hmmm, well a restart of Xcode, a fresh clean, build and archive seems to have fixed it.
If you encounter this error, you have two options:
Option A - Engage in an activity that takes a minute or two. Could be any of the activities described in the other answers, like re-install XCode, renew certificates, do a new build from scratch after clearing caches. Or simply go get a coffee.
or
Option B - Do nothing at all for a little while.
Then, try again. If it doesn't work, repeat.
Just updated to Xcode 7.1 and getting this error. Was able to upload
fine using 7.0.1
same here - restart, clean build, archive and upload was successful.
Same problem here. Grabbing a cup of ☕️ worked for me.
Exporting the app as an .ipa and uploading via Application Loader 3.0 worked for me. (Restarting xcode, cleaning, and re-archiving did not.)
I first tried to upload and got the "cannot verify client"-error.
Then i did a validate, which was successfull and then again a upload which also was successfull. No restart etc. needed.
Same problem here. Clean build and deleting project caches worked.
Had the same issue and tried everything including Application Loader but still would not load into iTunes Connect. I'm running XCode 7.1.1 and OS X El Capitan.
I also have Avira (free version) installed and once I disable it, everything went through. Hope this helps someone.
Stackoverflow has been my savior and goto source for Obj C and now Swift!!
I had this problem for all night. Got 🍵 ☕️🍺🍼 but didn't work.
Solved my problem only with:
Switching lan to wifi connection
Uploading App by Application Loader
Wasn't useful but i saw than in Xcode uploading start works as well after connection switching, so maybe was a connection my problem.
Clean project not work with me in XCode 7.2. But I solve the problem by export Archive and using Application Loader.
Step:
Archive you build.
In Organizer: Chose your archive.
Export "Save for iOS App Store Deployment".
Open Application Loader (Xcode -> Open Developer Tool -> Application Loader: Download it if you don't have).
Select "Deliver your App" -> Select your exported ipa.
Upload.
=> Done
I've been having this problem since Xcode 7.1 (for more than a month). I did everything I could trying to solve this: restart Xcode, clean project, clean build folder, build with a device connected, reinstall Xcode multiple times, even formatting the whole disk and starting from scratch. None of this worked.
During this time my colleague was always able to upload the very same builds to App Store without any problem.
Curiously, what solved this problem for me was disconnecting my non-Apple wireless mouse.
I found this out when I tried to submit an app from my home computer and got the same error. I disconnected the mouse dongle, tried again and it went through.
I've verified this three times both on my home (MacBook Pro 2013) and work computer (Mac Mini 2014).
This leads me to believe that during the app submission process Apple may check if your environment is purely made by Apple or not, and may block your submission based on that. This would explain the "Cannot verify client" message.
For what it's worth: I got this error when my startdisk was almost full (less than a few hundred MB left).
Cleaning up some space and re-submitting resolved this issue.
Experiencing the same problem. Tried a number of the suggestions above. Ended up using the Application Uploader instead.
Xcode > Open Developer Tools > Application Loader
From the rest of the answers it seems that a lot of different things "resolve" this issue. Here are the particulars of what solved it for me:
The iPad had to be plugged in.
The iPad had to be signed in (i.e. not locked).
After I satisfied those two conditions, it validates and uploads reliably. If either one isn't done, I am not able to validate or upload to iTunesConnect and I get the Cannot verify client (3000) error.
You can use Application Loader to upload your build and solve it!
Download Provisiononing Profiles of app on Apple Developer,
Quit and restart Xcode,
Run Provisiononing Profiles by Xcode,
Open app again,
In General -> get "fix" at Identity.
You can Archive and Upload to Apple Store
When it fails two times in a row, choosing "Validate" and after that "Upload to App Store" does the trick for me.
I tried most of the things here, but what finally did it for me was using the Application Loader instead of trying to upload my app from the Organizer.
Once I did it from the Application Loader I got an error message related to this: ITMS-90535 Unable to publish iOS app with latest Google Signin SDK, which was the real cause of the error.
I remade the app with "App Store" provisioning profile. Earlier it was "Ad-hoc" provisioning profile.
I submitted the app from "Application Loader" instead of traditional "Organizer".
Above two steps enabled me to submit the app to iTunes Connect for beta testing also.
There is always an element for surprise whenever apple releases an updated XCode.
After trying a few things, this is what worked for me:
Just before uploading your executable, validate it, you then have a modal where you get to pick your binary. On the right, there's the name of the provisioning profile used. There's an arrow next to it.
Click on the arrow which opens the finder to the location of the provisioning profile.
Delete this file.
Restart XCode
Clean
Rebuild/Archive
Upload

Xcode 4 Error: Error Starting Executable

I ran into problem with testing my app on iOS and Xcode when I am uploading it to my actual devices (iphone and iPad), and I'm wondering if someone knows the issue and can help me out:
Normally when I build my app on my devices, the app is installed and launched on my devices. But as I am preparing for submitting my first app I was testing around and changing the Bundle Identifier, App ID, and Development Provisions (so the issue may have something to do with it), and now, when I try to build my app on my devices, although it's installed on my devices fine, Xcode will not launch the app anymore. Instead, I got this error message:
Error Starting Executable.
Error launching remote program: No such file
or directory.
Does anyone know what the issue is? And What is this derived data folder about?
Much thanks!
I have also faced that problem. I have closed, restarted Xcode; deleted the application from device and reinstalled it again, then the problem has gone.
Running App from a Clean Slate
For me the problem did not resolve until I did the following in this order:
Delete the app from the device (Do this before trying to debug again)
Quit XCode (Don't just close the project)
Delete the app build folder (example path: /Users/myusername/Library/Developer/Xcode/DerivedData/MyProject-fhkaamuyvqhubaezinqbmxbnaufd/)
Restart XCode
Finally -- Try debugging again on the iOS device
The app build folder of step 3 refers to your app's build folder that is a child of "DerivedData". To find this you can reveal your app in finder, then backtrack until you get to "DerivedData" folder and delete the folder above that like "MyApp-crazylongweirdletters". Without this step (3), I could not debug, so this is a critical step and you must quit XCode before you do this step.
For some it appears simply restarting XCode does the trick, but not for me.
I only post this answer because the earlier answers did NOT work for me. Hopefully others banging their heads will find this and get a sigh of relief. :)
Notes:
The issue started happening for me when I modified the bundle id of the app.
My code signing is and was correct. My provisioning profile was the "Team Provisioning Profile" which should work for any app id (default for "iPhone Developer" automatic profile selector).
I was doing a DEBUG build (not release / distribution).
You cant debug (start from Xcode) an application signed with a distribution profile if I remember well... And then you get such messages, gdb failling to attach to process.
I finally found my error!
I was playing around with my info.plist file, and I changed the Executable Name and Bundle and Bundle Display name! As soon as I changed those back to the Defaults (EXECUTABLE_NAME, PRODUCT_NAME, PRODUCT_NAME respectively) it worked perfectly.
Delete the app from the device (tap-and-hold then delete) and try again.
For me, none of those worked. Same error, but different solution.
My problem was cause by me accidently changing the "Deployment Target" (ios version) to a version higher than what was on the phone I tried to run the code on.
The fix was simple - drop the deployment target to below or equal to the ios software version on my phone :)
I got the same error by not having my code signing correct.
Go to your project > Targets > Build Settings > Check code signing for debug state.
I stumbled upon this as a solution to another issue whch was a warning when trying to build an app on a new 4.3.5 device.
If i set the profile to distribution I do not get a warning message when building the app, but the debugger will attach to the device.
If i set the code signing to the distribution profile, i get no warnings in the build process, but the debugger will not attach. So the answer above about being signing based seems to be correct. This might also only be an issue on newer 4.3.5 devices with xcode
Product -> Clean in the menubar
This error some times happen due to incomplete "Restore" or "Sync" process of your device which keeps the .app files locked up.
What I did I had to jailbreak my device to go find the app under /User/Applications/XXXXX-XXXX-XXX/ and phisically delete the .app
For one of the apps it worked and for other one I realized it just does not run GDB automatically so the error message is totally misleading, so I set the GDB to manual and it worked and did not give me that error, but of course I have to run the app manually for the debug session to start.
It also may have required some other stuff that I did before like checking the provision profile, but this was the last step that made it work.
Before this I tried all the solutions did not work for me, and obviously simply deleting the app by holding down your finger on the screen did not work, as it removed the icon but all the files were still there. ( Since it was a development app not a downloaded App Store app )
had same problem,
quit the XCode...delete app from device...run the program again..
i solved that way..one of my friends had to restart the device.
I have the same problem. I solved it by changing the project's directory name and then launching the app again.
I had this problem on a recently restored device where my in-development apps had not been reinstalled—they were showing up on Springboard as "Waiting" to be downloaded from the App Store. Deleting the app from Springboard fixed the problem.
I've faced this issue since yesterday on two different devices, both iOS 4.x. Deleting the DerivedData folder, deleting the app, restarting the Xcode, and cleaning the code did NOT work. Repeating all the steps, in addition to rebooting the device fixed it for me.
Here I am posting an update to the issue. Might be helpful for someone with the same problem. I have Xcode 4.4 and launched it on a device with iOS 5.0 . If Xcode doesnt have the 5.0 simulators

Resources