• This repository has been archived on 25/Jul/2024
  • Stars
    star
    407
  • Rank 106,183 (Top 3 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 9 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Legacy Zulip Android app

๏ปฟ

Zulip for Android (legacy)

Note: This project is deprecated in favor of our React Native app, which supports both iOS and Android.


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 gradlew or by using Android Studio.

Index

Getting Started

  • 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.

Getting Help

  • For real-time help, you can join the Zulip development community's Zulip server at https://zulip.tabbott.net and post on the android stream.
  • 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!

Build instructions (Android Studio)

  1. Fork the zulip-android repository from GitHub and clone your fork.

  2. Open the project in the IDE.
    1. From the "Welcome to Android Studio" menu, select "Open an existing Android Studio project" option, or
    2. If you already have an opened project, select "File > Open..."
  3. If you want to test Google sign in, add the required metadata:
    1. Go to https://developers.google.com/mobile/add?platform=android

    2. Type in "Zulip" as "App name" and "com.zulip.android" as "Android package name" and continue to Choose and configure services.

    3. Select the "Google Sign-In" service, you'll need to provide the SHA-1 of your signing certificate. For that, first follow the manual instructions to Sign Your Release Build and generate a new Key Store if you haven't already: https://developer.android.com/studio/publish/app-signing.html#release-mode

    4. Use keytool to get the SHA-1 fingerprint of the certificate: keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>

    5. Put the generated file in the "app/" directory of the project.

    6. Get your Google app id from the Google Developer console, and add it as the following string resource in app/src/main/res/values/strings.xml:

      <string name="google_app_id">GOOGLE_APP_ID</string>
      

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):

http://developer.android.com/tools/devices/managing-avds.html#createavd

Build instructions (without Android Studio)

  1. Install the Android SDK including at least the API 23 (Android 6.0), Build Tools, API Platform, Google APIs, Google Play Services, Android Support Library, the Local Maven Repository for Support and the Google Repository.

    All of these can be installed, together with their dependencies, using the Android SDK manager.

  2. Comment out or remove references to Crashlytics. The following are known references as at 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.

  • In app/src/main/java/com/zulip/android/ZLog.java:
    • Line 5: import com.crashlytics.android.Crashlytics;
    • Line 13: Crashlytics.logException(e);
  • In app/src/main/java/com/zulip/android/ZulipActivity.java:
    • Line 50: import com.crashlytics.android.Crashlytics;
    • Line 162: Crashlytics.start(this);
  1. Run ./gradlew (or gradlew.bat on 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_HOME is 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).

  2. To build the APK, run ./gradlew assemble. Your APKs will be placed in app/build/outputs/apk.

    The app-debug.apk can be installed directly on the device, or loaded over USB using ./gradlew installDebug or adb install /path/to/app/build/outputs/apk/app-debug.apk.

    Note that app-release-unsigned.apk will not install by default because it is unsigned. You will be told the APK cannot be parsed.

Connecting to a development server

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)

  • modify VagrantFile 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:

    192.168.0.1:9991

    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 VagrantFile to achieve this
  • Remap the hosts by fiddler by adding this line in TOOLS> HOSTS

    localhost:9991 www.local.test.com

If unclear you can follow tutorial here Host Remapping

  • Now configure your android device following 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
  • Run adb reverse tcp:9991 tcp:9991 in terminal
  • Connect to local server by entering url (http://127.0.0.1:9991) in app

Contributing

  • 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.

Mailing List

There's a mailing list for questions and development discussions related to the Zulip Android app: https://groups.google.com/forum/#!forum/zulip-android.

Export

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.

License

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

http://www.apache.org/licenses/LICENSE-2.0

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.

More Repositories

1

zulip

Zulip server and web application. Open-source team chat that helps teams stay productive and focused.
Python
21,511
star
2

zulip-mobile

Zulip mobile apps for Android and iOS.
JavaScript
1,285
star
3

zulip-desktop

Zulip Desktop client for Mac, Windows and Linux.
TypeScript
846
star
4

zulip-ios-legacy

Zulip legacy iOS app
Objective-C
682
star
5

zulip-terminal

Official Zulip terminal client.
Python
651
star
6

docker-zulip

Container configurations, images, and examples for Zulip.
Shell
574
star
7

python-zulip-api

Python library for the Zulip API.
Python
358
star
8

zulip-desktop-legacy

Zulip legacy desktop app
C++
249
star
9

zulip-flutter

Future Zulip client using Flutter
Dart
174
star
10

zulip-electron

Frozen/legacy project for Zulip desktop app; the current repository is zulip-desktop
JavaScript
104
star
11

zulipbot

GitHub workflow-optimizing bot by @zulip
JavaScript
84
star
12

zulip-js

Javascript library to access the Zulip API
JavaScript
76
star
13

zulip-archive

Generate a static HTML archive of messages in any combination of streams in a Zulip organization.
Python
73
star
14

zulip.github.io

Legacy zulip.org website. No longer used.
HTML
51
star
15

zulip-gci

GCI project category descriptions
Python
41
star
16

github-actions-zulip

A collection of GitHub Actions to interact with Zulip.
TypeScript
24
star
17

fakeldap

A fake ldap implementation to be used in unittests.
Python
21
star
18

zulint

A lightweight linting framework designed for complex applications using a mix of third-party linters and custom rules.
Python
20
star
19

hubot-zulip

CoffeeScript
20
star
20

swift-zulip-api

A Zulip library written in Swift.
Swift
16
star
21

zulip-csharp

A C# library for the Zulip API
C#
14
star
22

zulip-redmine-plugin

Redmine plugin for Zulip notifications on issue tracker changes
Ruby
12
star
23

TinglingGit

This is a tool which helps to avoid introducing merge conflicts for open PR's in a Github repo by creating new PR's which may get merged sooner
Python
10
star
24

zulip-node

CoffeeScript
9
star
25

finbot

Python script for doing financial projections
Python
8
star
26

django-openid-auth

Python
7
star
27

zulip-gci-submissions

Student submissions for Zulip's GCI 2017 program
Python
7
star
28

trello-to-zulip

Script for mirroring a Trello organization's activity to Zulip
Python
6
star
29

phabricator-to-zulip

Publish Phabricator story feed to Zulip chat system.
PHP
6
star
30

zulip-markdown-parser

JavaScript
6
star
31

tsearch_extras

C
6
star
32

errbot-backend-zulip

Zulip backend for err.
Python
5
star
33

zulip-zapier

Zulip's Zapier integration
JavaScript
4
star
34

django-guardian

Python
3
star
35

puppet-zulip

Puppet report handler for Zulip
Ruby
3
star
36

zrequests

Staging area for extracting Zulip's has_request_variables feature.
2
star
37

truncated-django

A fork of rwbarton/django/tabbott-1.8 with upstream history removed
Python
2
star
38

zulip-dist-phantomjs

PhantomJS binaries for use with Zulip
1
star
39

zulip-dist-tsearch-extras

Binaries for tsearch_extras built for Zulip.
1
star
40

zanitizer

Tool for rewriting Git repository history to remove secrets
1
star