Legacy Zulip Android app
Note: This project is deprecated in favor of our
React Native app_, which supports both iOS and Android.
.. _React Native app: https://github.com/zulip/zulip-mobile
This is the legacy native Android client for
Zulip. It is available
in the Google Play store. If you have a taste for adventure, you can also
join our beta channel_ after which the Play store should auto-update you. (Caution: beta releases will have more bugs than final releases, including (potentially) security or data loss bugs.)
This is a Gradle project, and can be built via the provided
gradlewor by using Android Studio.
Build instructions (Android Studio)_
Build instructions (without Android Studio)_
Running server on device_
.. _Getting Started: #getting-started .. _Getting Help: #getting-help .. _Build instructions (Android Studio): #build-instructions-android-studio .. _Build instructions (without Android Studio): #build-instructions-without-android-studio .. _Running server on device: #browsing-server-on-device .. _Contributing: #contributing .. _Mailing List: #mailing-list .. _Export: #export .. _License: #license
First, clone this repository and follow the Android Studio build instructions (below) to compile the project. If you don't have an existing Zulip account to login with, you can create one on the Zulip development community server at https://zulip.tabbott.net/. Note that this server is used for development discussions, so don't use it for sending lots of test messages!
For testing, it can be helpful to have your own Zulip development server that the app can connect to. Instructions for setting up a Zulip development server are here: http://zulip.readthedocs.io/en/latest/dev-overview.html
And then follow the
Connecting to a development server_ guide to get the Android app to connect to the Zulip development server.
.. _Connecting to a development server: #connecting-to-a-development-server
For real-time help, you can join the Zulip development community's Zulip server at https://zulip.tabbott.net and post on the
For questions on development for the Zulip Android App you can post here: https://groups.google.com/forum/#!forum/zulip-android
For questions on development for the Zulip Server you can post here: https://groups.google.com/forum/#!forum/zulip-devel
Any issues or bugs should be posted in the Github Issue Tracker!
Fork the zulip-android repository from GitHub and clone your fork.
Open the project in the IDE. a) From the "Welcome to Android Studio" menu, select "Open an existing Android Studio project" option, or b) If you already have an opened project, select "File > Open..."
If you want to test Google sign in, add the required metadata:
keytool -exportcert -list -v \ -alias -keystore
If you have a device running Android go to the settings and enable USB debugging in developer options. Then plug your device in the computer and select "Run > Run...". You will be shown "Device chooser" window. Select your device in the given list and press "OK".
If you do not have an Android device you will have to run it on an emulator. Here are instructions for creating an Android virtual device (AVD):
All of these can be installed, together with their dependencies, using the Android SDK manager.
5de0b0e. For future versions,
grep -ir crashlytics .is your friend.
If you do not remove Crashlytics then the app will crash on startup unless Crashlytics has been set up correctly as a member of the zulip team.
gradlew.baton Windows). This should automatically build the application, downloading anything it needs to do so.
If you get a failed build with
A problem occurred configuring project ':app'.then you might not have all the required SDK libraries. Make sure that you have all the dependencies of the libraries listed above, and that all versions match precisely.
If the appropriate tools cannot be found by gradle, make sure that
ANDROID_HOMEis properly set (this should point to the root directory for the Android SDK i.e. the one which contains the add-ons, build-tools, docs and other directories).
./gradlew assemble. Your APKs will be placed in
app-debug.apkcan be installed directly on the device, or loaded over USB using
adb install /path/to/app/build/outputs/apk/app-debug.apk.
app-release-unsigned.apkwill not install by default because it is unsigned. You will be told the APK cannot be parsed.
Once you are running a Zulip development server on your laptop, you will need to do some additional configuration of the Android development environment to connect to your development server.
| If you are using a Genymotion Emulator you can access the server by browsing to http://10.0.3.2:9991 or http://10.0.3.1:9991 (one of these two URL’s)
To access the vagrant server on a physical device:
connect the computer and Android device to the same network (router)
here_ in the server change the host_ip ‘127.0.0.1’ to ‘0.0.0.0’ Like this-
config.vm.network “forwarded_port”, guest: 9991, host: host_port, host_ip: “0.0.0.0”
Now find the IP address of the computer, and start the Android app. For the server, specify the computer's IP address and port number as the Zulip Server. For example:
Note that if you have internet access on your android device through a proxy server, you might have to use a VPN application like
this one_ to connect to the server.
| You can also route the IP address to a domain name like www.local.test.com (this routing is useful when testing the Google OAuth Backend) | No need to modify the
VagrantFileto achieve this
Remap the hosts by fiddler by adding this line in TOOLS> HOSTS
If unclear you can follow tutorial here
this_ detailed tutorial
Another way to connect android device to local server is via adb
Run server on laptop(or Desktop)
By default, it run's on port 9991
Connect your Android device with laptop and enable usb debugging
adb reverse tcp:9991 tcp:9991in terminal
Connect to local server by entering url (http://127.0.0.1:9991) in app
.. _here: https://github.com/zulip/zulip/blob/1c40df9363b70af0e275c44a03f9627808852616/Vagrantfile#L37 .. _Host Remapping: http://docs.telerik.com/fiddler/KnowledgeBase/HOSTS .. _this one: https://play.google.com/store/apps/details?id=com.psiphon3&hl=en .. _this: http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureForAndroid
If you're excited about helping with an open issue, make sure to claim the issue by commenting the following in the comment section: "@zulipbot claim". @zulipbot will assign you to the issue and label the issue as in progress. For more details, check out |@zulipbot|_.
For commit messages, be sure to checkout our
commit message style guidelines_.
For code style, please read the
Zulip coding style_ conventions carefully.
.. |@zulipbot| replace:: @zulipbot .. [email protected]: https://github.com/zulip/zulipbot .. _commit message style guidelines: https://zulip.readthedocs.io/en/latest/version-control.html#commit-messages .. _Zulip coding style: https://zulip.readthedocs.org/en/latest/code-style.html#version-control
There's a mailing list for questions and development discussions related to the Zulip Android app: https://groups.google.com/forum/#!forum/zulip-android.
This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.
Copyright 2012-2016 Dropbox, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.