Reset iOS Simulator with Applescript - ios

Im trying to reset the iOS-Simulator using AppleScript. When I just run a script to Reset Content and Settings it just resets the current version of the iOS-Simulator (e.g. 6.0). I need to reset each iOS version in the iOS Simulator to remove all the apps. I can only use Applescript and cant delete the apps from the Simulator using bash (deleting the app folders)
Thanks

I present,
The Definitive iOS Simulator Reset Script (link)
Based on Oded Regev's code from this SO question (which was based on Jacob Rus's fine "menu_click" code)

Stian's script has not been updated for iOS 7 and the dialog isn't necessarily useful for build scripts. I've borrowed heavily from his code and written a version that is relatively future-proof to new devices and iOS versions.
https://github.com/michaelpatzer/ResetAllSimulators

Related

iOS 8 (.0 to .3) vs 8.4 Share Extension

While developing with all my tools up to date, I noticed that on 8.3 and lower devices my extension seems to have disappeared and not show at all in the list from which users can enable it. I extracted the contents of the app file and the extension does get compiled and packaged.
On a few devices we decided to update, the extension immediately started showing up on iOS 8.4 devices (post update with no app reinstall required).
What's up with this? Has anyone else run into this issue? Is there anything I can do to fix it?
NB: I have to mention, the only thing that changed was updating our dev tools. The extension project was untouched. Dev environment is using Xamarin.
Make sure that the CFBundleDisplayName and CFBundleName values are both set in your Info.plist for the Share Extension. If my memory serves correctly, I've run into the same issue before and that's how I managed solved it.
After checking with Xamarin, the project template does not set the deployment target in the info.plist by default (or it might have gotten lost with updates to the tooling).
If the "Deployment Target" is not set, the extension will only show on devices running the latest os version that was supported at the time the app was packaged.

Steroids JS build app for XCode

I'm using AppGyver Steroids to create an app. I want to build an iOS build of it so that I can open the app in XCode. With regular PhoneGap I can simply run phonegap build. I do not see this in Steroids. I've run phonegap build in the Terminal, but it doesn't show native elements when I run it in the simulator (from XCode) like navigation bar.
Is this possible with Steroids? Thanks!
If you're planning to use Steroids, you need to use the Steroids Build Service. To create an actual build targeting iOS platforms, please consult their guide on how to do this.
If you just are developing, use the deploy command to get the QR code and scan it with the AppGyver scanner application to load it temporarily to your device. Or if you want to run it in the emulator, start a steroids session from the terminal:
steroids connect
then enter
simulator
once you're in the steroids session and that should start the iOS simulator.
Not sure what you'd need xCode for in this. The beauty of steroids is that there is no iOS specific code for you to maintain (before you start messing with PhoneGap plugins, which is a different ballgame.) You can still open your html pages using xCode if you wish.
If you're asking how to have xCode do this stuff for you, then I could be wrong but I do not think there is a way. I believe the simulator that Steroids starts is the same as the xCode simulator.

How to download each version of iOS Simulator with direct link in XCode

I need to download iOS5 Simulator in my XCode5.
my internet connection is bad and can't download from XCodes > Downloads.
Is there anyways to download from direct links and how to install manually?
There's no direct link to download it, I don't see why you cannot download it from XCode/Preferences/Downloads, I can.
Anyway, there's a user here explaining a little trick that may work:
Downloading and adding ios 5 simulator to the xcode 4.5 and monotouch without xcode components
There's no official way to add the iOS simulators lesser than 5.0. That seem to come to the conclusion that you cannot. The 4.3 simulator(per say) is no longer available but you can still set the deployment target, but you have to test on real devices.

Is it possible to install iOS 6 SDK on Xcode 5?

Xcode 5 has a preferences pane that allow one to download iPhone 6.1 simulator, however I can't find a place where it allows downloading of iOS 6 SDK, thus it is not possible to set the active SDK to iOS 6 when developing with Xcode 5. Is there a workaround that would allow Xcode 5 to install iOS 6 SDK?
EDIT:
Workarounds should no longer be necessary now that Xcode 5 is generally available and allows you to download previous versions of the SDK.
EDIT: Starting Feb 1, 2014, Apple will no longer accept pre-iOS7 apps for submission to App Store. So while this technique still works, it will not be useful for most readers.
Yes, this is fine. I still build with iOS 4.3 for one project (it's been awhile since we updated; but they still accepted it after iOS 6 came out), and I currently build 10.5 apps with Xcode 5.
See How to point Xcode to an old SDK so it can be used as a "Base SDK"? for details on how to set it up. You can use my fix-xcode
script to link everything for you every time you upgrade.
The only trick is getting the old SDKs. If you don't have them, you generally need to download old versions of Xcode (still available on developer.apple.com), open the installer package, and hunt around to find the SDK you need.
SDKs can be found within the installer package at:
Xcode.app/Contents/Developer/Platforms/
I was also running the same problem when I updated to xcode 5 it removed older sdk. But I taken the copy of older SDK from another computer and the same you can download from following link.
http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com test account test#yopmail.com/test)
There are 2 ways to work with.
1) Unzip and paste this folder to /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs & restart the xcode.
But this might again removed by Xcode if you update xcode.
2) Another way is Unzip and paste where you want and go to /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs and create a symbolic link here, so that the SDK will remain same even if you update the Xcode.
Another change I made, Build Setting > Architectures > standard (not 64) so list all the versions of Deployment Target
No need to download the zip if you only wanted to change the deployment target.
Here are some screenshots.
Yes, I just solved the problem today.
Find the SDK file, like iPhoneOS6.1.sdk, in your or your friend's
older Xcode directory.
Copy & put it into the Xcode 5 directory :
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.
Then you can choose the SDK like below :
Hope this helps you.
Find and download old SDK. Older SDKs are found here.
I have copied the xcode.app directory as Xcode_4.6.3.app.
Now you can test and debug in both xcode versions. You have to run them from the corresponding folders or create shortcuts in your desktop. When building from command line give the parameter as iPhoneOS6.1 instead of iPhoneOS7.0
This worked great for me in Xcode5 and iOS.
Go to into Xcode5's SDK dir. Its usually located at:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
Add a symbolic link to the old SDK like this:
sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk
Or more accurately from anywhere in the command line,
sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
You can download the older SDK and install it in
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
folder. Logout + Login just to make sure the changes take effect and you should see the older SDK in your new XCode
Just to add, you can actually download old versions of the simulator with Xcode 5 itself - just go to preferences and you'll find them under Downloads:
Download Xcode 4.6.x from the Apple Dev Center: https://developer.apple.com/downloads/index.action
Create a folder called Xcode4 within the Applications folder and drag-n-drop the downloaded dmg there.
Open a terminal window
$sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
You will be prompt to enter a password since you're inside a system folder
Open Xcode 5 and you should now see both SDKs
Just for me the easiest solution:
Locate an older SDK like for example "iPhoneOS6.1 sdk" in an older version of xcode for example.
If you haven't, you can downlad it from Apple Developer server at this address:
https://developer.apple.com/downloads/index.action?name=Xcode
When you open the xcode.dmg you can find it by opening the Xcode.app (right click and "show contents")
and go to Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1 sdk
Simple Copy the folder iPhoneOS6.X sdk and paste it in your xcode.app
right click on your xcode.app in Applications folder.
Go to Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
Just paste here.
Close your xcode app and re-open it again.
To test an app in iOS 6 on your simulator:
- Just choose iOS 6.0 in your active sheme.
To build your app in iOS 6, so the design of your app will be the older design on an iPhone with iOS 7 also:
- Choose iOS6.1 in Targets - Base SDK
Just note : When you change the base SDK in your Targets, iOS 7.0 won't be available anymore for building on the simulator !
Can do this, But not really necessary
How to do this
Jason Lee got the answer. When installing xCode I preferred keeping previous installations rather than replacing them. So I have these in my installation Folder
So /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs Contain different sdks. (Replace Xcode.app with correct number) copy previous sdks to
/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
Here is my folder after I copied one.
Now restart xCode and you can set previous versions of sdks as base sdk.
Why it is not necessary
Refering Apple Documentaion
To use a particular SDK for an Xcode project, make two selections in your project’s build settings.
Choose a deployment target.
This identifies the earliest OS version on which your software can run.
Choose a base SDK
Your software can use features available in OS versions up to and including the one corresponding to the base SDK. By default , Xcode sets this to the newest OS supported by Xcode.
Rule is Use latest as base SDK and set deployment target to the minimum version app supposed to run
For example you can use iOS 7 as base sdk and set iOS 6 as deployment target. Run on iOS 6 simulator to test how it works on iOS 6. Install simulator if not available with list of simulators.
Additionaly You can unconditionally use features upto iOS 6. And Conditionally you can support new features of iOS 7 for new updated devices while supporting previous versions.
This can be done using Weakly Linked Classes ,Weakly Linked Methods, Functions, and Symbols
https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3
Weak Linking
Suppose in Xcode you set the deployment target (minimum required version) to iOS6 and the target SDK (maximum allowed version) to iOS7. During compilation, the compiler would weakly link any interfaces that were introduced in iOS7 while strongly linking earlier interfaces. This would allow your application to continue running on iOS6 but still take advantage of newer features when they are available.
The other answers here are correct too, but I find the following steps to be the easiest:
Just download Xcode 4.6.3 from the dev center link that says "Looking for an older version of Xcode?" (currently points here) and mount the dmg.
Then in terminal, copy the SDK files over:
cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
Finally, relaunch Xcode and you're done.
My app was transitioned to Xcode 5 seamlessly because it can still build with the original iOS Deployment Target that you set in the project (5.1 in my case). If the new SDK doesn't cause some insurmountable problem, then why not build using it? Surely there are many improvements under the hood.
For example, I will much prefer to use Xcode 5 instead of Xcode 4.6.3. Why? I'll get a lot more battery life because the UI scrolling of text/code areas in Xcode 5 no longer chews up an entire CPU thread.
Linking the 6.1 SDK into Xcode 5 as described in the other answers is one step. However this still doesn't solve the problem that running on iOS 7 new UI elements are taken, view controllers are made full-size etc.
As described in this answer it is also required to switch the UI into legacy mode on iOS 7:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:#"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];
Beware: This is an undocumented key and not recommended for App Store builds!
Also, in my experience while testing on the device I found that it only works the second time I launch the app even though I'm running the code fairly early in the app launch, in +[AppDelegate initialize]. Also there are subtle differences to a version built using Xcode 4.6. For instance, transparent navigation bars behave differently (causing the view to be full-size).
However, since Xcode 4.6.3 crashes on Mavericks (at least for me, see rdar://15318883), this is at least a solution to continue using Xcode 5 for debugging.
I downloaded XCode 4 and took iOS 6.1 SDK from it to the XCode 5 as described in other answers.
Then I also installed iOS 6.1 Simulator (it was available in preferences). I also switched Base SDK to iOS 6.1 in project settings.
After all these manipulations the project with 6.1 base sdk runs in comp ability mode in iOS 7 Simulator.
From 1st february Apple will reject app built only for iOS6 or lower. Here is also the official communication from Apple. Better start building for iOS7.
To clarify my statement: If you build for iOS6 or lower, apple will reject your app.
If you build for iOS7 AND lower everything is fine, this means:
you must use xcode5
you should deploy on iOS7 at least.
The content of the Apple email is pretty clear at me
"Make sure your apps work seamlessly with the innovative technologies
in iOS 7. Starting February 1, new apps and app updates submitted to
the App Store must be built with Xcode 5 and iOS 7 SDK."
I currently have Xcode 4.6.3 and 5.0 installed. I used the following bash script to link 5.0 to the SDKs in the old version:
platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
for platform in `ls $platforms_path`
do
sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
done;
fi;
You just need to supply it with the path to the .app:
./xcode.sh /Applications/Xcode-463.app

Using XCode 4.3.3 to build apps for pre IOS 5.0 users

My apologies if this question has been asked before. I can see there are a lot of questions that appear similar, however it seems they are mainly asking to do the reverse of what I am asking here.
I took a break from developing for a few months, because I had sold my macBook, and in the meantime upgraded my iPhone 4 to IOS 5.1 (over wifi)
Before selling the macbook, I made a carbon copy of my drive and made sure it could be booted and used to maintain things (on a borrowed mac).
Anyway I am now back on line with a second hand macbook classic, which came with a fresh Lion install, and whilst the workstation backup drive I made boots up fine, I discovered to my dismay that Xcode 4.2 no longer lets me build to my iPhone, so I had to go ahead and install XCode 4.3.3 Under Lion. 6GB of update downloads and installs later, all is well, however I am now left with a puzzling question.
If I make a new app, it appears to be an IOS 5.1 app, and the only simulator available is IOS 5.1 iPhone and IOS 5.1 iPad. and of course my iPhone device.
so... if I go ahead and submit this app to the app store, (ensuring I don't use any 5.1 specific features), does this mean users with versions of IOS lower than 5.x can still download and deploy the app? I can't test it as there are no simulators, and I only have access to 5.1 installed devices. I tried downloading additional simulators, but the default new project seems to preclude them from the menu system.
What is the best way to make one (1) app that everybody (including 5.x users) can download?
I would have stayed with Xcode 4.2 but this would mean having to trash my iPhone to do device testing.
Alternatively is there some way of going back to my original workstation (4.2) and configure it to allow me to do device testing on my 5.1 device?
In Xcode, select the project file in the project navigator, and then the target. In the first section of the "Summary" tab you have "iOS Application Target". There you can choose earlier iOS versions.
That's all.
In xcode go to preferences command + "," navigate to downloads. choose components tab, and you will find the ios simulators, download the one you wish from there

Resources