Git Product home page Git Product logo

olvid-android's Introduction

Olvid

Olvid is a private and secure end-to-end encrypted messenger.

Contrary to most other messaging applications, Olvid does not rely on a central directory to connect users. As there is no user directory, Olvid does not require access to your contacts and can function without any personal information. The absence of directory also prevents unsolicited messages and spam.

Because of this, from a security standpoint, Olvid is not "yet another secure messenger". Olvid guarantees the total and definitive confidentiality of exchanges, relying solely on the mutual trust of interlocutors. This implies that your privacy does not depend on the integrity of some server. This makes Olvid very different from other messengers that typically rely on some "Trusted Third Party", like a centralized database of users or a public blockchain.

Note that this doesn't mean that Olvid uses no servers (it does). It means that you do not have to trust them: your privacy is ensured by cryptographic protocols running on the client-side (i.e., on your device), and these protocols assume that the servers were compromised from day one. Even then, your privacy is ensured 😊.

Help and documentation

If you need help using Olvid, first have a look at our FAQ at https://olvid.io/faq/. We also have a few short tutorial videos available in English and in French.

If you are looking for technical documentation, have a look at our technology page where you can find some technical specifications and the reports of the audits Olvid went through to get its CSPN certifications.

Send us feedback

If you find a bug, or have any feedback about Olvid, please contact the team at Olvid at [email protected]. They will be glad to hear your suggestions.

Structure of the project

Olvid is built of two main components:

  • a cryptographic engine, written in pure Java (no Android APIs) located in the obv_engine folder
  • an application layer, using the Android APIs for the graphical interface and OS integration , locate in the obv_messenger folder

The engine is in charge of all the encryption, contacts and groups management, and network communications, while the application layer implements the instant messaging functionalities on top of the engine.

As of now, the code is not fully documented and contains very few comments. Still, some aspects of it are very advanced and might be hard getting into. We encourage you to read the code, understand it and make your own modifications and additions. But keep in mind that some mechanisms are rather "fragile" and might break easily 🥚🥚🥚. The Olvid team is doing its best to improve your experience using this code and will try to improve these aspects in future releases.

Building Olvid from the sources

Olvid is available on Google Play or can be compiled from the source. You will get the same app, with the exact same features, but building it from the sources will require a little more work 😁 The Olvid team will do its best to publish the sources of any new version available on Google Play to this repository as soon as possible.

To build Olvid, you will need the latest version of Android Studio.

  • clone this repository
  • open the project located in obv_messenger in Android Studio (we know, this is weird, but for historic reasons the root project is not at the root of the repository!)
  • prepare an emulator or plug in your phone and press "Run app"

Compiling and running Olvid should work straight out of the box. If you run into issues, please contact us at [email protected].

⚠ WARNING ⚠: if you want to run Olvid on your device and already have Olvid installed from Google Play, make sure to change the applicationId or add an applicationIdSuffix in the productFlavors of the main build.gradle to avoid overwriting your app. Or at least, test your build on an emulator before overwriting your app 😂

Push notifications and nogoogle flavor

Olvid provides 2 different build flavors: a full version including some Google closed sources libraries (like Firebase, Billing, Google drive API) and a nogoogle version containing only FOSS dependencies.

The full version is the one distributed on Google Play. Unfortunately, even if you have Google Services installed on your device, you will not be able to get push notifications when compiling this version from the sources. The Olvid server uses specific credentials to send push notifications, and these credentials are tied to the signature of the "official" Google Play version of Olvid. You may activate the "Maintain a permanent WebSocket connection" option in the privacy settings of the app in order to be notified instantly of new messages.

The WebRTC library

The source code available here on GitHub includes a pre-compiled version of the WebRTC library that we update with (almost) every new stable release. Bundling pre-compiled open-source libraries in an open-source project is not usually considered good practice, but the effort required to compile WebRTC is such that we decided to make your life easier 😊

We apply some minor modifications to the WebRTC library to allow passing it an HTTP proxy and a user agent. This way, Olvid is able to issue phone calls using a TCP connexion through a proxy on networks where UDP is blocked and a proxy is mandatory (note that, in the browser, WebRTC is able to do this, the APIs are simply not exposed in the Android version of the library).

If you want to compile WebRTC yourself, you should follow the standard WebRTC build procedure, simply applying the provided patch:

  • clone the depot tools
  • fetch webrtc_android
  • sync with gclient
  • checkout the branch-heads/xxxx you want to compile
  • apply the Olvid patch available in the libwebrtc/ folder corresponding to the xxxx version you chose (you can use the git apply olvid_xxxx.patch command)
  • compile with build_aar.py
  • replace the provided libwebrtc.aar with your version

The SQLite-JDBC library

Olvid also comes with a slightly modified version of the SQLite-JDBC library. Compared to the original we simply:

  • make changes to the build script to also build an amr64-v8a version of the library
  • enable the legacy_alter_table pragma that is used in some migration operation of the engine
  • remove most of the OS/arch discovery mechanisms found in OSInfo.java that can be seen as "intrusive"
  • simplify the native library loading mechanism as the libsqlitejdbc.so is no longer bundled in the jar, but directly provided in the standard Android folder (this decreases the size of the APK as only the required lib is included)

Contributing to Olvid

Olvid, as a company, has not yet put in place all the necessary processes to easily accept external contributions. In particular, a Contributor License Agreement should be made available at some point in time. Until then, please contact us at [email protected] if you would like to contribute.

License

Olvid for Android is licensed under the GNU Affero General Public License v3. The full license is available in LICENSE.

Olvid for Android
Copyright © 2019-2024 Olvid SAS

Olvid is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License, version 3,
as published by the Free Software Foundation.

Olvid is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with Olvid.  If not, see <https://www.gnu.org/licenses/>.

olvid-android's People

Contributors

finiasz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

olvid-android's Issues

Fonction "Prendre une photo" échoue

Quand je tente de prendre une photo depuis l'application, j'obtiens une erreur: "Erreur au niveau de la caméra - L'application ne dispose pas des autorisations critiques nécessaires à l'exécution. Veuillez vérifier vos paramètres d'autorisation"

J'ai pourtant bien autorisé l'application à accéder à la caméra.

Mobile: Sony Xperia XA2+ (Modèle H4413)
Version Android: 11
ROM: LineageOS 18.1
Pas de Google Apps

Je ne sais pas si cela a une importance mais j'ai désactivé l'application Caméra fournie de base pour utiliser une autre application, mais cela ne pose pas de soucis à d'autres applications.

Si vous avez besoin de logs spécifiques, donnez-moi le filtre logcat à utiliser et je les ajoute.

android to ios: Restore of manual backup failed

I am using the manual backup option and trying to transfer my account to a different device.
I manually exported on Android and transferred the file to my ios device. When restoring the key is accepted but a message appears: restore failed.....
I have tried several different backup files with no success.
Is this a known limitation?
Is there another setting I need to be using here?

latest version also on GitHub

Hi,
I got a notification yesterday about a new version available. Apparently there was an update on Oct 9, 2023 on Google Play. May you please publish the code here also 🙏. Current published release is v0.15.0 from Jul 31.
image

Read receipts stopped working

After the latest update to 0.14.1 my receive receipts and read receipts all stopped working.
I get the single tick to show a message was sent. But no second tick, and no turning blue.

[Feature Request] Payment gateway outside of the app store

Create a payment gateway outside of the app store on your website for example like Zoom or Threema as some of us use ROMs and can't access the store or would like to have a desktop only experience.

Perhaps a credit like system used in MullvadVPN where we can top-up our account for a month or more is also a good idea.

Add button for sending videos.

I suggest adding button for sending videos, as the only way to send videos right now is to select from attach files from the file manager.

[Feature Request] accelérer les vocaux

Comme sur Whatsapp, ajouter une fonctionnalité pour accélérer l'écoute des messages vocaux reçus et envoyés en: x1.25, x1.5, x2.

S'il vous plaît les vocaux de 7 minutes j'en peux plus x)

builds dans la page release

Je comprend qu'il n'y ait pas d'app F-Droid par manque de temps pour le moment, mais ça serait pas mal qu'il y'ait des apk prébuild dans la section "release" de votre github, avec les deux versions (full et nogoogle)

J'utilise l'application Obtainium pour télécharger plusieurs applications, et avoir les mise à jours, sans devoir dépendre du Google Play Store
Pour avoir votre application sans passer par le Play Store, je me retrouve obligé à la build par moi même, ça serait plus simple de juste télécharger et installer l'apk

New releases should always be shared on GitHub before the stores update

Just saw there's an update for Olvid on the play store (0.11.1 , from the 27/01 !?), I was pretty surprised seeing it as I didn't get any email from GitHub about new release on the code, and well yeah after checking here, you didn't shared the code of that new release here (yet?)??
I really think it should be before the update get on the stores

Fail to run unit tests with "./gradlew test" on v0.13.0

Is it just me? I'm unable to pass the tests

The tests are failing with some java.io.FileNotFoundException

https://github.com/kumy/olvid-android/actions/runs/3348245044/jobs/5547103193#step:4:241

> Task :java-websocket:test

org.java_websocket_olvid.AllTests > org.java_websocket_olvid.issues.Issue764Test.testIssue FAILED
    java.io.FileNotFoundException at Issue764Test.java:73

org.java_websocket_olvid.AllTests > org.java_websocket_olvid.issues.Issue825Test.testIssue FAILED
    java.io.FileNotFoundException at Issue825Test.java:75

org.java_websocket_olvid.issues.AllIssueTests > org.java_websocket_olvid.issues.Issue256Test.runReconnectSocketClose[0] FAILED
    java.lang.AssertionError at Assert.java:88

org.java_websocket_olvid.issues.AllIssueTests > org.java_websocket_olvid.issues.Issue764Test.testIssue FAILED
    java.io.FileNotFoundException at Issue764Test.java:73

org.java_websocket_olvid.issues.AllIssueTests > org.java_websocket_olvid.issues.Issue825Test.testIssue FAILED
    java.io.FileNotFoundException at Issue825Test.java:75

org.java_websocket_olvid.issues.Issue1142Test > testWithSSLSession FAILED
    java.io.FileNotFoundException at Issue1142Test.java:112
[...]

Translation / localization

Such a nice looking app! Great job!

Are there any plans for translation into other languages? Or is there any way users could contribute to the translation somehow?

Attach build to GitHub releases

As said in #2 (comment), it would be awesome to have already built packages signed by your own key attached to the GitHub releases. (it would also be nice to have the download apk link on your website)

This would help:

Thanks a lot!

Edit: you can find my own automated builds at https://github.com/kumy/olvid-android/releases

install options - not google play store

Still loving Olvid. You all do great work.

Especially for degoogled devices it would be awesome to have the ability to make Olvid available to install via alternative app stores. For example Accrescent or f-droid. (https://github.com/accrescent/Accrescent)
Users of these devices often have difficulty connecting to the Google play store.

Of course there is a need to still be able to pay for add ons to make the app profitable.
Would it be possible to do something like the Threema model.
Firstly allow users to purchase licenses via your own website. These licenses could be used to access the paid calling feature etc.
Secondly make the app available on these alternative app stores, having the option to insert the license code to access extra features.
This way free users can still access the app on all devices, with or without the play store, and they have the ability to support olvid financially.

Delete attachment for all users

On ios when a photo or file is deleted, the option to "delete for all users" appears. And the file is deleted from all devices. This happens whether the other device is ios or android.

Android does not seem to have this option.
The attachment can only be deleted from my device only.

Is it possible to please add this feature?

Ephemeral messages - additional standard times

Really appreciate your work on this amazing tool.

The ephemeral message settings have options to delete after 1 day or 1 week, but nothing in between.

  1. Would it be possible to add default times to include each day in between, ie 2,3,4,5,6 days?

  2. If that is not possible or too cluttered then at least something in between like 3 days would be very useful.

Thanks again.

Push notifications on nogoogle flavor

I was wondering when I saw that in readme.md but, isn't it possible, at least on the nogoogle flavor, to check presence of other UnifiedPush apps, like ntfy or NextPush, then use them to create and listen in a notification channel the same way as with firebase?

Sauvegared sur Nextcloud ?

Bonjour,

Dans la faq j'ai vu que la sauvegarde pouvait se faire sur icloud ou google drive.
Est-ce qu'elle est aussi possible sur un compte Nextcloud ?

Ajout d'Olvid sur F-Droid

Bonjour,

Je suis très content de voir qu'Olvid est enfin devenu open-source :)

Pourriez-vous svp l'ajouter sur F-Droid ?

C'est un magasin d'applications alternatif qui regroupe des applications open-source.

Voici un lien pour le faire : https://f-droid.org/en/contribute/

Cela permettrait notamment de pouvoir obtenir Olvid sans passer par le Google Play Store.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.