Skip to content
Java Other
Latest commit 30f54a4 @n8fr8 n8fr8 update changelog
Failed to load latest commit information.
.settings The big reformat!
.tx don't pull arrays from tx anymore, as we don't need it
META-INF full update
assets remove default emoji (will offer as plugin)
doc Reorg data request/response, keep track of requests
external fixes #677 on github: update asmack to address "sessionSupported" bug
gitian Update
libs fixes #677 on github: update asmack to address "sessionSupported" bug
otr-sample Update .classpath
res Added missing translation strings
robo-tests Update
src fixes #728 and #718 by disabling unsupport cipher suites
tests test whether pinned domains are working properly with the pins
.classpath Eclipse ADT insists on reordering elements in these .classpath files
.gitignore port basic tests from robo-tests/ to an Android Test Project
.gitmodules purge IOCipher submodule, the v0.2 release jar is used
.project the project has been renamed
AndroidManifest.xml 14.2.3
CHANGELOG update changelog
LICENSE Edited LICENSE via GitHub update README
XMPPClient.iml full update
XMPPClient.ipr full update
XMPPClient.iws full update
add-proguard-release.xml updates to project files
build.xml change build name to ChatSecure
custom_rules.xml make-release-build: use version from `git describe` in original name …
fix-translations OtrFileConverter is called KeySync!
logo512.png add new base art images
make-release-build make-release-build: disable faketime since it is problematic
offline.png add new base art images
pom.xml Adjust pom.xml version of asmack to the one actually included in the update to target android-21 to support Material
update-ant-build.bat updating windows bat add target

ChatSecure for Android (previously known as Gibberbot) is a secure messaging app built on open standards like XMPP/Jabber and OTR encryption:

It includes OTR4J:

and BouncyCastle for Java:

and SQLCipher for Android:

Original wallpaper generated using Tapet app and Gimp:

and previously included some CC0 public domain beautiful images: Ry Van

Bug reports

Please report any and all bugs or problems that you find. This is essential for us to be able to improve this software!

Build Instructions

First make sure you have the Android SDK and Eclipse installed. Follow instructions here:

Please help us keep this process easy by letting us know if you have problems. If you have any questions, don't be afraid to email us at or jump into our IRC chatrooms for real-time help at #guardianproject on freenode or OFTC (

Get the source

The source code is all in the main git repos, with sub-projects setup as git submodules:

git clone
cd ChatSecureAndroid
git submodule update --init

ant setup

We use ant to make our official releases and automated test builds. If you are not familiar with Eclipse, then it is easier to start with the ant build:

export ANDROID_HOME=/path/to/android-sdk
ant clean debug

Then the installable APK will be in bin/ChatSecure-debug.apk.

Eclipse setup

  1. Start by adding ChatSecureAndroid to Eclipse by going to File -> New -> Project... -> Android project from existing code.

  2. Open the ChatSecureAndroid folder that was just cloned from git.

  3. Eclipse will next show a list of subprojects to import, all of the libraries with New Project Name of library must be renamed after the project name, i.e. SlidingMenu, AndroidEmojiInput, ViewPagerIndicator.

  4. Click Deselect All. The sample and example projects are not needed, and can cause conflicts.

  5. Select ChatSecure again by clicking the top item in the list.

  6. Outside of Eclipse, open up the text file Then back in Eclipse, for each line that starts with android.library.reference, select that path from the list of included sub-projects in Eclipse.

Now you should be ready to build ChatSecure!

Test Instructions

mvn test

See robo-tests/ for eclipse instructions.

Currently the instrumented target tests (to be run on a device) in the directory tests are empty.


adb shell setprop log.tag.GB.XmppConnection DEBUG

Building for a Locale

ant -Dgibberbot.locale=fa release

Something went wrong with that request. Please try again.