since the latest version of my Android application I got some bug reports (via email) that my application doesn't work anymore. It does not crash but doesn't work anymore. Only a few users (<0.05%) have this problem. I don't see any similarities (same phone/provider/...).
Has anyone an idea how I can tackle this problem and find the bug?
If I publish a debug version of the application, is there any tool that the end-user can use to grab the logcat output and send it per email or...
Thanks!
My suggestion is that you incorporate a logging feature on your app, even the retail one. Make a log of critical/fatal errors, but try to minimize the log size (e.g. erasing it periodically or only logging really really critical errors). This way you can request such logs for such users, without having them install a new version of the app, and having them to recreate the erros, since sometimes recreating the whole situation in which such crashes occur is close to impossible, or that it doesn't happen for some other reason in a debug version.
You can also incorporate a function that sends you the log periodically, or just request it to the users.
I don't know any tool other than ADK to grab the logcat...
One of the best debugging tool available is the ACRA library.
Below are few links, which will help you to use this library.
1) http://code.google.com/p/acra/downloads/detail?name=acra-4.2.3.zip&can=2&q=
2)http://code.google.com/p/acra/wiki/BasicSetup
Let me know if you are stuck somewhere.
Related
I want you to know I'm a newbie to Android Development.
I have developed an Android application (not uploaded on Google Play Store) with Crashlytics implemented.
This app is used by 50-60 users per day. Before releasing the app I tested it many times on my device and several others to check if it crashes or not. The app passed all the tests.
Now the app is crashing on some of the user's device and I can see the reason why it is crashing in Crashlytics dashboard.
But the app is crashing on specific devices only and working fine on other user's device and even after reproducing the issue on my device the app does not crash so I'm a bit confused about how to tackle problems like this.
And I can not purchase a device just for the purpose of testing.
So my questions are,
How can I solve the bugs in my app which are not reproducible on my devices?
Is it possible to know the exact reason why the app crashed using other bug reporting tools so that I can reproduce the bug on my device.
Any help is appreciated
Thank You :)
Try ACRA. You can implement sending crash reports to your email which will have model of the phone, android version, and stack trace of the crash.
There is a very high chance that many bugs and performance issue might get missed out during testing. Using production level SDKs like Finotes or Crashlytics to capture bugs with a detailed report which makes it easy to do the root cause analysis.
Crashlytics captures only crashes, Finotes captures many other types of bugs as well. Both SDKs are so lightweight and don't affect apps performance in production.
Somehow managed to fix bugs my app by using Mixpanel. Tracking an event was so much helpful.
Thanks Guys. :)
I hope title itself says what my question is.
My app is crashing at very rare scenarios like nearly 1 out of 100 times.
I am not using any crash log tools and not logging exception causes.
I want to know does Android system maintains any crash log report when the app is crashed either in System level or in App level.
Thanks
Android system maintains a crash report and sends to the developer but the user has to allow this.
And then you can check it here in Android Developer Console:
As an alternative you can use third-party loggers like Liquid, Crashlytics (mention in another answer), Splunk MINT Express (ex-Bugsense) or any other from this links
I don't think so, if you can't debug it in real time with the IDE (DDMS and LogCat), you must use Crashlytics or any other similar tool.
I use it in all my apps, it is very useful.
Starting Android 4.1 gettings android log requires ROOT permission, so now it's impossible to
ask users to send log using apps like LogCollector, which just get android log and send it to email. Android log can be viewed using ddms app from Android SDK but it's not good to ask users install Android SDK.
So, how to get android log from the users for Android 4.1 without rooting?
You can get your own app's log without permission now. You can not read other apps' logs at all, permission or not.
This is somewhat documented here. Just refer to Diane Hackborn's response:
The change is that third party applications can no longer get the read
logs permission, however every app can read the logs containing only
the lines they have written, without needing any permission.
Keep in mind that access to the logs has never been part of the SDK,
and is still not part of the SDK. If you are relying on it then, even
after this change, you run the risk of breaking in the future. (And
that is partly why this got lost for documentation, it is not part of
the SDK, so there isn't really a place to document it, in fact
documenting it would kind-of make it a part of the SDK which we don't
want. :p)
There are quite a few handy libraries out there that send the Crash Reports across to you.
ACRA
Zubhium How it works
Bug Sense
Acra is open source and free. Zubhium and Bug Sense have have a limited functionality Free Version.
All being said, these are good ONLY for your own application. Everything else that does not belong to you, is basically, off limits.
I am not sure if this could / would work, but see the Source for Cyanogenmod. There might be something of use and interesting there.
I have an App available in the Android Market.
From time to time i get error reports in the Developer Console. For about 6 month there have been no more stack-traces visible. At first I though no more post-froyo bugs: 'yay'!
Recently I did some testing using a droid 2 which I am sure is not pre-froyo, I ran into an error, reported it, and never received this report in the Console.
Did I miss some configuration or option that enables me to receive stacktraces?
Is there something I can do about it?
I have no idea why you don't receive stack traces anymore nor how could you enable them. I have always felt Android Market is a somewhat unreliable service: reports are not accurate, downloads/active counts randomly change at times, crash reports not received, and so on.
However, I have suggestions how to implement similar functionality yourself and with a more reliable fashion: How do I obtain crash-data from my Android application?
Basically there are two options:
Use an existing component (like acra)
DIY by catching all uncaught exceptions.
(So you would have an option should you fail to receive a real solution)
I'd suggest you to stop listening to android market and work with other tools.
You should consider using a crash report tool like http://www.bugsense.com/ which is simple effective and meaningful
NOTE: i am not linked nor affiliated in any way with bugsense owners. I am just a simple user.
Recently I published my new application in Android Market. This application contained Android Licence. This Licence was working perfectly fine, when I put my own apk on my phone, there is a dialog that will pop out saying I need to buy this application on the market. However, today I saw my application on some forum and when I tested it, the license was not working, I can get in to the application without buying it. Is there something I am doing wrong?
And also can you give me some tips that can help me to stop this hackers. I am thinking to have a Push Notification on my main activity which will pop out only when I have a new updates therefore people who are not registered can't get this new updates. But the real problem is I don't know how to accomplish this. If you have a better solution can you please tell me, I am planning to publish my new app soon but I am thinking to delay it for a while because of this kind of piracy that is going on. Please help me, I have been working on this new application for several months and I don't want this kind of piracy to happen again.
I don't think you can get your licensed application through the market without buying it. I'm not sure why you would want to, since you can just compile it and install it yourself with ADB.
However, I wouldn't worry too much about people pirating your software. Any good or even marginally skilled cracker is going to be able to remove any security you have anyway. In my experience (from both ends of the playing field), the game always comes down to cat and mouse, and you will end up wasting time instead of adding features, fixing bugs, etc.
Look into ProGuard.
It comes free with the Eclipse/Android stuff.
ProGuard presumably makes it more difficult for people to decompile and modify your application package to defeat the licensing check.
I do not know how well ProGuard actually is at discouraging piracy.