Android: store crash data when offline - android

I'm looking for something like ACRA (Automated Crash Reporting for Android) https://github.com/ACRA/acra but it has to be able to store data, and send it once the user goes online.
Already read through suggestions on
How do I obtain crash-data from my Android application?
but none of these says something about offline solutions. Anybody knows a solution that works offline and that I could use with my AWS account or a linux domestic server (raspberry pi)?

You should use Crashlytics
Marc from Crashlytics here. If the app crashes without an active network connection, the report will still be caught! We always send crash reports on launch when there's an active connection. If that fails, we'll queue it to send later. :)
https://stackoverflow.com/a/18618098/1048340

Related

How to debug Firebase issues by Wireshark?

I am trying to debug a Firebase issue where for the same query I am receiving different responses.
The issue has been posted here
As I couldn't reproduce the issue in a separate example application.
I was was wondering if it would be possible to disable HTTPS encryption and access Firebase temporally on debug apps, using HTTP without transit encryption.
This would allow to compare the exact data sent and received by the different apps so that the issue could be addressed. Without encryption, Wireshark or similar tools could be used to compare traffic sent and received by different apps which always proves to be very useful in these kind of issues.
Thanks in advance.
There is no way to get content from/to your Firebase Database over an unencrypted connection.
To see the traffic between a client and the Firebase Database you can simply enable debug logging in your Android code:
FirebaseDatabase.getInstance().setLogLevel(Logger.Level.INFO)
See the Firebase reference documentation and this question: Debugging Firebase Database.

Device to device messaging using GCM without registering an app server

Is it possible for a device to send message to other devices using Google cloud messaging without an app server at all?
I have a centralized database using Google Cloud Datastore. The app will get required registration ids from the centralized database and the database is updated by all the devices. So, getting registration ids is not a problem.
Can this be done using upstream messaging? I am not sure because i have searched a lot but never saw an example where app server is not used for this purpose.
This question is not duplicate of another question, because here i have central database to store registration ids which is mentioned as a problem in another question.
In the most basic sense no, not at this time. You cannot send an upstream message from one device to another without an app server. You can create an app server on your device application but that is not recommended. The current recommendation would be to use an app server to facilitate your device to device messages.
To answer is it possible? Yes it is.
Sometime back I have created a POC to send GCM message to self, so I know its very much possible. I configured my GCM to work with any ip in developer console i.e. 0.0.0.0.
just use HTTP post to send your message from android as you would have done from Server.
Like (most) everything else, there is an API for that.
Google hosts its GCM service on GCM Connection Servers. The official document requires you to create an App Server to issue the API requests to the Connection Servers.
Alternatively you could setup the Connection Server to accept requests from any IP around the world, and then issue the requests via your client app. The API is here and it's quite simple.
Seurity issues
Bundling your API key with your app, and setting the Connection Server to unrestricted connections is an obvious major security issue.
Why bother?
Why bother doing all of this? Instead I would use a free service like Parse.com, which takes care of the users database and offers up to 1000000 messages a month free.
Has anyone actually done this. I would like to see example android project.

Android app: logging on the device

I'm still fairly new to Android coding. I've made lots of use of the Log.d() function in my code to display lots of handy logging messages to the logcat console within the Android Studio environment, when I run the app with the device connected to the computer (or on an emulator).
Now I'd like to be able to get debug information from a user when the app is running on their device, hopefully showing the same Log.d() messages that I see in the logcat console within Android Studio.
I've done some searching but can't seem to find a straightforward guide as to how this is achieved.
Thanks.
You have to use a web server. First send the content of logd() to your server and then check them on your server. However, you may want to test your own apps instead of asking users to test. Google developer console has a place to show some debug information if your app crashed when users are using them.
You can use a webserver, file-backed logger, or any other way of saving/submitting data on the fly.
Most people will recommend either some form of integrated web service like HockeyApp, etc., but you can get it done just by sending a plain old text file if needed. FYI, not best practice, but it gets the job done.

capturing and sending logcat output by email or to server

I'm developing an Android app which has some complex logic and I am having issues troubleshooting the app that has been installed by beta-testers.
Does anyone know if there's an easy way to capture logcat output and either manually or automatically email it back, or send it to a server? I have asked the person testing the app to install aLogcat app and send me the log, but there are 2 issues with this:
it sends all kinds of logging from other apps that I'm not intested
in
it captures a limited amount of log entries, and did not give the
log entries I needed.
If anyone has any experience with a similar problem and how to solve this, it would be much appreciated.
You could use Acra. I have used and it is great. It can send the crashreport to a GDoc.
I'm pretty sure there are other tools too, and I think since Android 2.2 google has something built-in but I haven't found any docs about it. (Android Error reports).
I would recommend Bugfender. It lets you send all logs to a centralized cloud server, completely managed by you, no need for the user to intervene.
Note: I am one of the creators of Bugfender, still I think this could help solve question.

What API is used by Google+ Android app?

There is a Google+ mobile application for Android. To receive all the information it must be using some API.
How I can retrieve this information from my phone and see from where this app is getting data? I'd love to access it myself and see how it works.
You are talking about "reverse engineering" a network protocol.
Full sniffing
Get a market enabled emulator: How to install Android Market App on the emulator?
Get a network sniffer: tcpdump, wireshark, ...
Start to sniff what's going over the wire
http://www.thoughtcrime.org/software/sslstrip/ - an ssl stripping proxy
Inject your ca: http://www.mcbsys.com/techblog/2010/12/android-certificates/
This should, in theory, enable you to sniff any https or plain text connection.
Already available APIs
I would not try to hijack the connection. There is already a contacts API, it's called xmpp. You should be able to use the talk integration to pull your friend list.
Future APIs
You may also want to sign up for the upcoming API.
UPDATE
It appears that the Android client uses (at least partially) XMPP. The regular client requires an open XMPP connection and you can see a "RealTimeChat" in your logcat. It looks like the connection is encrypted because you get a "TLS required" message (the client seems to go through the XMPP connection states). I'm not sure if that's used for client based posts or just for server push. You can see the open connections with the help of "netstat". The connection goes away when google plus terminates.
I'd thus expect the API to be really open once released (or rev.eng).
UPDATE 2 (06. Jul. 2011)
Hangout is build on XMPP/MUC+JINGLE (muc == multiuser chat, jingle is roughly a SIP alternative on top of XMPP). And yes, they'll release the the details of it :-)
UPDATE 3 (06. Jul. 2011)
Multiple XMPP components for gtalk/gplus have been revealed by reading the JS code. It also emphasizes that they have build a great deal of features on XMPP.
They haven't launched the API yet. If there is something you want to build on Google+, they encourage you to signup here: https://services.google.com/fb/forms/plusdevelopers/
The API hasn't been released yet. Heck, the product hasn't even been released yet. Thats like developing a video game for playstation 5.
Yes it is. Its coming "soon" read :: http://www.webpronews.com/api-coming-soon-for-google-plus-2011-07

Categories

Resources