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.
Related
I want to add a Bug Report/Report Problem option to my app, which sends device and app info and a user's comment to the developer. I was wondering if there are any "standard" things to report? I am reporting OS Version, Device Name and App Version. Is there anything important I'm missing out and should include? What are you guys normally including ?
You could avoid sending out this data manually by integrating with a service like Instabug
which allows the user to report bugs through your preferred method, but mainly through shaking the device.
It will display a screenshot of the current view that the user can draw on for visual bug identification. What gets reported along is (but not only) the following:
App version
Device type
OS version
Location
CPU load
Memory usage
Storage
Connectivity
Battery
Orientation
Network and console logs
Visual reproduction steps
UI view hierarchy inspection
users can further describe the bug using text, extra screenshots, voice notes, or screen recordings.
All reports arrive in your Instabug dashboard containing various details such as:
Network and console logs
Complete Device details
Reproduction steps
Crash stack trace (In case of a crash report)
It only takes a line of code to integrate.
For full disclosure, I work at Instabug. Let me know if I can help.
Check out the free service
http://www.crashlytics.com/
you can get the features what is mentioned above.
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.
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.
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.
I have developed an app and want to make sure that whenever an unexpected crash occurs, the user is able to send a crash report.
From Android 2.2 onward I read that Android has something build in for this. However, in my case, the application crashes in one special situation, but only the "Force close" button is shown.
The button is not shown in the app downloaded from the Market as well as when I install it directly on my telephone.
Must I perform some programmatic effort to achieve this?
Crash report options are given to users of Android >= 2.2. As a developer you don't need to do anything with your code just monitor your developer account for crash/freeze reports.
See this blog
You can add Crash Report SDK in your project. If an unexpected crash occurs, it will be reported to the crashlog.org platform. You can view the crash log on this platform, where offers Stack traces, Memory, Storage, Thread and Process information for debugging.