I am looking for a way (maybe impossible) to test my PhoneGap Android application on different phones / hardware. As I am able to obviously test it only on my phone, but some people are reporting that my app doesn't work / crashes / explodes on their phone. Is there any way how can I test my app on different phones without buying actual device ? Maybe virtually like running Android in an emulator or somehow ?
It is kind of frustrating knowing that the app works perfectly, but some people are not able to even start it...
EDIT: I am certainly testing the app in Android emulator, but that only helps to test on different Android versions. But I am looking for a way how to test in on different phones without actually buying it - if it is possible ?
There is a company called DeviceAnywhere: http://www.deviceanywhere.com/ that seems to be doing that.
But it may cost you. If you don't want to buy all those devices, somebody else will have to. Plus they have to build the infrastructure to support remote access. Does not sound like something you would get for free.
Like DeviceAnywhere, there is another company that will let you test your application on multiple hardware devices. It https://appthwack.com/ . They do have 100 mins of free plan to test out, so go ahead and try this out.
You can run it through the emulator that is provided with the Android development kit through Eclipse. But this will only help test the code on different versions of Android not necessarily on the different hardware so if it is really a hardware problem this will not help but if it is related to the different versions of android this should help you find the problem.
Here is information on the emulator and how to use it: http://developer.android.com/guide/developing/building/building-eclipse.html#RunningOnEmulatorEclipse
Related
This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Android Emulator vs Real Device
Is it better to test your app on an emulator or on an actual Android device? As in to test your app while you are still developing it.
In addition, does testing on the emulator gives you more computing power than actual devices?
It is always better to test on a real device, as the emulator lacks certain inputs like sensors etc. (especially the older version of it). You will also have problem testing services like In app billing and LVM as the emulator doesn't come with Google Play, and the accounts that can be configured on it are limited.
The best solution is to have a few devices to test on, and use the emulator for testing different screen sizes and how they react to your layouts. There was a Google I/O talk this year that gave you a breakdown of what devices you needed to test on to make sure you have maximum compatibility. I don't remember which one though, sorry.
Concerning the development period,you should test the application on emulator first so that you can test it on multiple targets having different versions eg:2.2, 2.3, 4.0 to find out the loopholes and the resolution issues.
After completion of development you can test it on your actual device for hands on experience.
I would say it certainly depends on your needs. Since you are developing an application that will be consumed not by yourself actually, it will be consumed by your targeted audience and what will they have? They will definitely have real devices to use your application.
There are some features that are not available or really hard to configure on the emulator, like for example you are developing an app that uses a bluetooth feature.
The emulator is certainly designed for developers to test their apps in a virtual environment with limited functionality.
It really depends on the kind of app you are creating. If you are creating a game that requires the accelerometer then a real device would be beneficial. Yet if you are creating an app with a simple layout and you want to test for different screen dimensions and so on, the emulator is pretty good with this.
Yet you should always have a real device, since the emulator is very limiting.
Android simulator provides a platform very similar to the actual phone, so if your application is running in the simulator, it goes to 94% given the same result in the actual phone, except that sometimes there are modules that must be compulsorily test on a phone like the GMap, Push, screen size..
What is the recommended way of testing an app on a device? The emulator is slow, mostly unresponsive and a cpu beast on my machine, so I use my phone to test my app. When I make a change to code, Eclipse builds it automatically, and then I debug it on the device. Is this the most efficient way to test small changes in code?
Android has some information on testing here. Personally I've found that testing code is much faster on a device. Other options without a device is to use something like Android x86 and run it in virtual environment like VirtualBox - this can be faster than the emulator. In my opinion, to really make sure your application is working as expected (especially with graphics and memory usage) is to test with the device(s) you intend to deploy the application on.
That's how I test my code, the emulators and on an actual device are the only ways I know of. I usually use an actual device, but I think you can keep an emulator running to speed up time a bit, but not too much.
It's in my opinion a good way to check the general functionality of your application. If everything works fine, I would use the emulator to check with different versions of android/screen sizes/resolutions etc. Maybe you can ask a friend who has a more powerful PC. The best possible thing is of course that friends/family/relatives etc. own Android devices so you can test your application / let it be tested on real devices.
I have an android app with more than 500,000 users. I want to try to port it to WinPhone7, but I haven't any smartphone with WinPhone7. Is a real device needed to publish an app on WinPhone? Is there some developper phone?
First of all, I will say that for some scenarios, there is no real substitute for have a physical device to test against. Having said that, I would suggest that 99% of what most apps will do can be developed and test perfectly well on the emulator that comes with the developer tools.
The advantage of the emulator is that you can write and test without shelling out for the hardware and then signing up to create.msdn.com to get it (officially) unlocked, but once you are ready to deploy to the marketplace you will need to sign up anyway.
In your case, I'd say the main word in your question is "try". You don't seem confident in being able to port to the platform so the emulator route seems like the best starting point.
Your will find a Windows Phone 7 emulator in the Windows Phone SDK. You can download it for free on create.msdn.com.
There is an Android to Windows Phone API mapping tool and Windows Phone 7 Guide for Android Application Developers white paper as described on the Windows Phone Developer Blog that you should find very useful.
For getting a development device, you should reach out to Brandon Watson or your local Microsoft WP7 dev rep.
Simple answer - no, you don't. There are plenty of applications out there that were published without being tested on an actual device. Whether it's a good idea or not - that is the main question here. Depending on your application type and its behavior, you might actually need a device.
Also, another problem is the fact that the resources used by the emulator are different from the resources used by the actual device. That being said, if your application runs just fine in the emulator, it will not necessarily run the same way on a device.
You can use the WP7 emulator to test your application. But if you want to deploy it on a real phone, you will have to unlock it though the App Hub portal. That will cost you 100 dollar/year though.
As you and others have rightly pointed out, you can start porting your application using the emulator. There are differences in the emulator and real devices. In particular, to answer your question, emulator does not take pictures.
If your Android app really has half a million users, MS will happily give you a developer device (nearly) for free.
Contact #BrandonWatson or #FrankPR on Twitter.
From my experience I can tell you, that the emulator works very well. But once in a while you will stumble about a problem that you don't understand why it happens. Then you try it on the phone and it works... So... The answer is yes...not!
I am running into countless problems with the emulators of different versions. Sometimes it loads, othertimes it hangs, I've tried reinstalling the SDK and platforms etc. Even though I've a reasonably a high-end machine, when I manage to get it working performance is very slow.
Therefore, I'm thinking of buying a real phone to test out on. If I do so, can I get away with buying one second hand without bill-plans, SIM card etc? I only want it to test out on, I don't want to get stuck with bills for something I don't need to use.
Any advice is appreciated.
Thanks
I gave up the emulators a long time ago. As you are saying, it's slow.
If you want to get away cheap buy a "LG Optimus One P500", you can get it for ~150EUR. But it all depends on what version of Android you wanna develop for. No SIM or other fancy stuff is needed.
You should really check andoid x86 project http://www.android-x86.org/ You can find some instructions on the web how to get it working with ADB.
I would say you get a Droid Incredible, cheap but I think its one of the best and cheapest Droids out. But yes the emulator is horrible, I have to use my own phone to test.
Get a phone from Cricket you don't need a plan from there.
You can use any Android phone you buy for testing without having a contract. Without a contract, you won't get phone service or 3G/4G, but everything else will work just fine. You can buy one used or at full retail from a provider. Just don't activate a service plan.
I started developing android applications. And am testing with the android emulator. Do I really need android phone before releasing it for public usage?
Short answer No. You can test and build a android application package with the SDK and an emulator. But I would say there are usually many things which it would be wise to test on a device.
Personally I have noticed that the emulator does not give a good indication of response times for UI controls. It is usually necessary to move functionality which has long processing times into background threads to maintain user interactivity without the 'force close' pop-up. Testing the effectiveness of your UI responsiveness must be done on a phone to be meaningful.
Network connectivity is another aspect which can be vastly different on a phone, 3G or wifi.
Device sizes and Android platform versions can be tested effectively on the emulator.
Some phone allow hot-swapping of the SD card (replacing the SDcard without turning off the phone). I am not sure how to replicate this on the emulator.
There may be many more things which may only become apparent when using your application on a real device. I would strongly suggest to always test under real conditions when feasible for any commercial project.
From a technical perspective there's no reason why you can't develop purely on the emulator. You're not going to be able to test on every available device, so there's always going to be possibility of device specific bugs that you've missed.
However, I'd strongly recommend getting an actual phone to test your application on.
For me the biggest difference between an actual device and the emulator is the difference between using the interface with your fingers and using a mouse. Interactions which make sense in the emulator sometimes don't work as well when you start using touch on the screen. So if you develop purely on an emulator you'll won't lots of little improvements to your UI that would obvious when you used your app on a phone.
You can't feel a real app in your hands until you have a real phone. (I'm telling you as an Android developer)
So, developing w/o real phone is possible, but real phone gives you a lot more experience, fun & usefulness.
It depends on what type of application you're developing, for serious ones you need at least one device to test it on. For complex applications you would need a range of devices, for example with or without hardware keyboard, different navigational button etc. For basic, simple applications you'll probably do fine with just the emulator.
I would imagine with games you would definitely need to test on real devices.
Thanks to you all. I am going to get HTC Legend and test it, so that I can hope that my apps can be used by others :)
You guys suggest me HTC Desire or HTC Legend?