I have developed an Android game app, and now I am looking for a tool that would monitor my apps real user performance (like CPU, memory, GPU, network, latency, etc.).
I know about NewRelic's mobile APN monitoring, but it is too expensive for me.
What would be other options?
Thank you in advance.
If you are simply looking to understand the consumption of each of the device vitals by your application, then there are several tools on the Google Play which will help you with the same. Some of them may include CPU Monitor, 3C Toolbox, Elixir 2 etc.
Not to mention Android Studio's inbuilt monitoring capability.
Reference link : https://developer.android.com/studio/profile/index.html
However, if you are looking to monitor on the production and understand the real user experience, then you will have to invest some cash. But there are free tools such as Fabric which would provide device vitals during crashes in the production. Along with the device vitals there are several other details such as stack trace, time of crash, geography etc. that would be available on Fabric.
You could also try Apteligent, yet another mobile front end performance monitoring solution, to monitor your application in the production. This is similar to Fabric but provides more in depth information about crashes (in addition to device vitals) and slow transactions. However, this is a commercial tool but comes with free trial (limited features). Though I am not sure of the pricing and licensing models provided by them, they are as efficient as New Relic, Appdynamics, Dynatrace and such from a mobile front end perspective.
You can also refer to this post that I came across if that helps : https://sqa.stackexchange.com/questions/13936/measure-resource-intensive-actions-in-a-mobile-application/18880#18880
Related
I am developing hybrid app using Ionic and I do performance testing with one low end budget android device. That phone is my performance quality assurance. Once I upload to the app store, I can see hundreds type of model of smartphone is using my app.
So, I am curious and really want to know how many phone up there that are using my app has a device that is stronger performance than my low end budget device and how many of them were slower. This is something really important for me to further develop and enhance the app. If majority, let say more than 90% of it were faster than my testing device, that mean I am safe to put in more feature into the app. If many devices where below my testing device, that's mean maybe I need to put more concern on performance on future release.
Therefore, is there anywhere I can have those data? Having my own performance test inside my app to do collection? Any API to connect to existing database to have the info of phone performance based on model?
To be honest: I don't know if there's any existing work you could reuse for that purpose.
But as measuring performance highly depends on your app and the expected bottle necks, I guess that you need to have your own testing methods and that you need to collect your own data.
One more hint: you could use the cordova-plugin-device to get information from the phone and OS your app is installed on.
#user1995781,
I understand your reasoning, however, you are making a fundamental mistake. You assume your Interface is good, when in fact users might reject is. As Jef Raskin used to say, 'Test and test again'. Jef was the original designer of the Apple MacIntosh.
The point being, you need to test the user experience too.
For your request, you want to Google: mobile analytics
Flurry, now owned by Google
Localytics
Amplitude
to name a few
Adobe, IBM and MS all own or have one product in this category. - Best of Luck
We have created a game in Unity and are currently testing on various devices.
Some devices as you'd expect perform better than others, but we are surprised by our testing on iPad 3 and iPhone 4, which we'd have thought would cope better. (simple movements of objects appear quite jittery)
With regards to troubleshooting we have placed a frame rate readout on the screen and we can see that this is very erratic (a target of 60fps can flick anywhere between 24 and 60 seemingly randomly), but I was wondering what other performance diagnostics can be done. Are there plugins that can give readouts/log performance as the game plays that could point to specific events or graphics that cause it all to struggle?
Any other ideas would be much appreciated.
Thanks in advance
Profile
Unity has some excellent tools to enable you to profile your code while it is running, both in the editor and on devices.
This generally involves:
Connecting your device to the same wifi network as your development machine, or plugging it in via USB cable
Selecting "Dev Build" and "Autoconnect Profiler" when you build your project
Opening the profiling window in Unity.
I would suggest that before you try profiling your application on your tablets, you try profiling it in the editor. This will give you an idea of how to best use the profiler, and you may realise what parts of code you can optimise before even running it on your device.
Profiler: http://docs.unity3d.com/Manual/Profiler.html
Read up on optimisation
Not so much an answer to your question, but read up on various performance gotchas. You don't want to prematurely optimise, but there are certain practices you need to be aware of when developing for mobile devices, keeping your shaders simple, reducing draw-calls, dynamic batching etc.
Various notes on optimisations:
http://answers.unity3d.com/questions/37293/general-ways-to-optimize-frame-rate.html
http://www.paladinstudios.com/2012/07/30/4-ways-to-increase-performance-of-your-unity-game/
what do you think about using android in an industrial embedded environment?
I'm thinking, for example, about a vending machine with a touch screen monitor. I can think about many advantages:
It would increase the ease of making an advanced user interface
Android provides tuned libraries to handle task like low power internet connection or encrypted connections
Thanks to dalvik VM, it is easier to run on different HW platform (Arm9 - Arm11 - ....)
but there are also some cons like:
Android is not thought for a mission critical environment (like a device handling money)... at least not to some extent.
If not kept up to date, the software may have some bugs that compromise safety. Issue is worsen by widespread adoption.
Someone might regard Android as resource hungry compared to a real time implementation of linux, with code written in C rather than java.
On the internet you can find some resource on the subject, but most is out of date:
http://www.hsc.com/Portals/0/Uploads/Articles/Android-Porting-on-Embedded-Platform_v2_0633850602027036930.pdf
http://www.androidforembedded.com/whitepaper/android-for-embedded.pdf
anyone has direct experience on the matter or can link me to some resource? What do you think about it guys?
Cheers,
I know of a Swiss company - Noser Engineering AG, which provides development of Android Software for embedded devices. Also check-out their showcase android to market
Android can definitely be used in a non-cell phone device. There will be pros and cons that you can find all around the web, which could be discussed during weeks.
On our side, we have been playing with Android for a while now (from the port of the OS on custom ARM board to app dev) and we see real interest from customers. Regarding reliability, as in any embedded device, it is important to validate it by yourself against the use cases that your system will have to deal with.
Eventually, if cons make you decide not to move to Android, you can have other ways to develop interesting HMI such as QT which runs efficiently great HMIs.
Anyway, you can check out our website (http://www.adeneo-embedded.com) and contact us if you need some help.
Touch screens in anything industrial is pretty much out of the question, believe me. You'd just get laughed at and wouldn't be able to sell it. Luckily, a vending machine isn't an industrial application and there a touch screen would be more suitable.
If you just want a touch screen with some GUI pre-made, there are probably 1000 companies already making such products, no need to re-invent the wheel. It would need to be > IPx5 classed too, if you want to put it outdoors in the rain and snow.
The main challenge for this kind of application is the money transactions, not the user interface. You should start there. What good money transaction software is there already available on the market, and what hardware is most suitable for it? To handle the transactions will be the real software problem for this application. Anyone can make some GUI touch screen fluff and have it toggle some relays or drive a stepper motor.
Also, I reckon the market for this application will mainly need 1) reliability 2) reliability and 3) reliability. The design, user-friendliness, visual appeal and fluffiness may let you sell one machine to a customer, but reliability will make you sell several.
Does anyone know of a cheap Android or programmable device that has wifi?
I need it for a project for a company that needs a Wi-Fi handheld device for the shop floor.
I'm not too fussed about the language the device uses though I'm not really interested in the iTouch as there's no intention to release the app in the app store and I don`t really want to jail break everybody's iTouch.
Ideally it would be small, iTouch size for example and relatively cheap $100 or less. Nothing fancy, just ability to write a simple UI and have Wi-Fi. Voice is not needed.
Not too fussed about touch or qwerty keyboard either.
How cheap is cheap? On the weekend I searched eBay for "android slate" and found a bunch at US $99. I bought one immediately. It may not have the world's fastest CPU or a heap o' RAM, but at that price, how can I complain?
Like you, I want to develop apps for use in an industrial situation. I'll list voice as a feature if I use handphones, but don't really need it.
Would you please publish your final purchase decision here and I will likewise if I find a "better" option.
Bear in mind that it's not all about the cheapness of the device and consider the development effort.
Android has at least 2 good things going for it.
1) Generally programmed in Java (although you can use C & C++ if you jump through a few hoops). I may be wrong but it seems that new grads these days only know java (no offence intended to anyone reading this) and even "old hands" with C++ can quickly pick it up.
2) Android was designed from the start for developers and has an excellent development environment and good tools.
I bought a bunch of Android books and really liked Unlocking Android: A Developer's Guide, but you might want to check Amazon for readers 5 star votes.
And I have just noticed Android Wireless Application Development which I will have to buy; I think that you might benefit from it too.
Oh, and if you want to outsource any development at competitive rates ... ;-)
There were some cheap Android devices at http://dealextreme.com
I want to start develop mobile applications and sell it. There are many mobile platforms for which I can begin develop: Windows Mobile , Android, Iphone, Linux based Devices.
I want to find out from people who has such experience which platform more comfortable and more profitable for me to use.
There is no general advice on this.
The recommendation clearly depends on your experience and several other factors. What programming languages do you know? What kind of applications do you want to develop? Do you want to take the risk that your software isn't even put in the corresponding app-store (see apple)?
You have to take several things into consideration. I'll try to make a short overview:
Android:
needs Android SDK
Java as programming language
free marketplace (i.e. no prior control whether your app comes in)
develop on any system you want to
open plattform
furhter information
iPhone
needs iPhone SDK
Objective-C as programming language
prior evalutation of your app before storing it in the app-store
you need to have a mac in order to develop for iPhone
closed plattform
further information
Windows Mobile
developing with .Net-Framework
don't know a lot more about it, but further information can be found here
Other Linux-based devices
take a look at their specifications, they often have an own SDK
Also don't forget about Symbian for Nokia. They recently launched their OVI-Store. And oh, also Palm could become very interesting just after yesterday's news that HP bought it. It's also a nice plattform.
Which one of these is more profitable for you also depends on your skills. Good software will sell good, no matter which plattform you decide for. My recommendation clearly is: Take a look at the SDKs and the needed environments and then compare it with your skills. If you say, you have a good experience in Java development go ahead with android. If you want to do some mac-stuff choose the iPhone.
I'd say the markets with the highes potential clearly are the iPhone and Android markets. I don't know, how Palm will develop now but there could be a big potential in it in half a year or a year.
Currently, the most lucrative platform is the iPhone. The Android is not even close yet. The number #1 selling game on Android is Robo Defense, its entry in the Market says 50,000 to 250,000 downloads, and its price is $2.99. Assuming the price has been constant, that means the developer has roughly made between $100,000 and $500,000 (after the 30% commission has been taken out). And yet, I have developer friends on the iPhone that have made way more money than that, and those friends are not even close to have the best selling apps on the iPhone in their own category.
Part of the problem is the number of handsets out there: according to Gartner, the number of Android handsets won't overtake iPhone handsets till 2012. The second problem is conversion rates: according to Admob, Android users are only worth 60% of the iPhone users in terms of converting from free lite version applications to paid applications (supposedly, Admob has compared identical apps on both Marketplaces).
That conversion rate is believed to be attributed to two factors: the type of users Android has, and the fact that Android currently only uses Google Checkout for its Market transactions (when in fact, it probably should use Pay Pal, not Google Checkout). But that too, should change soon. With the Evvo (from Sprint) coming out, Android will be a great phone, and with it, it will start attracting some of the very top high end users. Also, the Android Market is starting to accept transactions using carriers as go-betweens, so that should help remove some of the steps that it takes an Android user from buying an app (at least, I hope that it will).
And do notice that I didn't even mention the Ovi store from Nokia. The Nokia sdks are still as fragmented as ever. The Ovi store is currently a mess. Its three-star rating system is useless. All apps average to two stars. They don't allow you to upload screenshots. And the Ovi store is so expensive to upload an app to, $50 for Ovi + $150 in certificate signing fees, so it doesn't encourage new developers to even try it out.
Also, I didn't mention Microsoft. Microsoft is a bit of wild card right now. I can't say much about it, except that LG who was supposed to have more Windows Mobile phones than anything else now has more Android Mobile phones than anything else. So Microsoft better get their ass into gear if they'd like to stay competitive in the Mobile arena.
I would recommend Android as it's a growing market. Android development is well documented and newbie-friendly.
You may find these threads useful too:
What mobile platform should I start learning?
https://stackoverflow.com/questions/598252/most-promising-mobile-platforms
Getting Started With Mobile Development
You didn't mention webOS in your original question, but it's worth a look. Has an open development model, like Android, but is based on HTML and JavaScript, so might be easier to get started with if you have experience in Web development.
Here's the Palm developer website