Emulator --- Device
Hey people. I'm not very experienced in Android development, so I would like to know what I have to expect.
I wrote an app of about 1000 lines of code, which is running perfectly fine in the emulator. So what will it be like when I install it on a physical device? Ain't got one here at the moment, but I will get my hands on one on the next days. Will there be a bunch of nasty errors? Just some design stuff? Errors, that cant be reproduced in the emulator?
Thanks in advance
EnflamedSoul
Note: emulator runs the real Android code. It emulates ARM device and runs the whole stack on top: linux kernel, libs, android code. It is the same as device sans some hardware (camera, mobile network stuff, gps) and much slower.
So what will it be like when I install it on a physical device?
Will there be a bunch of nasty errors?
No problems really. It should work ok.
Just some design stuff?
If you set your emulator to the same resolution and pixel density of your device, then it should look identical.
Errors, that cant be reproduced in the emulator?
There ares some thing that you can not do in emulator: primarily make calls and use camera. Otherwise emulator behaves like a plain phone.
My Android apps have all been very simple, but I have really only had to make small changes to their layouts when I tried them on my phone. Over-all, the process of moving to the phone was a rather painless one.
I had a code that took 4 minutes on the emulator to complete, and on the real device it is just 10 seconds.
Related
OK so I am trying out Genymotion for testing my app, so that I can reproduce the errors that my users are telling me they experience with my app, which leads me to fixing the issues. I guess that is the main reason for using Genymotion.
Real life example:
A guy says: "I'm using a Moto X (2013) on Android 5.1.1 and I can't do X with your app.
Me: Looks at Genymotions list of virtual devices and can't find neither the brand of phone nor the android system. I can only find android 5.1.0.
Does this mean that I Genymotion just doesn't have what I need, or is it because one of the other options are just as good? I really don't know. What am I missing?
Any help would be appreciated.
Brian
An emulator, be it the default android emulator or Genymotion or any other emulator will not be able to replicate a real physical device to the complete extent.
The devices available on Genymotion are just templates to recreate the device with values such as RAM, Screen size etc. You could try creating a custom device by using the values for Moto X.
One possible idea would be to get the stacktrace from your friend and see what's going on. The best way to do that would be to integrate crash reporting system like Crashyltics. You will automatically get crash reports in your fabric dashboard.
Yet another "slow emulator!" thread, but not quite. Ussualy people are complaining about boot time - for me it doesn't matter and I have snapshot option enabled. The problem with my emulator is that GUI is very unresponsive - by that I mean I have to wait around 3-4 seconds for emulator to register my click on a button for example. Since I don't have a physical device I am forced to work with this emulator.
The device I am emulating is Galaxy Tab 2 10.1, which means WXGA800 and large resolution (800x1280). I've set the device RAM size to 1024.
I am running Linux - if it makes any difference (because of crappy Graphics driver).
So what can I do to make it a bit more responsive? I can live with up to 1sec delay but not more.
I don't know any good solution for your problem but you can try to use Android on Virtualbox. Here you have site with .iso files:
http://www.android-x86.org/download
You can try the new x86 Emulators from Google.
http://android-developers.blogspot.de/2012/04/faster-emulator-with-better-hardware.html
Another option is to emulate devices using a Virtual Machine. I did a detailed tutorial (step by step) based in other tutorials:
http://edwindh.blogspot.com/2014/07/emular-uma-tablet-ou-smartphone-com.html
First of all, you need to know that I have a very powerful computer so that's not the problem.
I tried making a black screen without anything on it but an FPS counter, with OpenGL and Canvas, but the app doesn't go over 10-11 FPS.
I am just lost, I don't know what the problem is, I checked and it's not the render or the update function...
thanks for the help.
I am on windows 7 64 bit BTW.
8 years later and i have the answer.
open the AVD manager, scroll down to emulated performance, change it from "Automatic" to "Hardware - GLES 2.0", if still not performing show the advanced settings and set it to "Cold boot" this changed it from like 8-12 fps to a solid 30 fps non stop.
I'm more inclined to say that it is a fault of the Emulator than your system. It is extremely slow for me as well, even doing general app debugging. Not surprised on your frame rate. The Intel x86 Image might make a difference, but I usually don't see much improvement even with that.
You can create x86 virtual machine.
See
Android-x86 - Porting Android to x86
ISO image
I've found that I get better performance out of the Emulator when I set the processor afinity to all through Windows Task Manager
Here are some tips which can speed up the emulator significantly :
Give 1GB of RAM (or even more) to your AVD. Don't try to emulate the amount of RAM of a real device, it is generally useless and can amazingly slow down the emulator.
Emulate Android 2.3.3, which boots and runs faster on the emulator than the previous and next versions (by the way, never emulate Android 2.1 or 2.2 if you use SQLite databases. The SQLite implementation was very slow even on real devices).
Don't use high screen resolutions and densities unless for final testing. Use the smallest resolution available and set the LCD density to something low (in the mdpi range).
Well, this might not be an alternative for everyone but for me it's perfect! Use the Bluestacks Player. it runs Android 2.3.4 and is very fluent and fast. Sometimes even faster than a normal device. The only downsize is, that you can just test Apps on the API Level 10 and just on one screen size, but it's perfect just for testing if it's working or not. Just connect the Player with the adb by running
adb connect 127.0.0.1
(Its always the same IP adress)
I know there are many discussions about the emulator which is so slow that is essentially unusable for routine debugging tasks. I am talking about debugging with physical devices. My app runs about an order of magnitude slower in debug mode than in non-debug mode. I mean “an order of magnitude” literally. I can think of three possible candidates for the bottleneck:
Computer.
Android device.
Eclipse.
Checking my computer during debugging shows its quad-core CPU and 8 GB memory on Windows 7 Ultimate 64-bit has plenty of room left. The devices I use are Samsung Admire running Gingerbread, Airpad X running ICS (a generic tablet). My Eclipse is Indigo Service Release 2 Build id: 20120216-1857.
Could any experts, especially those who have successfully boosted Android app debugging performance offer some tips
not a solution , but a few tips that might make the problem a little less , well, problematic :
try to reduce the number of logs written at runtime.
you can run the app normally , and then debug it at runtime . simply choose the process via eclipse , and choose the bug-icon in the ddms view (not the one next to the launch-icon) .
same as #2 , but inside the code : use "waitForDebugger" when you see fit.
try to reduce the number of expressions that need to be evaluated in the debug mode.
I am building a simple mono android project and deploying to the emulator. Every time I try to run my program it takes at least 30 seconds to a minute to deploy and start the app in the emulator. Further, simple things like single stepping and inspecting variables take several seconds. Is this normal?
Also:
Is it much faster deploying to an actual android device?
Is it much faster using java instead of c#/mono android?
If no, how does one efficiently program on the droid with such slow iterations?
My computer is no powerhouse but it isn't crap either: core 2 duo 2.6ghz, 4gb ram.
I faced with same problem too. But you can solved it in two ways (at least both these ways helped me):
Use MonoDroid on Mac. It deploys to emulator much faster.
Run your application in emulator with same Android version. I tried few different configuration and this one the fastest (as for me): application with android 2.1 and emulator with android version 2.1.1. For me it works pretty fast.
Is it much faster using java instead
of c#/mono android?
I tried java and yes, it deploys (not works) faster.
1) It is faster and more effective to test your program on an android device.
2) It isn't critical.
My hardware is like yours, I develop in Java, and have a wait time similar to yours.
I'm developing android applictions using monodroid and deploy takes ~10s.
Just deploy without close emulator.
I was closing it all times and it take 30sec-1min to deploy.
I did next and it helps a Little in speed:
MonoForAndroid 4.1 API level 16
Add to hardware 'accelerometer'
And set Device size Ram to 512 instead of 1024 (Will not start with accelerometer and ram 1024)
Emulator began work faster, not enough but it is better than nothing
The same issue is without Mono too.
You can run emulator with parameters:
emulator #my_avd -no-boot-anim -qemu -icount auto
where #my_avd -- launch a virtual device named 'my_avd'
The full answer by #Timothy003 is here: Why is the Android emulator so slow? How can we speed up the Android emulator?
Works fine for me, deploying is much faster.