Giter Site home page Giter Site logo

acralyzer's Introduction

Current Status
Build test
Maven Central Maven Central
Android Versions minVersion targetVersion
License license
Statistics AppBrain stats

What is ACRA ?

ACRA is an open-source library for Android developers to easily integrate crash reporting into their applications. It provides a comprehensive set of features, including customizable reporting, support for multiple different senders, and flexible data collection options, enabling developers to quickly identify and diagnose issues in their apps.

ACRA is used in 1.57% (See AppBrain/stats) of all apps on Google Play as of June 2020. That's over 13 thousand apps and over 5 billion downloads including ACRA.

A crash reporting feature for android apps is native since Android 2.2 (FroYo) but only available through the official Android Market (and with limited data). ACRA is a great help for Android developers:

ACRA's notification systems are clean. If a crash occurs, your application does not add user notifications over existing system's crash notifications or reporting features. By default, the "force close" dialog is not displayed anymore, to enable it set alsoReportToAndroidFramework to true.

The user is notified of an error only once, and you might enhance the perceived quality of your application by defining your own texts in the notifications/dialogs.

Please do not hesitate to open defects/enhancements requests in the issue tracker.

How to use

Our Website covers a step-by-step guide for initial setup as well as advanced usage information.

Latest version

For the latest version and a complete changelog, please see the Release page.

For migrating from 4.x, please see our Migration guide in the Wiki.

Backends

Acrarium is the official backend for report storage and analysis. Acrarium is still in active development.

Acralyzer was the official backend before that. It runs on CouchDB, for which free hosting solutions exist. It is feature complete, but currently unmaintained. Anybody picking this project up is very welcome.

A lot of other solutions have been provided by the community, just check which one you like most.

acralyzer's People

Contributors

agrueneberg avatar f43nd1r avatar halkeye avatar kevingaudin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

acralyzer's Issues

error 500 on iriscouch

I'm getting error 500 from Acra

and acralyzer dump this log :
[Fri, 26 Jul 2013 18:45:20 GMT] [error] [<0.215.0>] OS Process Error <0.210.0> :: {<<"render_error">>,
<<"function raised error: (new SyntaxError("JSON.parse: unexpected character", "updates.report", 5)) \nstacktrace: (null,[object Object])@updates.report:5\nrunUpdate(function (doc, req) {var data = JSON.parse(req.body);data.timestamp = new Date;if (isNaN((new Date(data.USER_CRASH_DATE)).getTime())) {data.USER_CRASH_DATE = data.timestamp;data.USER_CRASH_DATE_FIXED_BY_ACRALYZER = true;}data.user_ip = req.peer;data._id = data.REPORT_ID;if (data.STACK_TRACE) {data.STACK_TRACE = data.STACK_TRACE.split("\n");}if (data.APPLICATION_LOG) {data.APPLICATION_LOG = data.APPLICATION_LOG.split("\n");}if (data.LOGCAT) {data.LOGCAT = data.LOGCAT.split("\n");}if (data.RADIOLOG) {data.RADIOLOG = data.RADIOLOG.split("\n");}if (data.EVENTSLOG) {data.EVENTSLOG = data.EVENTSLOG.split("\n");}if (data.DUMPSYS_MEMINFO) {data.DUMPSYS_MEMINFO = data.DUMPSYS_MEMINFO.split("\n");}if (data.SETTINGS_SECURE) {if (data.SETTINGS_SECURE.ENABLED_INPUT_METHODS) {data.SETTINGS_SECURE.ENABLED_INPUT_METHODS = data.SETTINGS_SECURE.ENABLED_INPUT_METHODS.split(":");}}if (data.SETTINGS_SYSTEM) {if (data.SETTINGS_SYSTEM.AIRPLANE_MODE_RADIOS) {data.SETTINGS_SYSTEM.AIRPLANE_MODE_RADIOS = data.SETTINGS_SYSTEM.AIRPLANE_MODE_RADIOS.split(",");}}if (data.SETTINGS_GLOBAL) {if (data.SETTINGS_GLOBAL.AIRPLANE_MODE_RADIOS) {data.SETTINGS_GLOBAL.AIRPLANE_MODE_RADIOS = data.SETTINGS_GLOBAL.AIRPLANE_MODE_RADIOS.split(",");}if (data.SETTINGS_GLOBAL.AIRPLANE_MODE_TOGGLEABLE_RADIOS) {data.SETTINGS_GLOBAL.AIRPLANE_MODE_TOGGLEABLE_RADIOS = data.SETTINGS_GLOBAL.AIRPLANE_MODE_TOGGLEABLE_RADIOS.split(",");}}if (data.INITIAL_CONFIGURATION) {if (data.INITIAL_CONFIGURATION.screenLayout) {data.INITIAL_CONFIGURATION.screenLayout = data.INITIAL_CONFIGURATION.screenLayout.split("+");}if (data.INITIAL_CONFIGURATION.uiMode) {data.INITIAL_CONFIGURATION.uiMode = data.INITIAL_CONFIGURATION.uiMode.split("+");}}if (data.CRASH_CONFIGURATION) {if (data.CRASH_CONFIGURATION.screenLayout) {data.CRASH_CONFIGURATION.screenLayout = data.CRASH_CONFIGURATION.screenLayout.split("+");}if (data.CRASH_CONFIGURATION.uiMode) {data.CRASH_CONFIGURATION.uiMode = data.CRASH_CONFIGURATION.uiMode.split("+");}}addReportSignature(data);if (data.USER_CRASH_DATE && data.USER_APP_START_DATE) {data.uptime = ((new Date(data.USER_CRASH_DATE)).getTime() - (new Date(data.USER_APP_START_DATE)).getTime()) / 1000;}data.requestHeaders = req.headers;message = "OK";return [data, message];},[object Object],[object Array])@/home/ubuntu/hosting/installs/hosting_v1.3.0r1/share/couchdb/server/main.js:961\n(function (doc, req) {var data = JSON.parse(req.body);data.timestamp = new Date;if (isNaN((new Date(data.USER_CRASH_DATE)).getTime())) {data.USER_CRASH_DATE = data.timestamp;data.USER_CRASH_DATE_FIXED_BY_ACRALYZER = true;}data.user_ip = req.peer;data._id = data.REPORT_ID;if (data.STACK_TRACE) {data.STACK_TRACE = data.STACK_TRACE.split("\n");}if (data.APPLICATION_LOG) {data.APPLICATION_LOG = data.APPLICATION_LOG.split("\n");}if (data.LOGCAT) {data.LOGCAT = data.LOGCAT.split("\n");}if (data.RADIOLOG) {data.RADIOLOG = data.RADIOLOG.split("\n");}if (data.EVENTSLOG) {data.EVENTSLOG = data.EVENTSLOG.split("\n");}if (data.DUMPSYS_MEMINFO) {data.DUMPSYS_MEMINFO = data.DUMPSYS_MEMINFO.split("\n");}if (data.SETTINGS_SECURE) {if (data.SETTINGS_SECURE.ENABLED_INPUT_METHODS) {data.SETTINGS_SECURE.ENABLED_INPUT_METHODS = data.SETTINGS_SECURE.ENABLED_INPUT_METHODS.split(":");}}if (data.SETTINGS_SYSTEM) {if (data.SETTINGS_SYSTEM.AIRPLANE_MODE_RADIOS) {data.SETTINGS_SYSTEM.AIRPLANE_MODE_RADIOS = data.SETTINGS_SYSTEM.AIRPLANE_MODE_RADIOS.split(",");}}if (data.SETTINGS_GLOBAL) {if (data.SETTINGS_GLOBAL.AIRPLANE_MODE_RADIOS) {data.SETTINGS_GLOBAL.AIRPLANE_MODE_RADIOS = data.SETTINGS_GLOBAL.AIRPLANE_MODE_RADIOS.split(",");}if (data.SETTINGS_GLOBAL.AIRPLANE_MODE_TOGGLEABLE_RADIOS) {data.SETTINGS_GLOBAL.AIRPLANE_MODE_TOGGLEABLE_RADIOS = data.SETTINGS_GLOBAL.AIRPLANE_MODE_TOGGLEABLE_RADIOS.split(",");}}if (data.INITIAL_CONFIGURATION) {if (data.INITIAL_CONFIGURATION.screenLayout) {data.INITIAL_CONFIGURATION.screenLayout = data.INITIAL_CONFIGURATION.screenLayout.split("+");}if (data.INITIAL_CONFIGURATION.uiMode) {data.INITIAL_CONFIGURATION.uiMode = data.INITIAL_CONFIGURATION.uiMode.split("+");}}if (data.CRASH_CONFIGURATION) {if (data.CRASH_CONFIGURATION.screenLayout) {data.CRASH_CONFIGURATION.screenLayout = data.CRASH_CONFIGURATION.screenLayout.split("+");}if (data.CRASH_CONFIGURATION.uiMode) {data.CRASH_CONFIGURATION.uiMode = data.CRASH_CONFIGURATION.uiMode.split("+");}}addReportSignature(data);if (data.USER_CRASH_DATE && data.USER_APP_START_DATE) {data.uptime = ((new Date(data.USER_CRASH_DATE)).getTime() - (new Date(data.USER_APP_START_DATE)).getTime()) / 1000;}data.requestHeaders = req.headers;message = "OK";return [data, message];},[object Object],[object Array])@/home/ubuntu/hosting/installs/hosting_v1.3.0r1/share/couchdb/server/main.js:1031\n("_design/acra-storage",[object Array],[object Array])@/home/ubuntu/hosting/installs/hosting_v1.3.0r1/share/couchdb/server/main.js:1505\n()@/home/ubuntu/hosting/installs/hosting_v1.3.0r1/share/couchdb/server/main.js:1550\n@/home/ubuntu/hosting/installs/hosting_v1.3.0r1/share/couchdb/server/main.js:1561\n@:0\n">>}

Changes polling with new reports notification

For the moment, there is no background polling of data.

We should implement such a polling so that the UI gets refreshed and a notification issued when new reports have been received.

One-click copy of stack trace

Could you add a button to allow a one-click copy of the stack trace? Right now one has to select the text of the stack trace taking care to not miss the beginning or the end of the text, then copy.

For embedded exceptions, you could either have one button per stack trace, or just allow quick-copying the deepest one.

Since you already use ZeroClipboard it shouldn't be too hard…

Unable to purge reports

Hi,

First of all, just like many others around here, I would like to thank the developers for this work that looks very promising.
When I go to the "Admin" tab in acralyzer, and click the "Purge" button to purge reports older than 90 days, I just get a notification "purge failed". It might be a misconfiguration error, but even in this case I think the error message should give more information.

Here is what I get in the console (in chrome) when clicking the "purge" button :

Purge reports older than 90 AdminControllers.js:50
key will be: [2013,3,6] AdminControllers.js:51
GET http://****.cloudant.com/acra-patients/_design/acra-storage/_view/reports-revision-per-day?descending=true&startkey=%5B2013,2,9%5D 404 (Object Not Found) 
    angular.min.js:105
    (anonymous function) angular.min.js:105
    q angular.min.js:101
    f angular.min.js:99
    i angular.min.js:79
    i angular.min.js:79
    (anonymous function) angular.min.js:79
    e.$eval angular.min.js:91
    e.$digest angular.min.js:89
    e.$apply angular.min.js:91
    (anonymous function) angular.min.js:152
    v.event.dispatch jquery-1.8.3.min.js:2
    o.handle.u

Edit : I got this error after updating acralyzer and acra-reporter to the latest version on git, which is commit dd1869e, "more efficient purges". To do the update, I just followed the installation guide once again.

Thanks !

Problems with Acralyzer

Hi,

i have some Problems with Acralyzer. I made a little Hello World Android App to test Acralyzer but the errors aren't reportet to my Cloudant DB.

Here is my Code:

@ReportsCrashes(
formKey = "",
formUri = "http://xxx.cloudant.com/acra-myapp/_design/acra-storage/_update/report",
reportType = org.acra.sender.HttpSender.Type.JSON,
httpMethod = org.acra.sender.HttpSender.Method.PUT,
formUriBasicAuthLogin="xxx",
formUriBasicAuthPassword="ODKm34wutstEaluhotu1B1yX")

public class myapp extends Application{

  @Override
  public final void onCreate() {

    super.onCreate();
    ACRA.init(this);    

  }

}

To test the reporting i programmed a division by zero when i press a button in the Main Activity:

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void btn_send(View view)  {

    int i = 10 / 0; 

    }
}

It should work in my opinion.
I hope you can help me with it.

Athoril

ProGuard support

What's the plan regarding proguard?

Would acra-storage retrace the stacktrace when it receives the report, or would acralyzer retrace them on the fly?

I see the proguard deobfuscator is written in Java. If I understand correctly, CouchApps are Javascript only. Would the deobfuscator have to be rewritten in javascript, or can we run the java code directly through something like Doppio?

Cheers,
A.

Unable to follow user permissions instructions on Cloudant

The setup guide does not cover installation on Cloudant servers. According to the Cloudant FAQ:

If you want to use the _users database you must first turn off Cloudant's own security for
the roles you want to manage via _users. To do this you need to PUT a JSON document
like the following to the _security endpoint of the database (for example
https://USERNAME.cloudant.com/DATABASE/_security):

https://cloudant.com/for-developers/faq/auth/

I was unable to create permissions for a user called "reporter" and am getting 403 errors when trying to sumbit reports, even with the admin user. In the meantime I removed the javascript function during the check for authorization in the CouchDb design doc.

acra-undefined no such file or directory

When i starting my application i have a 404 response from my server.

On the couchapp logs i have:
Could not open file /var/lib/couchdb/acra-undefined.couch: no such file or directory

So i cannot send correctly a report. Something missing? i would like a more helful wiki page about installation. thanks.

Ability to do multiple/bulk delete

There should be an option to delete multiple report. Like adding checkbox next to the report. Currently there is only delete 'one by one' besides the 'Purge' option (which is a great feature). Please correct me if I'm wrong.

Don't see any "Bugs" / How to create Bugs

Hello,

some days ago we installed Acralyzer for our App. We got some Reports, but we can't get the "Bugs" stuff to work.

Should Bugs be created by Acralyzer or is there something we need to do? the Acralyzer user manual is not very helpfull. :(

We have some Reports that are from the same user with the same device, and the exception is also the same. but there is no Bug created and we can't find a way to assign the reports to a new bug.

Thanks

Being able to "drop" old releases up to a version

I know the project just started and there are a lot of things to do (like grouping) that are more important, but, from my point of view, being able to completely "clear" old releases would be also a very welcome addition.

The simplest way to do this could be a parameter that tells Acralyzer from which versions exception are accepted, everything else will be dropped.

This is very useful especially if you release a buggy version with a "silentErrorReport" somewhere that generates tons of exceptions, if some of your users never upgrade you will get flooded by those errors forever.

Or maybe it could be done at the acraproxy.php level? This would make some of us save some money on the couchDB hosting :)

Import reports from Google Docs

It would be useful if Acralyzer could import existing crash reports from a Google Docs Spreadsheet to make migration easier.

Unable to list existing users

The Admin/Users page doesn't list any users. Right after adding a user, the newly created user is listed. Reloading the "Admin" page hides any user information. When I try to re-create the user, CouchDB Log says error 409, so it seems that the user is there.

Mandatory Columns ?

With my application I want to choose the column to send to the report but each times I used a restricted number of columns ,the report was partialy available and i don't see it well in acralyzer. So my question is : what are the mandatory columns to send to a report ?

regards

Build Script Support

I'm a big fan of http://gruntjs.com/ for automating build steps. My Plan is to add grunt scripts to package up the code into a nice small package for couchapp deployment.

The bigger this app gets, the more files it'll have to keep readability/testability/etc. This will lead to slower load times as we have to load each file when the app is loaded.

Grunt has some great tools for concatenating and minifying files into smaller chunks. This means for development we can have many files, but deployment only have 1 file with all the angular code.

I am proposing migrating all the code do a different directory, lets say src, and having grunt build the _attachment directory of just files we need. We can still commit the _attachment directory so people can easily launch but it'll be minified and streamlined.

(I'm creating an issue for discussion purposes)

Reporter User doesn't work :( : I must use admin to report crash

I have an issue with reporter user... indeed, when I create a reporter user with this command : curl -X PUT -u [adminuser]:[adminpassword] http://[your.couchdb.host]:[port]/_users/org.couchdb.user:[newuserid] -d '{"name":"[newusername]", "password":"[newuserpassword]", "roles":["reporter", "reader"], "type":"user"}' -H "Content-Type: application/json"

He is well created but when i enter it in configuration, the report is not realy send....

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] 'PUT' /acra-[mydb]/design/acra-storage/update/report/8a29f8ad-b3da-4842-8007-73baf6b37ac3 {1,
1}
Headers: [{'Accept',"text/html,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,
/
;q=0.5"},
{'Authorization',"Basic Z2FtaWZpY2F0aW9uX3JlcG9ydGVyOklubm92YXRpMG40NA=="},
{'Connection',"Keep-Alive"},
{'Content-Length',"13147"},
{'Content-Type',"application/json"},
{'Host',"[myApp].cloudapp.net:5984"},
{'User-Agent',"Android"}]

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] OAuth Params: []

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] Minor error in HTTP request: {unauthorized,
<<"Name or password is incorrect.">>}

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] Stacktrace: [{couch_httpd_auth,default_authentication_handler,1},
{couch_httpd,authenticate_request,2},
{couch_httpd,handle_request_int,5},
{mochiweb_http,headers,5},
{proc_lib,init_p_do_apply,3}]

[Thu, 21 Mar 2013 16:22:27 GMT] [info] [] 90.84.144.194 - - 'PUT' /acra-[mydb]/_design/acra-storage/_update/report/8a29f8ad-b3da-4842-8007-73baf6b37ac3 302

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] 'PUT' /acra-[mydb]/design/acra-storage/update/report/8a29f8ad-b3da-4842-8007-73baf6b37ac3 {1,
1}
Headers: [{'Accept',"text/html,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,
/
;q=0.5"},
{'Authorization',"Basic Z2FtaWZpY2F0aW9uX3JlcG9ydGVyOklubm92YXRpMG40NA=="},
{'Connection',"Keep-Alive"},
{'Content-Length',"13147"},
{'Content-Type',"application/json"},
{'Host',"[myApp].cloudapp.net:5984"},
{'User-Agent',"Android"}]

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] OAuth Params: []

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] Minor error in HTTP request: {unauthorized,
<<"Name or password is incorrect.">>}

[Thu, 21 Mar 2013 16:22:27 GMT] [debug] [] Stacktrace: [{couch_httpd_auth,default_authentication_handler,1},
{couch_httpd,authenticate_request,2},
{couch_httpd,handle_request_int,5},
{mochiweb_http,headers,5},
{proc_lib,init_p_do_apply,3}]

[Thu, 21 Mar 2013 16:22:27 GMT] [info] [] 90.84.144.194 - - 'PUT' /acra-[mydb]/_design/acra-storage/_update/report/8a29f8ad-b3da-4842-8007-73baf6b37ac3 302

What is strange is that it works if I'm using the admin user with "reporter" rules

Acralyzer misplaces values of Field like Version code ,etc Also showing wrong time

I have the below line in my code
customReportContent = { APP_VERSION_CODE, ANDROID_VERSION, PHONE_MODEL, CUSTOM_DATA, STACK_TRACE, LOGCAT ,REPORT_ID}

My App version is 1.0 , Android version is 4.0.4.

But in the bug report , values are misplaced.

Check in the snapshots
bug1
bug2

Also showing wrong time of arrival
bug3

It shows 44 Years ago. Also # of errors repoted is "0".

Can any one detect the problem ?

Stack trace displaying one character per line for reports in Acralyzer

EDIT: woops, my bad. i was missing _design/acra-storage/_update/report off the end of my formuri.

When I select a report, in the summary section, the stack trace is displaying with one character per line.
The stack trace appears scrambled, here is a snippet, in full it is about 150 lines:

j
a
N
e
r
V
i
e
w
A

This happens for every report that has been created.
All other values in the summary section (e.g. package name) display correctly.
Weirdly, the stack trace in the full report the stack trace appears normally.
here is my config (with fake details):

@org.acra.annotation.ReportsCrashes(
formKey = ""
formUri = "https://example.cloudant.com/acra-example/",        
formUriBasicAuthLogin = "examplelogin",
formUriBasicAuthPassword = "examplepass",
reportType = org.acra.sender.HttpSender.Type.JSON,
httpMethod = org.acra.sender.HttpSender.Method.PUT)

Acralizer on Bug Show ever Unknown Source

I'm using ACRA for track bugs on my android app. I use Acralyzer as BackEnd, but i see that when i symulate a bug in Debug mode (without Proguard) i see stacktrace correctly, but on Release Application (using Proguard) i've ever Unknown Source instead line of error (for example):

Caused by: java.lang.NullPointerException at com.mydomain.my_app_name.ui.webview.myClass.onCreate(Unknown Source)

Can someone help me please?

Missing timestamp field

I have installed Acralyzer on Couch DB 1.0.4. Everything seems to be working fine except that all reports show up as being from a few seconds ago. Looking at the json documents the timestamp field is empty.

in x hours

Hi,

some of my bugreports are dated in the future eg
"in 5 hours"

does the reporting use the device time on which the crash occured?

Error adding a 'reporter' user

Hello I have followed the instruction how to install acralyzer but I was stuck in adding a 'report' user. Every time I create a report user this is the error displayed {"error":"forbidden","reason":"Doc ID must be of the form org.couchdb.user:name"}

this is the command I executed to add report user:
curl -X PUT -u adminuser:adminpassword http://tigito.iriscouch.com:80/_users/org.couchdb.user:ccfiel -d '{"name":"Chris", "password":"qwerty", "roles":["reporter", "reader"], "type":"user"}' -H "Content-Type: application/json"

I am using Iriscouch services for my couchDB. Any ideas what went wrong?

Chris Ian

RSS feed and authentication

What are the requirements for an RSS client to access Acralyzer's RSS feed?
I can click the RSS icon in the "latest reports" view and see the RSS content alright, but if I give that link to an RSS reader, I don't get anything. I presume that the RSS client can't login into the website. The client I tried had support for login/password authentication, but I'm guessing this is for HTTP basic authentication, which is not what Acralyzer is using?

Aggregate statistics by signature field

Been working with acralyzer a fair bit today and have to say I'm loving the potential of this front-end. Thanks again for quickly resolving some db issues this weekend.

I'm guessing you have a lot of enhancements already planned, but I thought I'd chip in my two cents. At this moment the only significant thing Bugsense has over Acralyzer IMO is its aggregation of crash reports by the SIGNATURE field. I know I can get similar functionality by filtering manually in the reports page of acralyzer, but it would be nice to see the aggregate statistics at a glance for a particular error signature. Would be nice to know how many crashes have involved FooException on line XX of bar.java. Icing on the cake would be a special view showing only errors of a particular signature, with an area for devs to post comments on that error class, and the ability to mark that whole signature as resolved (and thus hidden). But now I'm getting ahead of myself. :)

Keep up the great work, and if you need a guinea pig, I'm happy to help!

Application log is missing newlines

First of all, did I already mention Acralyzer looks very neat and promising? :)

I'm seeing an odd behaviour here, where the application log in Acralyzer is printed on a single line. Logcat and events log are displayed fine (with the little 'expand' widget).

My application log comes from a file recorded by logback, and looks fine on other backends (e.g., acra-reports). Do I have to format it in a special way for acralyzer, or is this an acralyzer bug?

Custom data does not support newlines

If I add custom data with newlines in it, the lines after the first ones turn into keys in the custom data table.

For example, calling ACRA.getErrorReporter().putCustomData( "USER_COMMENT", "hah\nha" ); results in the following data in the database entry:

"CUSTOM_DATA": {
   "USER_COMMENT": "hah",
   "ha": true

}

In this case the value came from an EditText in an Activity. Sounds like a potential security issue, doesn't it?

Report with wrong data crashing the browse reports page

I am using ACRA+Acralyzer for my projects, and I have received a report which is crashing Acralyzer views (if I try to browse reports, and this report is on the list, I just get the loading image with the bug icon).

Maybe it has something to do with the report being from the BlackBerry runtime for Android, or with the strange dates it has (uptime is also strangely null).

Watching the page response from Acralyzer from the browse reports page, I can see that this report has a "null" key:

{"total_rows":13,"offset":0,"rows":[
// 12 other rows with correct info //
{"id":"956e9ca3-ba3f-4be0-9537-aa7c75a5b1b8","key":null,"value":{"user_crash_date":"2013-05-17T16:16:01.000+561930:14","android_version":"2.3.3","application_version_name":"3.0.4","signature":{"full":"java.lang.NullPointerException at cat.ereza.properbusbcn.fragments.SearchFragment.onCreateView(SearchFragment.java:192)","digest":"java.lang.NullPointerException : SearchFragment.java:192"},"device":"RIM BlackBerry BlackBerry Runtime for Android Apps"}}
]}

I attach the full report (extracted from Futon) here:

{
   "_id": "956e9ca3-ba3f-4be0-9537-aa7c75a5b1b8",
   "_rev": "1-eab84b0edd323478817fad5c1b3d72d9",
   "USER_EMAIL": "N/A",
   "SETTINGS_GLOBAL": {
   },
   "DEVICE_FEATURES": {
       "android.hardware.camera": true,
       "android.hardware.location.network": true,
       "android.hardware.wifi": true,
       "android.hardware.microphone": true,
       "glEsVersion": "2.0",
       "android.hardware.location": true,
       "android.hardware.location.gps": true,
       "android.hardware.sensor.gyroscope": true,
       "android.hardware.touchscreen.multitouch": true,
       "android.hardware.camera.front": true,
       "android.hardware.touchscreen": true,
       "android.hardware.sensor.compass": true,
       "android.hardware.sensor.accelerometer": true
   },
   "PHONE_MODEL": "BlackBerry Runtime for Android Apps",
   "SETTINGS_SECURE": {
       "MOUNT_UMS_NOTIFY_ENABLED": 1,
       "ASSISTED_GPS_ENABLED": 1,
       "CDMA_CELL_BROADCAST_SMS": 1,
       "PREFERRED_CDMA_SUBSCRIPTION": 1,
       "DEFAULT_INPUT_METHOD": "com.rim.inputmethod/.BlackBerryIME",
       "ENABLED_INPUT_METHODS": [
           "com.rim.inputmethod/.BlackBerryIME"
       ],
       "BLUETOOTH_ON": 0,
       "BACKUP_TRANSPORT": "android/com.android.internal.backup.LocalTransport",
       "MOUNT_PLAY_NOTIFICATION_SND": 1,
       "PREFERRED_NETWORK_MODE": 0,
       "MOUNT_UMS_AUTOSTART": 0,
       "INSTALL_NON_MARKET_APPS": 0,
       "ALLOW_MOCK_LOCATION": 0,
       "WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON": 0,
       "USB_MASS_STORAGE_ENABLED": 1,
       "HTTP_PROXY": "",
       "NETWORK_PREFERENCE": 1,
       "LOCATION_PROVIDERS_ALLOWED": "network,gps",
       "BACKUP_ENABLED": 0,
       "ANDROID_ID": "32389f571392509a",
       "WIFI_ON": 1,
       "DATA_ROAMING": 1,
       "MOUNT_UMS_PROMPT": 1,
       "DEVICE_PROVISIONED": 1,
       "ADB_ENABLED": 0
   },
   "INSTALLATION_ID": "686a1ecc-5d54-4f71-a937-f6b019674ca3",
   "SETTINGS_SYSTEM": {
       "UNLOCK_SOUND": "/system/media/audio/ui/Unlock.ogg",
       "VOLUME_RING": 7,
       "TIME_12_24": 24,
       "POWER_SOUNDS_ENABLED": 1,
       "HAPTIC_FEEDBACK_ENABLED": 1,
       "RINGTONE": "content://media/internal/audio/media/8",
       "MODE_RINGER": 2,
       "DOCK_SOUNDS_ENABLED": 0,
       "VIBRATE_IN_SILENT": 1,
       "SCREEN_OFF_TIMEOUT": 60000,
       "CAR_DOCK_SOUND": "/system/media/audio/ui/Dock.ogg",
       "TRANSITION_ANIMATION_SCALE": "1.0",
       "EMERGENCY_TONE": 0,
       "NOTIFICATIONS_USE_RING_VOLUME": 1,
       "LOCK_SOUND": "/system/media/audio/ui/Lock.ogg",
       "SCREEN_BRIGHTNESS_MODE": 0,
       "ALARM_ALERT": "content://media/internal/audio/media/43",
       "AIRPLANE_MODE_TOGGLEABLE_RADIOS": "bluetooth,wifi",
       "VOLUME_BLUETOOTH_SCO": 15,
       "VOLUME_SYSTEM": 7,
       "DESK_UNDOCK_SOUND": "/system/media/audio/ui/Undock.ogg",
       "HEARING_AID": 0,
       "AIRPLANE_MODE_RADIOS": [
           "cell",
           "bluetooth",
           "wifi"
       ],
       "DESK_DOCK_SOUND": "/system/media/audio/ui/Dock.ogg",
       "NOTIFICATION_SOUND": "content://media/internal/audio/media/52",
       "TTY_MODE": 0,
       "DIM_SCREEN": 1,
       "NOTIFICATION_LIGHT_PULSE": 1,
       "CAR_UNDOCK_SOUND": "/system/media/audio/ui/Undock.ogg",
       "MUTE_STREAMS_AFFECTED": 46,
       "ACCELEROMETER_ROTATION": 1,
       "DTMF_TONE_TYPE_WHEN_DIALING": 0,
       "VOLUME_VOICE": 5,
       "LOW_BATTERY_SOUND": "/system/media/audio/ui/LowBattery.ogg",
       "VIBRATE_ON": 4,
       "VOLUME_ALARM": 7,
       "SCREEN_BRIGHTNESS": 102,
       "VOLUME_NOTIFICATION": 7,
       "CALL_AUTO_RETRY": 0,
       "AUTO_TIME": 1,
       "NEXT_ALARM_FORMATTED": "",
       "MODE_RINGER_STREAMS_AFFECTED": 166,
       "STAY_ON_WHILE_PLUGGED_IN": 0,
       "VOLUME_MUSIC": 15,
       "WINDOW_ANIMATION_SCALE": "1.0",
       "LOCKSCREEN_SOUNDS_ENABLED": 0,
       "AIRPLANE_MODE_ON": 0
   },
   "SHARED_PREFERENCES": {
       "": true,
       "default": {
           "acra": {
               "lastVersionNr": 10
           },
           "drt_ts": 0,
           "drt": "",
           "last_tab": "search"
       }
   },
   "ANDROID_VERSION": "2.3.3",
   "PACKAGE_NAME": "cat.ereza.properbusbcn",
   "APP_VERSION_CODE": 10,
   "CRASH_CONFIGURATION": {
       "hardKeyboardHidden": "HARDKEYBOARDHIDDEN_YES",
       "orientation": "ORIENTATION_PORTRAIT",
       "screenLayout": [
           "SCREENLAYOUT_SIZE_XLARGE",
           "SCREENLAYOUT_LONG_YES"
       ],
       "keyboard": "KEYBOARD_QWERTY",
       "mcc": 0,
       "locale": "ca_ES",
       "fontScale": "1.0",
       "navigationHidden": "NAVIGATIONHIDDEN_NO",
       "uiMode": [
           "UI_MODE_TYPE_NORMAL",
           "UI_MODE_NIGHT_NO"
       ],
       "userSetLocale": false,
       "navigation": "NAVIGATION_DPAD",
       "seq": 15,
       "keyboardHidden": "KEYBOARDHIDDEN_NO",
       "mnc": 0,
       "touchscreen": "TOUCHSCREEN_FINGER"
   },
   "USER_CRASH_DATE": "2013-05-17T16:16:01.000+561930:14",
   "DUMPSYS_MEMINFO": [
       "Applications Memory Usage (kB):",
       "Uptime: 16161837 Realtime: 16161837",
       "",
       "** MEMINFO in pid 15929491 [cat.ereza.properbusbcn] **",
       "                    native   dalvik    other    total",
       "            size:      511     6791      N/A     7302",
       "       allocated:     3988     4136      N/A     8124",
       "            free:       36     2655      N/A     2691",
       "           (Pss):        0        0        0        0",
       "  (shared dirty):        0        0        0        0",
       "    (priv dirty):        0        0        0        0",
       " ",
       " Objects",
       "           Views:        0        ViewRoots:        0",
       "     AppContexts:        0       Activities:        0",
       "          Assets:        2    AssetManagers:        2",
       "   Local Binders:        5    Proxy Binders:       13",
       "Death Recipients:        1",
       " OpenSSL Sockets:        0",
       " ",
       " SQL",
       "               heap:      146         MEMORY_USED:      146",
       " PAGECACHE_OVERFLOW:       26         MALLOC_SIZE:       50",
       " ",
       " DATABASES",
       "      pgsz     dbsz   Lookaside(b)  Dbname",
       "         1       14             10  webview.db",
       "         1        6             16  webviewCache.db",
       ""
   ],
   "BUILD": {
       "TIME": 1344489236000,
       "FINGERPRINT": "unknown",
       "HARDWARE": "unknown",
       "UNKNOWN": "unknown",
       "RADIO": "unknown",
       "BOARD": "unknown",
       "PRODUCT": "BlackBerry Runtime for Android Apps",
       "DISPLAY": "2.1.0.131",
       "USER": "ec_agent",
       "HOST": "brx278cnc",
       "DEVICE": "PlayBook",
       "TAGS": "test-keys",
       "MODEL": "BlackBerry Runtime for Android Apps",
       "BOOTLOADER": "unknown",
       "VERSION": {
           "CODENAME": "REL",
           "RELEASE": "2.3.3",
           "INCREMENTAL": "player-2.0.0_dev.eng.SER.20120809.011356",
           "SDK_INT": 10,
           "SDK": 10
       },
       "CPU_ABI": "nto-armle-v7",
       "CPU_ABI2": "unknown",
       "ID": "2.1.0.131",
       "SERIAL": "unknown",
       "MANUFACTURER": "RIM",
       "BRAND": "BlackBerry",
       "TYPE": "user"
   },
   "STACK_TRACE": [
       "java.lang.NullPointerException",
       "\tat cat.ereza.properbusbcn.fragments.SearchFragment.onCreateView(SearchFragment.java:192)",
       "\tat android.support.v4.app._HoloFragment.onCreateView(_HoloFragment.java:179)",
       "\tat android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)",
       "\tat android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)",
       "\tat android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)",
       "\tat android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)",
       "\tat android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)",
       "\tat android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)",
       "\tat android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)",
       "\tat android.support.v4.view.ViewPager.populate(ViewPager.java:1011)",
       "\tat android.support.v4.view.ViewPager.populate(ViewPager.java:880)",
       "\tat android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1374)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat org.holoeverywhere.widget.LinearLayout.measureChildWithMargins(LinearLayout.java:214)",
       "\tat android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)",
       "\tat android.widget.LinearLayout.measureHorizontal(LinearLayout.java:701)",
       "\tat android.widget.LinearLayout.onMeasure(LinearLayout.java:311)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat org.holoeverywhere.widget.LinearLayout.measureChildWithMargins(LinearLayout.java:214)",
       "\tat android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)",
       "\tat android.widget.LinearLayout.measureVertical(LinearLayout.java:386)",
       "\tat android.widget.LinearLayout.onMeasure(LinearLayout.java:309)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat org.holoeverywhere.internal.WindowDecorView.onMeasure(WindowDecorView.java:131)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.widget.LinearLayout.measureVertical(LinearLayout.java:531)",
       "\tat android.widget.LinearLayout.onMeasure(LinearLayout.java:309)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewRoot.performTraversals(ViewRoot.java:839)",
       "\tat android.view.ViewRoot.handleMessage(ViewRoot.java:1859)",
       "\tat android.os.Handler.dispatchMessage(Handler.java:99)",
       "\tat android.os.Looper.loop(Looper.java:123)",
       "\tat android.app.ActivityThread.main(ActivityThread.java:3687)",
       "\tat java.lang.reflect.Method.invokeNative(Native Method)",
       "\tat java.lang.reflect.Method.invoke(Method.java:507)",
       "\tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)",
       "\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)",
       "\tat dalvik.system.NativeStart.main(Native Method)",
       ""
   ],
   "PRODUCT": "BlackBerry Runtime for Android Apps",
   "DISPLAY": {
       "0": {
           "pixelFormat": 5,
           "orientation": 3,
           "height": 1024,
           "rotation": "ROTATION_270",
           "width": 600,
           "refreshRate": "60.0"
       }
   },
   "APP_VERSION_NAME": "3.0.4",
   "AVAILABLE_MEM_SIZE": 58696798208,
   "USER_APP_START_DATE": "2013-05-17T16:15:56.000+00:00",
   "CUSTOM_DATA": {
       "last_view": "Main screen - Search tab"
   },
   "BRAND": "BlackBerry",
   "INITIAL_CONFIGURATION": {
       "hardKeyboardHidden": "HARDKEYBOARDHIDDEN_YES",
       "orientation": "ORIENTATION_PORTRAIT",
       "screenLayout": [
           "SCREENLAYOUT_SIZE_XLARGE",
           "SCREENLAYOUT_LONG_YES"
       ],
       "keyboard": "KEYBOARD_QWERTY",
       "mcc": 0,
       "locale": "ca_ES",
       "fontScale": "1.0",
       "navigationHidden": "NAVIGATIONHIDDEN_NO",
       "uiMode": [
           "UI_MODE_TYPE_NORMAL",
           "UI_MODE_NIGHT_NO"
       ],
       "userSetLocale": false,
       "navigation": "NAVIGATION_DPAD",
       "seq": 15,
       "keyboardHidden": "KEYBOARDHIDDEN_NO",
       "mnc": 0,
       "touchscreen": "TOUCHSCREEN_FINGER"
   },
   "TOTAL_MEM_SIZE": 62562222080,
   "FILE_PATH": "/data/data/cat.ereza.properbusbcn/files",
   "ENVIRONMENT": {
       "getDownloadCacheDirectory": "/data/cache",
       "getSystemSecureDirectory": "/data/system",
       "getSecureDataDirectory": "/data",
       "getExternalStorageState": "mounted",
       "getExternalStorageDirectory": "/sdcard",
       "isExternalStorageRemovable": true,
       "isEncryptedFilesystemEnabled": false,
       "getRootDirectory": "/system",
       "getExternalStorageAndroidDataDir": "/sdcard/Android/data",
       "getDataDirectory": "/data"
   },
   "REPORT_ID": "956e9ca3-ba3f-4be0-9537-aa7c75a5b1b8",
   "timestamp": "2013-05-17T14:16:04.816Z",
   "user_ip": "92.56.168.203",
   "SIGNATURE": {
       "full": "java.lang.NullPointerException at cat.ereza.properbusbcn.fragments.SearchFragment.onCreateView(SearchFragment.java:192)",
       "digest": "java.lang.NullPointerException : SearchFragment.java:192"
   },
   "uptime": null,
   "requestHeaders": {
       "Accept": "text/html,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
       "Authorization": "Basic cmVwb3J0ZXI6YU5kcjBJZHJlUG9ydGVy",
       "Connection": "Keep-Alive",
       "Content-Length": "10387",
       "Content-Type": "application/json",
       "Host": "acra.eduardereza.com",
       "User-Agent": "Android",
       "X-Forwarded-For": "92.56.168.203",
       "X-Forwarded-Host": "acra.eduardereza.com",
       "X-Forwarded-Server": "acra.eduardereza.com"
   }
}

Missing ACRA details on the crash

Could not get how can I see crash details on the Acralyzer. What I do is click on the magnifier glass next to the bug.

screen shot 2013-07-01 at 7 55 13 am

Report is missing stacktrace and all the fields that should be there according to the user manual

My ACRA configuration

@ReportsCrashes(formKey = "",
formUri = "https:///acra-wtf/_design/acra-storage/_update/report", reportType = org.acra.sender.HttpSender.Type.JSON,
httpMethod = org.acra.sender.HttpSender.Method.PUT,
formUriBasicAuthLogin = "",
formUriBasicAuthPassword = "",
// Your usual ACRA configuration
mode = ReportingInteractionMode.SILENT)
public class WtfWeatherApp extends Application {

400 Error when sending report

I've set up an instance on CloudAnt (great step-by-step instructions!), but I'm getting an error when ACRA tries to PUT the report:

04-24 17:13:09.255: INFO/ACRA(22421): Sending file 1366816379000-approved.stacktrace
04-24 17:13:09.300: DEBUG/ACRA(22421): Connect to https://frogsparks.cloudant.com/acra-mytrails/_design/acra-storage/_update/report
04-24 17:13:09.395: DEBUG/ACRA(22421): Sending request to https://frogsparks.cloudant.com/acra-mytrails/_design/acra-storage/_update/report/null
04-24 17:13:10.520: ERROR/ACRA(22421): Failed to send crash report for 1366816379000-approved.stacktrace
        org.acra.sender.e: Error while sending JSON report via Http PUT
        at org.acra.sender.HttpSender.a(SourceFile:228)
        at org.acra.y.a(SourceFile:179)
        at org.acra.y.a(SourceFile:141)
        at org.acra.y.run(SourceFile:77)
        Caused by: java.io.IOException: Host returned error code 400
        at org.acra.e.c.a(SourceFile:164)
        at org.acra.sender.HttpSender.a(SourceFile:225)
        ... 3 more

Reading other issue descriptions here it looks like the problem is that ACRA is somehow losing the report ID when it tries to post it (the URL ends in /report/null when it should be /report/id).

I'm using ACRA 4.5.0RC2 on Android 4.2.2 (CM10.1), configured with the following annotations. I've tried setting the preference for silent reports and unsetting it.

    formUri = "https://frogsparks.cloudant.com/acra-mytrails/_design/acra-storage/_update/report",
    reportType = org.acra.sender.HttpSender.Type.JSON,
    httpMethod = org.acra.sender.HttpSender.Method.PUT,
    formUriBasicAuthLogin = "*login*",
    formUriBasicAuthPassword = "*password*",

    formKey = "",
    mode = ReportingInteractionMode.DIALOG,
    resToastText = R.string.crash_toast_text,
    resNotifTickerText = R.string.crash_notif_ticker_text,
    resNotifTitle = R.string.crash_notif_title,
    resNotifText = R.string.crash_notif_text,
    resDialogTitle = R.string.crash_dialog_title,
    resDialogText = R.string.crash_dialog_text,
    resDialogCommentPrompt = R.string.crash_dialog_comment_prompt,
    resDialogOkToast = R.string.crash_dialog_ok_toast,
    includeDropBoxSystemTags = false,
    sendReportsInDevMode = false,
    logcatArguments = {"-t", "500", "-v", "tag",
            "AndroidRuntime:I",
            "ActivityManager:I",
            "MyTrails:V",
            "libEGL:V",
            "skia:V",
            "*:S"},
    customReportContent = {APP_VERSION_NAME, ANDROID_VERSION, PHONE_MODEL, BRAND,
            TOTAL_MEM_SIZE, AVAILABLE_MEM_SIZE, CUSTOM_DATA, STACK_TRACE, LOGCAT, INITIAL_CONFIGURATION,
            CRASH_CONFIGURATION, DISPLAY, USER_COMMENT, USER_EMAIL, DEVICE_FEATURES, SHARED_PREFERENCES, // the rest are for BugSense
            /*REPORT_ID, INSTALLATION_ID, */APP_VERSION_CODE, PACKAGE_NAME, DEVICE_ID, SETTINGS_SECURE, SETTINGS_SYSTEM,
            USER_CRASH_DATE/*, PRODUCT*/}

The link to Cloudant under Optional: create a 'reader' user is dead

Optional: create a 'reader' user

If you want to give access to Acralyzer to people who you don't want to give admin access to your couchdb, use the same method to create a second user which will receive the "reader" role.

If your host is Cloudant, you can grant permissions to your users by following these instructions.

"these instructions" / https://cloudant.com/for-developers/faq/customer/portal/articles/359311-users-authorization-on-cloudant leads to a "Page not found".

Add bug statuses

Currently bugs can be "solved" or "unsolved". It could be useful to add some other statuses, like "won't solve"

Reporter error code 401 - wiki correction?

I noticed you added the instructions to the wiki to include the "reader" role as a member of the "acra-foo" database. However, when I do this, I can no longer submit reports (401 error). I added the "reporter" role as a second member of "acra-foo" and that allowed me to submit reports again. But is that the correct solution? Did I miss a step somewhere in the wiki?

XML tag in Signature digest

I have a crash report with this digest: java.lang.RuntimeException: Unable to start activity ComponentInfo{de.test.android.Mobile/de.test.android.Mobile.MainFrame}: android.view.InflateException: Binary XML file line #2: Error inflating class : MainFrame.java:182.
In acralyzer it works fine but the rss feed diden´t run any more.
So I check .../acra-mobile/_design/acra-storage/_list/rss/recent-items?descending=true and get this error "The endtag 'title' don´t match to the starttag 'unknown'".
So I delete the Crash Report and all works fine again.
Can you please fix it because I think there can be many exceptions with xml-tags and I think nobody would like to delete them eachtime.
thanks

Installation on new user

I know its a very basic question - but i hope i can have some quick help in here:

When running acralyser setup instrructions - i tried to create reporter user and got his error messge which i am unfamiliar with (Tried the resolved issues and non was relevant).

I:\Acra>curl -X PUT -u yairohayon:[ADMINPASSORD] http://yairohayon.cloudant.com/_users/org.couchdb.user:athimedicstromelyblediff -d '{"name":"athimedicstrome
lyblediff", "password":"[USERPASSWORD]", "roles":"reporter", "type":"user"}' -H "Content-Type: application/json"

{"error":"not_found","reason":"Database does not exist."}
curl: (6) Could not resolve host: password; Host not found
curl: (6) Could not resolve host: roles; Host not found
curl: (3) [globbing] unmatched close brace/bracket at pos 10

Any help will be greatly appreciated.

Docs - Setup - Acra

Not really a bug, but http://acra.ch just says to:

import org.acra.*;
import org.acra.annotation.*;

But acralyzer documentation says to use

reportType = Type.JSON,
httpMethod = Method.PUT,

But no indication which package to use. I eventually realized you need two more imports to get this working.

import org.acra.sender.HttpSender.Type;
import org.acra.sender.HttpSender.Method;

If I figured it out, others can, but documenting it on either site would be useful.

Move bootstrap-notify functionality to a service

Instead of littering the code with:

$('.top-right').notify({
    message: { text: '...' },
    type: 'info'
}).show();

I'm proposing moving the code to a service so we can just do:

bootstrapNotify.info("message");
bootStrapNotify.error("err msg");

Unable to purge older reports

I noticed the browser downloads a big amount of data while purging (I have around 6000 reports). The purging did not complete and it crashes the browser.

image

I am using the latest acra-storage and acralyzer (aggregates branch). I usually delete the storage database and reupload it again when it gets too slow.

BTW the ACRA combo helped a lot in fixing my app bugs! Thanks!

Display order setting in Bugs view does not stick

I'm not sure it's supposed to, but it would be nice if the sort order was saved (client-side even). As it is, the sort order on the Bugs page always resets to most instances first, even when I had it last set to most recent.

Can't delete crashes / or group them!

Yikes - this is almost a deal breaker for me. There should really be a way to delete crashes or group them somehow. How can I tell which are old and which are new?

Delete is preferred and would probably only take you a few minutes to implement!

Please 👍

404 Error when sending report

Hello, I have an error when sending the report, it returns me a 404 error.

Here is what I have done. After some analyse for the issue #28 I decide to restart from scratch with this configuration

Vm Azure : Ubuntu 12.04
Acra : 4.5.0RC
Couchdb 1.3.0 build from source

Here is the log I have on the server :

[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18350.0>] 'PUT' /acra-test1/design/acra-storage/update/report/0eca46ad-d4b6-4624-aa14-0006804630bf {1,
1} from "193.253.141.153"
Headers: [{'Accept',"text/html,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,
/
;q=0.5"},
{'Authorization',"Basic c3ZzaW5ub3Y6SW5ub3ZhdGkwbjQ0"},
{'Connection',"Keep-Alive"},
{'Content-Length',"19509"},
{'Content-Type',"application/json"},
{'Host',"acralyzer.cloudapp.net:5984"},
{'User-Agent',"Android"}]
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18350.0>] OAuth Params: []
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18350.0>] Minor error in HTTP request: {not_found,missing}
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18350.0>] Stacktrace: [{couch_httpd_db,couch_doc_open,4},
{couch_httpd_db,handle_design_req,2},
{couch_httpd_db,do_db_req,2},
{couch_httpd,handle_request_int,5},
{mochiweb_http,headers,5},
{proc_lib,init_p_do_apply,3}]
[Fri, 12 Apr 2013 14:52:25 GMT] [info] [<0.18350.0>] 193.253.141.153 - - PUT /acra-test1/_design/acra-storage/_update/report/0eca46ad-d4b6-4624-aa14-0006804630bf 404
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18350.0>] httpd 404 error response:
{"error":"not_found","reason":"missing"}

[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18355.0>] 'PUT' /acra-test1/design/acra-storage/update/report/0eca46ad-d4b6-4624-aa14-0006804630bf {1,
1} from "193.253.141.153"
Headers: [{'Accept',"text/html,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,
/
;q=0.5"},
{'Authorization',"Basic c3ZzaW5ub3Y6SW5ub3ZhdGkwbjQ0"},
{'Connection',"Keep-Alive"},
{'Content-Length',"19509"},
{'Content-Type',"application/json"},
{'Host',"acralyzer.cloudapp.net:5984"},
{'User-Agent',"Android"}]
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18355.0>] OAuth Params: []
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18355.0>] Minor error in HTTP request: {not_found,missing}
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18355.0>] Stacktrace: [{couch_httpd_db,couch_doc_open,4},
{couch_httpd_db,handle_design_req,2},
{couch_httpd_db,do_db_req,2},
{couch_httpd,handle_request_int,5},
{mochiweb_http,headers,5},
{proc_lib,init_p_do_apply,3}]
[Fri, 12 Apr 2013 14:52:25 GMT] [info] [<0.18355.0>] 193.253.141.153 - - PUT /acra-test1/_design/acra-storage/_update/report/0eca46ad-d4b6-4624-aa14-0006804630bf 404
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.18355.0>] httpd 404 error response:
{"error":"not_found","reason":"missing"}

[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.17154.0>] 'PUT' /acra-test1/design/acra-storage/update/report/2a16de74-489f-4207-9611-547415fb8a77 {1,
1} from "193.253.141.153"
Headers: [{'Accept',"text/html,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,
/
;q=0.5"},
{'Authorization',"Basic c3ZzaW5ub3Y6SW5ub3ZhdGkwbjQ0"},
{'Connection',"Keep-Alive"},
{'Content-Length',"19957"},
{'Content-Type',"application/json"},
{'Host',"acralyzer.cloudapp.net:5984"},
{'User-Agent',"Android"}]
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.17154.0>] OAuth Params: []
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.17154.0>] Minor error in HTTP request: {not_found,missing}
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.17154.0>] Stacktrace: [{couch_httpd_db,couch_doc_open,4},
{couch_httpd_db,handle_design_req,2},
{couch_httpd_db,do_db_req,2},
{couch_httpd,handle_request_int,5},
{mochiweb_http,headers,5},
{proc_lib,init_p_do_apply,3}]
[Fri, 12 Apr 2013 14:52:25 GMT] [info] [<0.17154.0>] 193.253.141.153 - - PUT /acra-test1/_design/acra-storage/_update/report/2a16de74-489f-4207-9611-547415fb8a77 404
[Fri, 12 Apr 2013 14:52:25 GMT] [debug] [<0.17154.0>] httpd 404 error response:
{"error":"not_found","reason":"missing"}

[Fri, 12 Apr 2013 14:52:33 GMT] [debug] [<0.17150.0>] 'GET' /log?bytes=50000 {1,1} from "171.16.210.1"
Headers: [{'Accept',"text/html,application/xhtml+xml,application/xml;q=0.9,
/_;q=0.8"},
{'Accept-Encoding',"gzip, deflate"},
{'Accept-Language',"fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3"},
{'Cache-Control',"no-cache, no-cache, no-cache"},
{'Connection',"keep-alive"},
{'Cookie',"AuthSession=c3ZzaW5ub3Y6NTE2ODFGNzA6Xh9uoTBhi-LGV2eTI0Tove-hHVk"},
{'Host',"acralyzer.cloudapp.net:5984"},
{'Pragma',"no-cache, no-cache, no-cache"},
{'User-Agent',"Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0"},
{'Via',"1.1 web-lille1.sncf.fr:8080 (IronPort-WSA/7.1.3-021)"},
{"X-Imforwards","20"}]

It seems to be linked to the version of couchDB because, I try to report the same bug on my old environment :
Acra 4.5.0-alpha2-SNAPSHOT
Couchdb 1.0.1
and it works

The problem is that the version of couchDB 1.2.x isn't anymore available for download (after a first search, i will continue to searhc this version ;) )

Can you please help me with this problem ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.