Everyone wants to build their Android Conversations app and want to add every functionality which contains in current application like WhatsApp, Hike, Viber etc. But no idea how to start and if you’re in same scenario then this article for you.
Design principles
- Be as beautiful and easy to use as possible without sacrificing security or privacy
- Rely on existing, well established protocols (XMPP)
- Do not require a Google Account or specifically Google Cloud Messaging (GCM)
- Require as few permissions as possible
Features
- End-to-end encryption with OMEMO, OTR, or OpenPGP
- Send and receive images as well as other kind of files
- Share your location via an external plug-in
- Indication when your contact has read your message
- Intuitive UI that follows Android Design guidelines
- Pictures / Avatars for your Contacts
- Syncs with desktop client
- Conferences (with support for bookmarks)
- Address book integration
- Multiple accounts / unified inbox
- Very low impact on battery life
XMPP Features
Conversations works with every XMPP server out there. However XMPP is an extensible protocol. These extensions are standardized as well in so called XEP’s. Conversations supports a couple of these to make the overall user experience better. There is a chance that your current XMPP server does not support these extensions; therefore to get the most out of Conversations you should consider either switching to an XMPP server that does or — even better — run your own XMPP server for you and your friends.
These XEP’s are:
- XEP-0065: SOCKS5 Bytestreams (or mod_proxy65). Will be used to transfer files if both parties are behind a firewall (NAT).
- XEP-0163: Personal Eventing Protocol for avatars and OMEMO.
- XEP-0191: Blocking command lets you blacklist spammers or block contacts without removing them from your roster.
- XEP-0198: Stream Management allows XMPP to survive small network outages and changes of the underlying TCP connection.
- XEP-0280: Message Carbons which automatically syncs the messages you send to your desktop client and thus allows you to switch seamlessly from your mobile client to your desktop client and back within one conversation.
- XEP-0237: Roster Versioning mainly to save bandwidth on poor mobile connections
- XEP-0313: Message Archive Management synchronize message history with the server. Catch up with messages that were sent while Conversations was offline.
- XEP-0352: Client State Indication lets the server know whether or not Conversations is in the background. Allows the server to save bandwidth by withholding unimportant packages.
- XEP-0363: HTTP File Upload allows you to share files in conferences and with offline contacts.
Development
Beta testing
If you bought the App on Google Play you can get access to the latest beta version by joining the Conversations Beta Testers community on Google+ and then using this link to sign up for the beta test.
How do I build Android Conversations
Make sure to have ANDROID_HOME point to your Android SDK. Use the Android SDK Manager to install missing dependencies.
git clone https://github.com/siacs/Conversations.git cd Conversations ./gradlew assembleFreeDebug
There are two build flavors available. free and playstore. Unless you know what you are doing you only need free.
Build Status
How do I update/add external libraries?
If the library you want to update is in Maven Central or JCenter (or has its own Maven repo), add it or update its version in build.gradle. If the library is in the libs/ directory, you can update it using a subtree merge by doing the following (using minidns as an example):
git remote add minidns https://github.com/rtreffer/minidns.git git fetch minidns git merge -s subtree minidns master To add a new dependency to the libs/ directory (replacing "name", "branch" and "url" as necessary):
git remote add name url git merge -s ours --no-commit name/branch git read-tree --prefix=libs/name -u name/branch git commit -m "Subtree merged in name"
If something goes wrong Android Conversations usually exposes very little information in the UI (other than the fact that something didn’t work). However with adb (android debug bridge) you can squeeze some more information out of Conversations. These information are especially useful if you are experiencing trouble with your connection or with file transfer.
To use adb you have to connect your mobile phone to your computer with an USB cable and install adb. Most Linux systems have prebuilt packages for that tool. On Debian/Ubuntu for example it is called android-tools-adb.
Furthermore you might have to enable ‘USB debugging’ in the Developer options of your phone. After that you can just execute the following on your computer:
adb -d logcat -v time -s conversations
If need be there are also some Apps on the PlayStore that can be used to show the logcat directly on your rooted phone. (Search for logcat). However in regards to further processing (for example to create an issue here on Github) it is more convenient to just use your PC.
If you found a bug in Android Conversations app
Please report it to our issue tracker. If your app crashes please provide a stack trace. If you are experiencing misbehavior please provide detailed steps to reproduce. Always mention whether you are running the latest Play Store version or the current HEAD. If you are having problems connecting to your XMPP server your file transfer doesn’t work as expected please always include a logcat debug output with your issue (see above).
Download
Hope you like this article please comment us.
Share your thoughts