ios simulator appear with UDID in xcode 6 - iphone

When i select simulator from xcode 6 then i'm getting multiple option to select simulator but simulator comes with UDID. Please see the below image and please help me out. Thanks in advance.

killall Xcode
- Kills all running Xcode processes.
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
- Kills all running CoreSimulatorService's processes.
rm -rf ~/Library/Developer/CoreSimulator/Devices
- Removes all Simulator data, from all the Simulators.
open /Applications/Xcode.app - Opens Xcode.
The above steps from xcode 10 are invalid, please use the following steps:
xcrun simctl shutdown all
shutdown all devices
xcrun simctl list devices|grep -v "unavailable"|grep -Eo "[0-9A-F\-]{36}"
list all available devices
xcrun simctl list devices|grep -v "unavailable"|grep -Eo "[0-9A-F\-]{36}"|xargs xcrun simctl delete
delete all devices(note: this is a single line)
more detail xcrun simctl help

In Xcode, go to Window -> Devices (shortcut is Cmd+!)
In the left pane, delete all the superfluous simulator devices (select in the left pane and press delete on keyboard)
Usually these are the ones that have no OS (showing iOS: n/a).
This usually happens when you try and copy older simulator versions directly in the SDK folders rather than installing them from Xcode -> Preferences.

How to fix it
Xcode uses the device version to disambiguate devices with the same name.
If two devices have the same name and version number, it will use the devices' UDIDs.
You have 4 of each of a bunch of devices (eg iPhone 5s). I suspect that some of them are for the same iOS version. You should delete some of the duplicates. Check out xcrun simctl list and xcrun simctl delete or use the device manager within Xcode.app (click on the "-" to delete a device).
How to just get back to a default state
# Ensure all possible clients of CoreSimulatorService are no longer running:
killall Xcode 2> /dev/null
killall Instruments 2> /dev/null
killall 'iOS Simulator' 2> /dev/null
killall Simulator 2> /dev/null
killall 'Simulator (Watch)' 2> /dev/null
killall ibtoold 2> /dev/null
killall simctl 2> /dev/null
# There may be others
# Kill the service itself
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
# Remove all the data and logs
rm -rf ~/Library/*/CoreSimulator
Why this might be happening:
CoreSimulatorService will monitor for the addition of new simulator runtimes in /Library/Developer/CoreSimulator/Profiles (eg, for when downloading them from Xcode -> Preferences -> Downloads). When installing a new runtime, CoreSimulatorService will create an initial set of devices for that runtime.
This problem arrises if there are multiple instances of CoreSimulatorService running at the same time. Each CoreSimulatorService instance will create its own set of devices (but its clients will only see that instances's sets at first). On subsequent launches (eg: after a reboot), both copies will be seen. One can get into a state where multiple copies of CoreSimulatorService are running at the same time due to testing beta versions of Xcode.app in the same login session as using the released Xcode.app or by having used Xcode.app before and after updating it through the App Store.
If you are aware of any other way that this bug might come about, please file a new radar at http://bugreport.apple.com

As #ameer-sheikh mentioned, go to Window > Devices
You likely have multiple devices with the same iOS version. I had the same issue, and after selecting each duplicate device and pressing delete I was able to restore order to my Devices dropdown

Go to Window -> Devices (Shortcut is Cmd+Shift+2)
In the left pane, delete all the superfluous simulator devices (select in the left pane and press delete on keyboard)
Usually these are the ones that have no OS (showing iOS: n/a).
This usually happens when you try and copy older simulator versions directly in the SDK folders rather than installing them from Xcode -> Preferences.

The bash commands in another answer are probably simpler but you can try this for an easier yet more complex solution:
gem install snapshot; snapshot reset_simulators
https://github.com/KrauseFx/snapshot
via #saniul

Related

Capture screenshot in GenyMotion

I am using Genymotion for running android application.
Could any one tell me how to capture screen shot in Genymotion ?
If you are using Android Studio or Eclipse, you can just click the button "Screen Capture" in the Android DDMS:
You can use adb to get the screenshot from command line:
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
This article has the details:
http://blog.shvetsov.com/2013/02/grab-android-screenshot-to-computer-via.html
To make my life easier, I made an alias in .bash_profile:
alias screenshot="adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > ~/Downloads/android_screenshot.png"
Now I can type screenshot in Terminal and get a screenshot of currently running emulator in my Downloads directory.
Disclaimer : I'm part of the same company as the Genymotion team.
This feature is included in the product. It is one of the paid feature of the screencast widget. Look at the pricing page here.
Two ways to access it:
pay for the pro or indie licence
use the trial version, it offers you the indie features. Be careful, there is only one trial day left :-/
Once your VM is started, open the screencast widget
Then take a picture with the dedicated button
UPDATE: You have bellow another ways to take a screenshot using Android Device Monitor or the command line
Use this commands:
Windows:
C:\"Program Files"\Genymobile\Genymotion\tools\adb shell screencap -p "/mnt/sdcard/output.png" && C:\"Program Files"\Genymobile\Genymotion\tools\adb pull "/mnt/sdcard/output.png" "C:\output.png" && C:\"Program Files"\Genymobile\Genymotion\tools\adb shell rm "/mnt/sdcard/output.png"
Note: Make sure you have permission to write to C:\output.png; otherwise, change it to whatever path you like.
OS X:
/Applications/Genymotion.app/Contents/MacOS/tools/adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > ~/Desktop/Android_Screenshot_$(date +%Y-%m-%d-%H-%M-%S).png
Select genymotion simulator
Hit shortcut key describe below
Windows : Ctrl+Shift+S
Mac : Cmd+Shift+S
You can find your screenshots at desktop
I think you can also take videos for free. Genymotion uses VirtualBox to do almost all the heavy lifting, so you should open VirtualBox and look at what you can do in it.
You will find options in Virtualbox to capture video!
adb shell screencap -p /sdcard/screen.png
If your Mac is slow and you hate running Eclipse and the emulator together here is a quicker way.
Export your apk.
Start Genymotion.
Drag the apk to the emulator, in order to install it.
Go to 'android-sdk-macosx>tools>ddms'.
Run that file.
A new instance of ddms will be started. Unlike Eclipse, it doesn't slow down your system.
Use the 'Menu>Device>Screenshot' option to take screenshot.
This is a good option for those using slow computers.
If you are using Eclipse, then follow the steps for any type of emulator:
1. Select DDMS
2. In Devices window of DDMS select Genymotion device
3. Click on Camera icon then save it to specific location.
For Linux and Windows (I used gitbash on windows)
adb shell screencap -p | sed 's/\r$//' > screen.png
For Mac
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
#Reck says there's a bug in the Genymotion implementation so we can't take screenshots on 2.3.7. This means that Android Studio / DDMS can't get the proper pixels. adb shell screencap says there's no screencap command.
Assuming you have access to the code you can simply call this method:
public static void screenshot(View view) {
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
view.draw(new Canvas(bitmap));
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
try {
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
storageDir.mkdirs();
File file = File.createTempFile(timeStamp, ".png", storageDir);
bitmap.compress(Bitmap.CompressFormat.PNG, 0, new FileOutputStream(file));
Log.i("SCREENSHOT", "adb pull " + file);
} catch (IOException e) {
Log.e("SCREENSHOT", "Cannot save screenshot of " + view, e);
}
}
In Activity:
screenshot(getWindow().getDecorView());
In Fragment:
screenshot(getActivity().getWindow().getDecorView());
The only limitation I know is that it won't include the status bar.
if you use Mac, sometimes CMD + Shift + 4 (screenshot of a selected portion in OSX ) and then selecting the simulator region is enough :)
Take a screenshot
On many Android devices, you can capture a screenshot with a key-combination: Simultaneously press-and-hold Power and Volume-down. You can also capture a screenshot with Android Studio as follows:
Run your app on a connected device or emulator. If using a connected device, be sure you have enabled USB debugging.
In Android Studio, select View > Tool Windows > Logcat to open Logcat.
Select the device and a process from the drop-down at the top of the window.
Click Screen Capture on the left side of the window.
The screenshot appears in a Screenshot Editor window
It Works for even Genymotion Emulator
Check here for further information

Frozen Android emulator due to audio problems?

Today I installed the latest version of Eclipse, Android SDK and AVD plugin. But I have a tedious problem. When I want to quit the emulator (with the X button), the emulator freezes and I can't click anything there anymore. Obviously it has something to do with the sound, because when I execute "pulseaudio -k" in console, the emulator quits.
Due to this fact, I tried the following to let the emulator at least run properly:
In Preferences->Android->Launch -> Default Emulator option -> -noaudio
and
Run Configuration -> Android Application -> [Application] -> Target -> Addidtional Emulator Command Line Options -> -noaudio
But nothing helps. Emulator stays frozen. Actually I want audio to run, but switching it off doesn't work either. So what can I do?
I replied on the issue, but just if interested:
you may need to disable audio output instead, this is not desirable for me, so just select alsa (or esd/oss) by setting environment variable
QEMU_AUDIO_DRV=alsa
Looks like there is no way to specify audio drivers in hardware.ini so the best solution is going to sdk tools directory, rename emulator in emulator.real and make a shell script named emulator containing:
#!/bin/sh
export QEMU_AUDIO_DRV=alsa
exec $(dirname $0)/emulator.real $*
then chmod 755 emulator
It's this problem described here:
http://code.google.com/p/android/issues/detail?id=17294
There is a workaround so that you can quit the emulator:
Set in your virtual devices "Audio Playback Support" and "Audio recording support" to "no".

Couldn't register com.XXXXX.deviceapp with the bootstrap server

I am getting this error while running in device please do need full help to solve this;
Couldn't register com.XXXXX.deviceapp with the bootstrap server. Error: unknown error code. This generally means that another instance of this process was already running or is hung in the debugger.Program received signal: “SIGABRT”.
I have had this happen where I needed to restart the phone before error would go away.
Deleteing the app, restarting Xcode, clean build, didn't do anything. I shut the phone down and bought it back up and the error went away.
Most annoying bug.
Only solution at this point:
If you're trying to run on a device: Shut off and restart device
If you're trying to run in simulator on Mac: restart your Mac
You can also do a Force Quit on the process via the Activity Monitor.
I've run into that with the simulator and the only solution I've found is to reboot the computer running Xcode.
kill all Simulator processes, that can cause this error as well.
using following terminal command
kill -9 `ps ax | grep Simulator | grep -v grep | awk '{print $1}'`
Reference
This seems to happen with the LLDB debugger when an app is paused at a breakpoint and the app is run again from xcode. The result is a zombie process on either the device or the development machine (when debugging in the simulator).
Only way to resolve seems to be a restart of the iDevice or the machine running the simulator.
Stopping the app completely before running it again in the debugger appears to prevent the problem from happening.
I managed to solve the issue by deleting my device form the Xcode 4.4 Organizer:
disconnect your device from your computer.
in Xcode: Window => Organizer
Choose the first tab ("Devices") from the top panel
Right click your device from the list at the left side of the Organizer, and choose "remove from organizer"

Android Emulator sdcard push error: Read-only file system

I am developing under Android 1.6 (Android SDK 2.1).
I create a avd by using avd manager in Eclipse.
When I launch this avd, I found that the /sdcard directory's permisson is "d---------".
So I can't push file to the sdcard.
Does anyone know how to solve this problem?
I found this works
$./adb shell
$su
mount -o rw,remount rootfs /
chmod 777 /mnt/sdcard
exit
Source: http://www.coderanch.com/t/611842/Android/Mobile/Android-emulator-sdcard-writable
Once you started the Emulator from one shell, login to another shell & type
adb shell
You should see # prompt displayed, this is your device(emulator) shell. Now , type following command at adb shell.
mount -o remount rw /sdcard
This will now remount /sdcard with rw(read-write) permission & now you can push your files into /sdcard by using following command from your host shell.
`adb push filename.mp3 /sdcard,`
where filename.mp3 could be any file that you want to push into Android Emulator.
Hope this helps :)
Ensure two things in the AVD manager utility for the emulator:
SD Card size is mentioned e.g. 512.
From the Hardware tag, press New and select "SD Card Support" from the drop down menu.
Now, start the emulator. SD Card shall now support writing as well.
Android studio version 0.8.9 and above has a bug creating AVDs.
See Issue 78434.
Workaround
go to your ADV folder in .android folder and find your AVD config.ini
open it with a text editor that can handle unix newlines. (Notepad will run the lines together since they don't have CR-LFs.)
change hw.sdCard=no to hw.sdCard=yes
this should work for everyone in new builds
Maybe it sounds stupid but it worked for me when I had the same problem: delete the created avd and create one again through AVD Manager with a sd card of, for example, 512MB.
Check that both have the correct permissions and if not, try to change them with chmod.
And if everything still fails, repeat the process but creating both avd and sd card manually via terminal:
android create avd -n my_avd -t 7
mksdcard -l e 512M mysdcard.img
emulator -avd my_avd -sdcard mysdcard.img
Hope that helps!
I think the problem here is that you forgot to set SD card size
Follow these steps to make it work:
step1: close running emulator
step2: open Android Virtual Device Manager(eclipse menu bar)
step3: choose your emulator -> Edit -> then set SD card size
This works well in my emulator!
Make sure that you had given a value which is greater than zero for SD Card size in the Create AVD Window for that particular emulator.
mount -o remount, rw /sdcard
this is the correct way to remount your sdcard using your emulator.
I tried #user2002993 great help but it one place it need to be a little edit so I edited and here what worked for me on Android Studio, emulator android 5.
Go to your adb folder right click on blank area and select "open command window here" or if you installed adb by adb-installer open cmd and type these commands:
adb devices
It should show your emulator number and detail. Then followed command here:
adb shell
Now it should show you prompt #
su
mount -o rw,remount rootfs
chmod 777 /mnt/sdcard
exit
exit
Yeah double exit needed, now your prompt of adb shell is gone. Put a file in to your adb folder and give this command and see if it got fixed.
adb push "your file name like : 1.jpg" /sdcard/
or
adb push "your file name like : 1.jpg" /storage/sdcard/
Now in cmd it shoudl show you transfer time instead of creepy read-only thing 😊
I increased the virtual memory of sdcard up to 512 MB for the emulator and that was enough
I guess, you didn't insert memory size at the time of creating avd. you can do that by editing the avd.
make sure that you have the correct permissions.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Windows uses backward slashes, linux uses forward slashes.
sometimes this can cause of a very simple reason,
go to your list in eclipse and check whether you have set SDCard size
I had this problem on Android L developer preview, and, at least for this version, I solved it by creating an sdcard with a size that had square 2 size (e.g 128M, 256M etc)
In adb version 1.0.32 and Eclipse Luna (v 4.4.1).
I found a directory in the avd /mnt/media_rw/sdcard that you can write to using the adb command.
adb push {source} /mnt/media_rw/sdcard
There appears to be rw access to this directory.
Hope this helps :-)
Alternate way:
Dismount the drive (from settings/storage) and re-mount the sdcard
also fixes the problem. (verify by moving a file from internal storage to sdcard)
In any case, this simple method saved my butt this time :)
Give any size to Sdcard in Emulator
unchecked the read only option from c:\user...android\avd -> properties
push a file through file explorer
restart the Emulator
It will definitely works
With me in the end helped
In the emulator to run applications manager
and setting permissions for storage.
Try this in a Terminal Emulator as root:
restorecon -v -R /data/media

Terminal command to build and install the iPhone app in simulator without launching from Xcode

Is there any terminal command that can be used to achieve this?
I know xcodebuild install -configuration can compile our xcodeproj from terminal without launching from Xcode, however the compilation files are under iOS but not in the iPhone simulator. I'm hoping one of you smart-folks can help me out.
Hey, i found out that you can do it with:
xcodebuild -configuration Release -sdk iphonesimulator2.2
This makes a simulator build with version 2.2 ( you can use xcodebuild -showsdks to list what u have avail ). I'm stuck with a problem of trying to get it to launch on the phone. xcodebuild -install doesn't seem to do anything for me :S
Any assistance?
Please see the following github project (search for iphonesim)
This will allow you to launch the iphone simulator from the command line.
(Sorry, it won't seem to let me post a valid URL in this answer)