Xcode 6 - iOS Simulator - take screenshot from command line - ios-simulator

In Xcode 6 Apple added simctl which allows to do a lot with the iOS simulator, but there is no option to take screenshots.
There are 2 alternatives, less comfortable:
Using instruments and *.js scripts - UIAutomation.
Using osascript as mentioned in: http://jehiah.cz/a/iphone-simulator-screenshot.
Looking for a simple way like xcrun simctl screenshot

Sorry, this is not exposed via CoreSimulator. The only way you can get the screenshot is by interacting with iOS Simulator.app. Please file a bug report requesting this feature at http://bugreport.apple.com

Using OSAScript is the most direct way to do this if you don't want to completely automate your iOS application through UIAutomation.

You can use this command: xcrun simctl io booted screenshot Screenshot.png

Related

Library /data/data/../files/../lib/libMAPSJNI.so not found

I followed this tutorial from the website but I still get "Library /data/data/../files/../lib/libMAPSJNI.so not found" when I try to run the app. I am using eclipse and trying to run the app using the emulator with a device with an Intel Atom (x86) CPU with Android 4.4.2. In my libs folder I do have a file called libMAPSJNI.so.
Sorry, we do not support x86 emulators or devices. Please select an arm emulation image. However please note the emulator's graphical emulation is not perfect and may not work.

watchOS2 and NSLog on device

I am using XCode 7 (beta) to write standalone watchOS2 App Extension.
Debugger works fine, so I can use breakpoints for example, but seems to be that NSLog() is not working for the Watch. Note: It works fine on simulator, but doesn't work on device
Whatever I write to NSLog(#"..") is not displayed in Debug Area.
So the question is:
Is this behavior expected or am I doing something wrong? Are there some workarounds to see some debug logs, may be use WatchConnectivity for example?
Thanks in advance!
Until NSLog() works on real watchOS 2 devices I've ended up using -[WCSession sendMessage:replyHandler:errorHandler:] to send log strings from my watchOS 2 app back to my iOS phone app and then NSLog them from my phone app.
Did you try this one?
It's a known issue on developer forum.
You have to unpair and re-pair your watch to trust your computer.
Then you could see NSLog in Debug area.

iOS Simulator failed to install the application

I have created a Cordova 2.1.0 app, It ran fine for the first 2-3 times. But now when I am trying to run it through terminal it is giving me the following error.I didn't change anything.
Ankurs-Mac-mini:~ ankur$ /Users/ankur/Desktop/CordovaSMS/cordova/emulate
Ankurs-Mac-mini:~ ankur$ 2012-10-17 16:11:08.695 ios-sim[7032:507] stderrPath:
/Users/ankur/Desktop/CordovaSMS/cordova/console.log
2012-10-17 16:11:08.698 ios-sim[7032:507] stdoutPath:
/Users/ankur/Desktop/CordovaSMS/cordova/console.log
[DEBUG] Session could not be started: Error Domain=DTiPhoneSimulatorErrorDomain
Code=1 "iOS Simulator failed to install the application." UserInfo=0x7fc643902320
{NSLocalizedDescription=iOS Simulator failed to install the application.,
DTiPhoneSimulatorUnderlyingErrorCodeKey=-1}
any help would be appreciated.
Thanks
Solved the problem
Deleting contents of ~/Library/Application Support/iPhone Simulator and re-run the project solved this problem.
or you can simply reset content and setting of the simulator.
Try manually launch the iOS Simulator and from the "iOS Simulator" menu, click "Reset content and settings", then close and rebuild your app.
My solution is:
From menu, iOS Simulator, Reset Content and Settings.
Close XCode 5.0: close project and close it from Dock and re-open the project and launch again, like in Windows :)
I tried everything mentioned above and nothing worked. My problem was iOS 7 specific. I was finally able to resolve the issue by assigning a non-empty value to Bundle versions string, short (CFBundleShortVersionString) in the -Info.plist file. Looks like iOS 7 doesn't like an empty value for the build number. I had a script that auto increments the bundle number by 1 every time I build the project so this field was empty. I just assigned a dummy value there to get it working.
You can also remove the app from the simulator.
This worked for me in iOS6.1
Solved here: https://stackoverflow.com/a/16279286/1927253
I copied a folder into XCode 4.6.2 with the name "Resources". When XCode asked, I created the folder references for any added folders.
Every time I did this, I would have to goto the Derived applications directory, and delete the build directory for my project to get it working again.
Solution: Do not copy a folder by reference into XCode with the name "Resources". Rename it to something else other than Resources.
Very annoying error.
just reset your simulator and re-run your project
Unfortunately none of these solutions solved my problem. I did everything, even restarting my mac but it was still failing. What actually did solve my problem was to go to the Organizer and delete the Derived Data and Snapshots.
Had the same problem after installing XCode 5. Had no iOS 6.1 Sim or SDK. Obtained these. Tried to run the App up under the iOS6.1 Sim and go the failed to install message. Having read through all of the above posts, I decided to simply remove the App from the Simulator and re-istall, re-run from the project window and that solved it for me.
I tried ALL these things and more including reinstalling Xcode 5 and nuking every xcode and simulator preference/application support file with no luck.
Then for the hell of it, I CHANGED my short bundle version string (it already had a value, it was not empty), and it fired right up.
3 hours gone but yeah
All the answers I looked for do not work for me!.
Finally
The only way to make it work is as follows
1.Check the version of titanium being used for the project in tiapp.xml
2.right click the prject in the project explorer window.
3.Select Properties
4.Choose project build path. Select Titanium Mobile SDk all versions of 3.* Tick all of them.
5.Now click apply and re run the project.
None of the above worked for me, I finally compared my info.plist to another project and found that I had somehow deleted the "Executable File = ${EXECUTABLE_NAME}" key/value pair, replacing it fixed the problem for me.
This error occurs on iOS 7.0 if you leave the "Build" empty.
Enter a build number!
What worked for me was to simply delete an old version of the app, which was made in a prior version of Xcode (likely 4, now running 5) from the simulator (tap-hold, jiggle, x).
I encountered this problem while trying to create a build for Facebook application approval. I found that for some reason, when I used the following command line:
xcodebuild -arch i386 -sdk iphonesimulator7.1 -scheme Mana -configuration Release
the files didn't end up in [project root]/build/... (as the instructions on Facebook suggest), but in ~/Library/Developer/Xcode/DerivedData/[app name + unique identifier]/Build/Products.
I'm not sure exactly what's going on here (anyone who knows more please enlighten me!) but I was able to run the files in the DerivedData directory on the simulator. Hopefully they'll also work for Facebook!
I tried everything mentioned above and nothing worked.
Finally the only way to make it work was unsetting DYLD_INSERT_LIBRARIES=/usr/lib/libimckit.dylib
How I did this:
Open terminal and typing "sudo vi /etc/launchd.conf"
Changing
"setenv DYLD_INSERT_LIBRARIES /usr/lib/libimckit.dylib"
to
"unsetenv DYLD_INSERT_LIBRARIES /usr/lib/libimckit.dylib"
Save changes
Reboot your system
In this post [1] explain what DYLD_INSERT_LIBRARIES is for
[1] https://stackoverflow.com/a/26053165/2091181
On Mavericks 10.9.5 using Xcode Version 6.0.1 (6A317) with an iOS SDK supporting 8.0 originally had Simulators all version 8 all getting this error. All the advice above was not working for me. So went to Xcode->Preferences->Downloads and saw as installable (but not yot installed) in the Components section were iOS Simulators 7.1 and/or 7.0. Went ahead and installed the 7.1 Simulators and got extra designations on the Product->Destination list Simulators of version 8.0 and 7.1, and using the 8.0 still had the same error, but the 7.1 Simulators all worked.

Xcode 4.2: Error 0xC002 when trying to use a jailbroken iPhone 3G for development

I have this jailbroken iPhone 3G with iOS version 4.2.1 (the latest supported version). When I connect it to Xcode 4.2, Xcode starts copying the debug symbols. It stops copying towards the end of the process, and shows the following error:
Xcode has encountered an unexpected error (0xC002)
No such file or directory, at ‘/SourceCache/DTDeviceKit/DTDeviceKit-867/DTDeviceKit/DTDeviceKit_Utilities.m:864’
Anybody experiencing anything similar?
I know I should try and restore the phone, but I'm asking just in case anybody can come up with a solution that doesn't involve restoring it.
In this post on mactechnews.de, one guy reports the same problem -- with no solution, so far.
Alright, after a lot of testing and digging up the filesystem... I solved it.
It turns out that there are just a few files that are not downloaded from the device (for reasons still unknown). They are related to the dyld cache (don't really know what this is and what it's for). Here are the steps to make your 4.2.1 device debuggable in XCode 4.2 and 4.3.x:
Close Xcode
Go to: ~/Library/Developer/Xcode/iOS DeviceSupport/4.2.1 (8C148)/Symbols/System/Library/Caches/com.apple.dyld/ Note: if you don't have this folder, run Xcode, connect your device, and wait until the error 0xC002 appears in Organizer - the folder should be created by that time.
Create 3 empty files there called:
.copied_dyld_shared_cache_armv6
.processed_dyld_shared_cache_armv6
dyld_shared_cache_armv6
Run Xcode and enjoy the light next to your device eventually go green:)
Or, for the terminal lovers:
cd ~/Library/Developer/Xcode/iOS\ DeviceSupport/4.2.1\ \(8C148\)/Symbols/System/Library/Caches/com.apple.dyld/
touch .copied_dyld_shared_cache_armv6
touch .processed_dyld_shared_cache_armv6
touch dyld_shared_cache_armv6
This is obviously a hack but it works perfectly for debugging and I haven't noticed any side-effects so far.
Enjoy!
Small update:
I tested it on my snow leopard hackintosh, with the Xcode 4.2 (most recent to date) and although the device is active in the organizer and it is possible to run the app on the device, i get black screen on launch. It gets installed but apparently debugger cannot get attached. I had the same problem with 4.0.2, when the 0xC002 problem didn't yet occur so I think it's unrelated and might even not happen to others. Nevertheless, 0xC002 is still solved.
On my main development machine with Lion and Xcode 4.3.2, device is perfectly debuggable.
The answer above (https://stackoverflow.com/a/9944892/1390251) works, basically,
but for newer versions of Xcode you probably need to rename the files as follows,
having them end with '7' instead of '6':
touch .copied_dyld_shared_cache_armv7
touch .processed_dyld_shared_cache_armv7
touch dyld_shared_cache_armv7
If not sure, you can keep both sets of files (...6 and ...7)
in the relevant folder (can also be 5.1.1 for that matter)
and it should work.
(have tested it on iPhone 4 with iOS v5.1.1 genuine)
It seems that you cannot debug apps on iOS 4.2.1. I tried several restores to iOS 4.2.1 with same effect. Downgrading to iOS 4.0 was the only thing that worked.
The reason for whole problem is that iOS 4.2.1 is not supported in XCode, according to this website.
Error in Xcode getting debugging info from 5.0.1 iphone
solved, see the link to archive with iOS5.0.1 debug info
download & unpack to "~/Library/Developer/xCode/iOS DeviceSupport/" & be happy =)
I fixed this bug in![enter image description here][1] this way:
I duplicate the 5.1.1(9B206), rename it to 5.1.1(9A405)[my ios device is this version], then the error is gone.

Symbolicate XCode4 crash reports

I'm trying to get XCode 4 to symbolicate a crash report. I've googled and followed this link (https://github.com/chrispix/symbolicatecrash-fix) but get stopped. The instructions say "To fix your iOS crash report symbolication, move /usr/local/bin/symbolicatecrash aside and copy in the version in this repo." Well, I cannot find "/usr/local/bin/" on my Mac. I'm new to the Mac world, so I'm sure there's something I'm not understanding. If "/usr/local/bin/" doesn't exist, then where is XCode 4 finding symbolicatecrash? Please point a newbie in the right direction as I have a lot of bugs to be fixing.
Thanks
Tom
that tool has been relocated to /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash in newer version of the SDK
you would run it as:
./symbolicatecrash -A -v [crashlog-filename] MyApp.dSYM
keep in mind this is for iOS only, for OSX see http://developer.apple.com/tools/xcode/symbolizingcrashdumps.html (for the app to contain the symbols "DWARF with dSYM" must be enabled in it's build settings)
you would run it as:
./symbolizecrashlog [application-name] [crashlog-filename] > symbolized.crash
I would like to add that all this usually is done automatically, these manual approaches are for cases when there are issues with the system symbols database as discussed in Xcode 4 failure to symbolicate Crash Log

Resources