OpenKeychain is an OpenPGP implementation for Android.

Overview

OpenKeychain (for Android)

OpenKeychain is an OpenPGP implementation for Android.
For a more detailed description and installation instructions go to https://www.openkeychain.org .

Get it on F-Droid Get it on Google Play

Branches

  • The development of OpenKeychain happens in the "master" branch.
  • For every release a new branch, e.g., "3.2-fixes" is created to backport fixes from "master"

How to help the project?

Translate the application

Translations are managed at Transifex, please contribute there at https://www.transifex.com/projects/p/open-keychain/

Contribute Code

  1. Lookout for interesting issues on Github. We have tagged issues were we explicitly like to see contributions: https://github.com/open-keychain/open-keychain/labels/help%20wanted
  2. Read this README, especially the notes about coding style
  3. Fork OpenKeychain and contribute code (the best part 😎 )
  4. Open a pull request on Github. We will help with occurring problems and merge your changes back into the main project.
  5. PROFIT

For bigger changes

  1. Join the development mailinglist at https://lists.riseup.net/www/subscribe/openkeychain
  2. Propose bigger changes and discuss the consequences

I am happy about every code contribution and appreciate your effort to help us developing OpenKeychain!

Development

Development mailinglist at https://lists.riseup.net/www/subscribe/openkeychain

Build with Gradle

  1. Clone the project from GitHub
  2. Get all external submodules with git submodule update --init --recursive
  3. Have Android SDK "tools", "platform-tools", and "build-tools" directories in your PATH (http://developer.android.com/sdk/index.html)
  4. Open the Android SDK Manager (shell command: android). Expand the Tools directory and select "Android SDK Build-tools (Version 27.0.3)". Expand the Extras directory and install "Android Support Library", as well as "Local Maven repository for Support Libraries" Select SDK Platform for API levels 27.
  5. Export ANDROID_HOME pointing to your Android SDK
  6. Execute ./gradlew assembleFdroidDebug
  7. You can install the app with adb install -r OpenKeychain/build/outputs/apk/OpenKeychain-fdroid-debug.apk

The "google" flavor is only used to include donations via Play Store, for development the "fdroid" flavor should be used.

Run Tests

  1. Use OpenJDK instead of Oracle JDK
  2. Execute ./gradlew clean testFdroidDebugUnitTest --continue

Run Jacoco Test Coverage

  1. Use OpenJDK instead of Oracle JDK
  2. Execute ./gradlew clean testFdroidDebugUnitTest jacocoTestReport
  3. Report is here: OpenKeychain/build/reports/jacoco/jacocoTestReport/html/index.html

Development with Android Studio

We are using the newest Android Studio for development. Development with Eclipse is currently not possible because we are using the new project structure.

  1. Clone the project from Github
  2. Get all external submodules with git submodule update --init --recursive
  3. From Android Studio: File -> Import Project -> Select the cloned top folder

Libraries

Bouncy Castle

OpenKeychain uses a forked version with some small changes. These changes will been sent to Bouncy Castle.

see

Bouncy Castle resources

Documentation

Build System

We try to make our builds as reproducible/deterministic as possible.

Update Gradle version

  • Always use a fixed Android Gradle plugin version not a dynamic one, e.g. 0.7.3 instead of 0.7.+ (allows offline builds without lookups for new versions, also some minor Android plugin versions had serious issues, i.e. 0.7.2 and 0.8.1)
  • Update every build.gradle file with the new gradle version and/or gradle plugin version
    • build.gradle
    • OpenKeychain/build.gradle
  • run ./gradlew wrapper twice to update gradle and download the new gradle jar file
  • commit the corresponding Gradle wrapper to the repository (allows easy building for new contributors without the need to install the required Gradle version using a package manager)

Update SDK and Build Tools

  • Change SDK and Build Tools in git submodules "openkeychain-api-lib" and "openpgp-api-lib" manually. They should also build on their own without the ext variables.

Update library

  • You can check for library updates with ``./gradlew dependencyUpdates -Drevision=release

Add new library

  • You can add the library as a Maven dependency or as a git submodule (if patches are required) in the "extern" folder.
  • You can get all transitive dependencies with ./gradlew -q dependencies OpenKeychain:dependencies
  • If added as a git submodule, change the compileSdkVersion in build.gradle to use the variables from the root project:
android {
    compileSdkVersion rootProject.ext.compileSdkVersion
}
  • You can check for wrong compileSdkVersion by find -name build.gradle | xargs grep compileSdkVersion

Slow Gradle?

Error:Configuration with name 'default' not found.

Gradle project dependencies are missing. Do a git submodule init && git submodule update

Build on Mac OS X fails?

Try exporting JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"

Translations

Translations are hosted on Transifex, which is configured by ".tx/config".

  1. To pull newest translations install transifex client (e.g. apt-get install transifex-client)
  2. Config Transifex client with "~/.transifexrc"
  3. Go into root folder of git repo
  4. execute tx pull -af --skip

see http://help.transifex.net/features/client/index.html#user-client

Coding Style

Code

  • Indentation: 4 spaces, no tabs.
  • Maximum line width for code and comments: 100.
  • Opening braces don't go on their own line.
  • Field names: Non-public, non-static fields start with m.
  • Acronyms are words: Treat acronyms as words in names, yielding !XmlHttpRequest, getUrl(), etc.
  • Fully Qualify Imports: Do not use wildcard-imports such as import foo.*;
  • Android Studio warnings should be fixed, or suppressed if they are incorrect.

The full coding style can be found at http://source.android.com/source/code-style.html

Automated syntax check with CheckStyle

Linux

  1. Paste the tools/checkstyle.xml file to ~/.AndroidStudioPreview/config/codestyles/
  2. Go to Settings > Code Style > Java, select OpenPgpChecker, as well as Code Style > XML and select OpenPgpChecker again.
  3. Start code inspection and see the results by selecting Analyze > Inspect Code from Android-Studio or you can directly run checkstyle via cli with .tools/checkstyle. Make sure it's executable first.

Mac OSX

  1. Paste the tools/checkstyle.xml file to ~/Library/Preferences/AndroidStudioPreview/codestyles
  2. Go to Preferences > Code Style > Java, select OpenPgpChecker, as well as Code Style > XML and select OpenPgpChecker again.
  3. Start code inspection and see the results by selecting Analyze > Inspect Code from Android-Studio or you can directly run checkstyle via cli with .tools/checkstyle. Make sure it's executable first.

Windows

  1. Paste the tools/checkstyle.xml file to C:\Users\<UserName>\.AndroidStudioPreview\config\codestyles
  2. Go to File > Settings > Code Style > Java, select OpenPgpChecker, as well as Code Style > XML and select OpenPgpChecker again.
  3. Start code inspection and see the results by selecting Analyze > Inspect Code from Android-Studio.

Licenses

Copyright 2017 Schürmann & Breitmoser GbR

Licensed under the GPLv3.

Google Play and the Google Play logo are trademarks of Google Inc.

Comments
  • Decryption no longer works with Yubikey Neo: SecureMessagingException

    Decryption no longer works with Yubikey Neo: SecureMessagingException

    When I try to decrypt with my Yubikey Neo over NFC (which in the past, worked fine at some point), I get an error. For example, when using the decrypt-from-clipboard feature, or when using another program like https://github.com/zeapo/Android-Password-Store/issues/271.

    Expected Behavior

    Decryption succeeds.

    Current Behavior

    I now get Error: Transceive failed in the UI and the following stack trace in adb logcat:

    E/Keychain(13043): failed to establish secure messaging
    E/Keychain(13043): org.sufficientlysecure.keychain.securitytoken.SecureMessagingException: failed to retrieve secure messaging key attributes
    E/Keychain(13043): 	at org.sufficientlysecure.keychain.securitytoken.SCP11bSecureMessaging.establish(SCP11bSecureMessaging.java:298)
    E/Keychain(13043): 	at org.sufficientlysecure.keychain.securitytoken.SecurityTokenHelper.connectToDevice(SecurityTokenHelper.java:211)
    E/Keychain(13043): 	at org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenActivity.handleSecurityToken(BaseSecurityTokenActivity.java:444)
    E/Keychain(13043): 	at org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenActivity$1.doInBackground(BaseSecurityTokenActivity.java:172)
    E/Keychain(13043): 	at org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenActivity$1.doInBackground(BaseSecurityTokenActivity.java:162)
    E/Keychain(13043): 	at android.os.AsyncTask$2.call(AsyncTask.java:288)
    E/Keychain(13043): 	at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    E/Keychain(13043): 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    E/Keychain(13043): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    E/Keychain(13043): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    E/Keychain(13043): 	at java.lang.Thread.run(Thread.java:841)
    

    Possible Solution

    Not sure, but this is definitely a regression, it worked in the past.

    I wonder if it was this commit that broke it -- simply by the fact that it was the last one touching the code that raises the above exception.

    Steps to Reproduce (for bugs)

    1. Get a Yubikey Neo (for OpenKeychain devs: I'll buy you one if you don't have one)
    2. Encrypt a message to yourself to the clipboard
    3. Use decrypt from clipboard
    4. Tap the Yubikey via NFC, see it fail

    Your Environment

    • Android Version: 4.4
    • OpenKeychain Version: 4.2.4
    • From Google Play or F-Droid?: Google Play
    security token 
    opened by nh2 67
  • data formats for openpgp4fpr: links

    data formats for openpgp4fpr: links

    When I scan a QR Code that has the link OPENPGP4FPR:9F0FE587374BBE81 on it, I get this crash every time:

            AndroidRuntime  E  FATAL EXCEPTION: IntentService[KeychainIntentService]
                            E  Process: org.sufficientlysecure.keychain, PID: 15731
                            E  java.lang.StringIndexOutOfBoundsException: length=16; index=24
                            E      at java.lang.String.indexAndLength(String.java:584)
                            E      at java.lang.String.substring(String.java:1449)
                            E      at org.sufficientlysecure.keychain.operations.ImportExportOperation.importKeyRings(ImportExportOperation.java:219)
                            E      at org.sufficientlysecure.keychain.operations.ImportExportOperation.importKeyRings(ImportExportOperation.java:136)
                            E      at org.sufficientlysecure.keychain.service.KeychainIntentService.onHandleIntent(KeychainIntentService.java:525)
                            E      at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
                            E      at android.os.Handler.dispatchMessage(Handler.java:102)
                            E      at android.os.Looper.loop(Looper.java:136)
                            E      at android.os.HandlerThread.run(HandlerThread.java:61)
    
    
    discussion 
    opened by eighthave 55
  • Support for OpenPGP Smartcard in USB reader

    Support for OpenPGP Smartcard in USB reader

    I don't know how much work it would be to add this, but I assume now that OpenKeychain supports tokens over USB it shouldn't be too much work. I have a OpenPGP smartcard in an Gemalto K30 reader. It seems to not work with OpenKeychain currently. It would be great, if it could work with OpenKeychain. I assume a lot of people have such cards, the FSFE also gives them out to supporters.

    From what I understand, the protocol is exactly the same as with the yubikey, so probably only the detection/support for additional smartcard readers is missing?

    enhancement security token 
    opened by J0s3f 51
  • Contact sync not working on Android 9

    Contact sync not working on Android 9

    Expected Behavior

    In the settings, switch "Link keys to contacts" on for syncing contacts

    Current Behavior

    Since upgrading my Oneplus 6 to Omnirom 9.0 the switch always goes back to off.

    Your Environment

    • Android Version: 9.0 September patch level
    • Device Model: Oneplus 6
    • OpenKeychain Version: 5.2
    • From Google Play or F-Droid?: F-Droid

    Here's a logcat of the in my opinion relevant lines. Seems like some missing permissions. The contacts permission, however, is granted to the app.

    2018-09-17-17-14-13.txt

    If you need further assistance, please let me know.

    opened by Chartman123 43
  • Fix signing with stripped master key + add tests

    Fix signing with stripped master key + add tests

    Hi,

    i'm trying to use openkeychain with the xmpp-client Conversations. and unfortunately, after trying for a couple of hours and reading all issues on the topic i found, i couldnt get it to work.

    When i try to open the signing key (not only from Conversations, but also when i try to sign inside the openkeychain app), I get prompted for the password, but after entering it, I only get a message "Private key could not be extracted". As I wrote in the title, I don't want to use the master Key for signing, but a dedicated signing key, because my key is split the debian way, i.e. one only for certifying, one for encrypting and one for signing. The master key is correctly marked as not available, but somehow the app seems to try to use it for signing purposes. The same key is working in APG with k9-mail.

    This issue might be related to #570, #624 and #588, which all are marked as fixed. Strangely, the issue persists for me.

    If you need further information, i'll be happy to provide what i can to clear things up.

    Thanks in advance

    • Philipp
    bug 
    opened by phfalk 43
  • Improve ImportKeysListFragment

    Improve ImportKeysListFragment

    I've started working on improving various parts of the UI of the app.

    This is a first step regarding ImportKeysListFragment. I've in mind other improvements but i think it's already better than before. Other things will come soon. (for both UI and code)

    (I'm sorry for the language of the screenshots)

    opened by runnerway 36
  • Nfc error when approaching a yubico 5 nfc

    Nfc error when approaching a yubico 5 nfc

    after updating to version 5.6 the encryption via NFC no longer works. in practice, before I approached yubico Nfc to the cell phone and confirmation of encryption came out, now instead when it asks to approach the yubico via Nfc, it crashes or opens Chrome. the control no longer applies at the time of the nfc

    Screenshot_20210215-184004

    Screenshot_20210215-184028

    opened by tigernero79 35
  • Security Token: Improvements to USB support

    Security Token: Improvements to USB support

    • Add more devices to the whitelist: e.g., Nitrokey
    • Other pictures with USB devices for the dialog
    • Key generation on security token: a method is already there but not used because key generation over NFC is extremely unreliable and works only 1/3 of the time. I suspect that is because of power issues, which should not happen with USB.
    • warning for reset procedure?
    • animation when going from the CreateSecurityTokenWaitFragment moves into the wrong direction (just a minor glitch)
    help wanted security token 
    opened by dschuermann 34
  • Certify screen: Wording discussion

    Certify screen: Wording discussion

    I’m running a week-or-so old build and the new certify is an improvement, but it still isn’t very civilian-friendly. I sketched in code (just XML fiddling) to try to make what’s going on a little more useful to non-geeks. Useful direction?

    screenshot_2014-10-20-11-34-14

    discussion 
    opened by timbray 34
  • [WIP] USB OTG Support for Yubikey

    [WIP] USB OTG Support for Yubikey

    Hello, This is WIP PR for USB OTG Yubikey support (and possibly other devices like Nitrokey).

    This is in very early stage, basically a quickly hacked proof of concept, but I decided to open anyway and to show some progress, as @Valodim suggested in #1550

    Despite being in early stage, everything should be usable, so you can test it if you want.

    Issues:

    • [x] User shouldn't need to reinset device on each operation
    • [x] Disconnects are not handled properly
    • [x] Reinsert required in some ocasions(encrypting after reinserting on prev screen)
    • [x] Update Manage my keys -> Security token thing
    • [x] Investigate issue with transmitting -1
    • [ ] Investigate bricking on card reset
    • [ ] Needs refactoring (error handling, ....)
    • [ ] Tests?
    • [ ] Nitrokey & others

    cc @Valodim @dschuermann

    opened by nmikhailov 31
  • failed to import key

    failed to import key

    failed to import keys Error: "Nothing to import". My file was pubring.asc which was created from desktop using gpg4usb -----BEGIN PGP PUBLIC KEY BLOCK-----

    Version: GnuPG v1.4.12 (MingW32)

    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

    =Nf66

    -----END PGP PUBLIC KEY BLOCK-----

    bug 
    opened by junerin 31
  • Open-Keychain crashes when de-/encrypting PGP emails K9 (& FairMail)

    Open-Keychain crashes when de-/encrypting PGP emails K9 (& FairMail)

    Open-Keychain crashes when trying to de-/encrypt PGP emails in K9 (also tried FairMail), with my Yubikey. This has been working for ages but recently stopped on my Pixel6 (Android 13, Build TQ1A.221205.011)

    Expected Behavior

    1. Clicking on encrypted email, entering the PIN for the Yubikey, placing it on the back of the phone (NFC), removing it and the decrypted mail is shown in the client (K9 or FairMail).

    2. Enable encryption for an email, click on send, enter the PIN, place the Yubikey on the back of the phone (NFC), remove it and the encrypted mail is sent.

    Current Behavior

    1. Clicking on encrypted email, entering the PIN for the Yubikey, placing it on the back of the phone (NFC), removing it -> Full crash of Open-Keychain, as well as the client (K9 or FairMail).

    2. When trying to encrypt an email, Open-Keychain also crashes and leaves the drafted email in the Drafts folder.

    Possible Solution

    None :(

    Steps to Reproduce (for bugs)

    See above.

    Context

    I'm trying to de-/encrypt PGP emails, which doesn't work anymore.

    Your Environment

    • Android Version: 13, Build TQ1A.221205.011, security update from December 5th
    • Device Model: Pixel6
    • OpenKeychain Version: 5.7.5
    • From Google Play or F-Droid?: Google Play
    • K9: 6.400
    opened by moritzp 4
  • OpenKeychain crashes on launch

    OpenKeychain crashes on launch

    I have a similar issue to #2480 but I'm not sure if it is the same SQLite issue so I'm opening a fresh ticket. This may have broken due to the latest Android 13 security fix because nothing changed between yesterday when Password Store / OpenKeychain worked and today when they do not except for updating Android. I am able to repro this issue on a Pixel 6 and a Pixel 6a.

    Expected Behavior

    • Attempt to access a password in password store
    • Unlock openkeychain with yubikey
    • Password is shown

    Current Behavior

    • Attempt to access a password in password store
    • Unlock openkeychain with yubikey
    • Password is not shown

    Possible Solution

    Perhaps @natjms suggestion of a SQLite issue is relevant to my issue as well.

    Steps to Reproduce (for bugs)

    • See above

    Your Environment

    • Android 13
    • Build number TQ1A.221205.011
    • OpenKeychain 5.7 (from Fdroid)
    • Android Password Store 1.13.5 (from Fdroid)
    opened by kensmith 4
  • Incognito mode for the keyboard

    Incognito mode for the keyboard

    It would be nice to enable the function that makes your current keyboard e.g. Google keyboard go into incognito mode and disable automated word recognition.

    Current Behavior

    The automatic word learning that many people use to improve the correction of text can be a problem that affects privacy, as this collection of words is based on storing repeated phrases or frequently used, to solve this problem would enable the application itself to ask the keyboard to activate the incognito mode of the same, to avoid this collection of content, as normally in this application is usually write texts of a delicate character. gboard Example of Gboard in incognito mode

    My Environment

    • Android Version: 11
    • Device Model: Xiaomi Mi A3
    • OpenKeychain Version: 5.7.5
    • Source: Google play store
    opened by ValkoinenKissa 0
  • error exporting txt file encrypted in a gpg file

    error exporting txt file encrypted in a gpg file

    It is not possible to export a txt file encrypted in a .gpg as the original .txt file test.txt.gpg -> test.txt

    Expected Behavior

    Encrypted .txt file could saved as a decrypted .txt

    Current Behavior

    Openkeychain consider .txt file a content to be shared with messaging apps like Signal, but not as a .txt file that could be saved with file apps like "Simple File Manager". So it is not possible to have the original txt file straight away.

    Possible Solution

    Add a "save" button. This way, user can save txt file but are still able to export the content using share button.

    Steps to Reproduce (for bugs)

    1. download test.txt or create a new txt file containing any text of your choice
    2. Encrypt test.txt with your key to have a gpg file = test.txt.pgp
    3. Open test.txt.gpg using openkeychain's decryption function and unlock the key. Now the decrypted text is shown in the app
    4. Press share button
    5. Choose an app that manage files like Simple File Manager or Syncthing to save the original txt file
    6. An error notification appears

    Context

    Some app save a backup of their data as a text file (with txt extension or with no extension at all like Android app "Native Alpha") so in this case the user want to have the original txt immediately available and not the text inside it

    Your Environment

    • Android Version: 10
    • Device Model: Oppo CPH1931
    • OpenKeychain Version: 5.7.5
    • From Google Play or F-Droid?: fdroid
    opened by luca-e075e 0
Encrypted overlay filesystems implementation for Android.

DroidFS DroidFS is an alternative way to use encrypted overlay filesystems on Android that uses its own internal file explorer instead of mounting vir

Hardcore Sushi 283 Dec 20, 2022
compaKTset is a small library aimed at providing you with the most memory efficient Set implementation for any particular data type of your choosing.

compaKTset is a small library aimed at providing you with the most memory efficient Set implementation for any particular data type of your choosing.

Ignat Beresnev 3 Nov 16, 2021
Android Shared preference wrapper than encrypts the values of Shared Preferences. It's not bullet proof security but rather a quick win for incrementally making your android app more secure.

Secure-preferences - Deprecated Please use EncryptedSharedPreferences from androidx.security in preferenced to secure-preference. (There are no active

Scott Alexander-Bown 1.5k Dec 24, 2022
Android library which makes it easy to handle the different obstacles while calling an API (Web Service) in Android App.

API Calling Flow API Calling Flow is a Android library which can help you to simplify handling different conditions while calling an API (Web Service)

Rohit Surwase 19 Nov 9, 2021
Gesture detector framework for multitouch handling on Android, based on Android's ScaleGestureDetector

Android Gesture Detectors Framework Introduction Since I was amazed Android has a ScaleGestureDetector since API level 8 but (still) no such thing as

null 1.1k Nov 30, 2022
Use Android as Rubber Ducky against another Android device

Use Android as Rubber Ducky against another Android device

null 1.4k Jan 9, 2023
Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Shahid Iqbal 4 Nov 29, 2022
A util for setting status bar style on Android App.

StatusBarUtil A util for setting status bar style on Android App. It can work above API 19(KitKat 4.4). 中文版点我 Sample Download StatusBarUtil-Demo Chang

Jaeger 8.8k Jan 6, 2023
A logger with a small, extensible API which provides utility on top of Android's normal Log class.

This is a logger with a small, extensible API which provides utility on top of Android's normal Log class. I copy this class into all the little apps

Jake Wharton 9.8k Dec 30, 2022
a simple cache for android and java

ASimpleCache ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。 1、它可以缓存什么东西? 普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 b

Michael Yang 3.7k Dec 14, 2022
gRPC and protocol buffers for Android, Kotlin, and Java.

Wire “A man got to have a code!” - Omar Little See the project website for documentation and APIs. As our teams and programs grow, the variety and vol

Square 3.9k Dec 31, 2022
✔️ Secure, simple key-value storage for Android

Hawk 2.0 Secure, simple key-value storage for android Important Note This version has no backward compatibility with Hawk 1+ versions. If you still wa

Orhan Obut 3.9k Dec 20, 2022
A robust native library loader for Android.

ReLinker A robust native library loader for Android. More information can be found in our blog post Min SDK: 9 JavaDoc Overview The Android PackageMan

Keepsafe 2.9k Dec 27, 2022
A lightning fast, transactional, file-based FIFO for Android and Java.

Tape by Square, Inc. Tape is a collection of queue-related classes for Android and Java. QueueFile is a lightning-fast, transactional, file-based FIFO

Square 2.4k Dec 30, 2022
Joda-Time library with Android specialization

joda-time-android This library is a version of Joda-Time built with Android in mind. Why Joda-Time? Android has built-in date and time handling - why

Daniel Lew 2.6k Dec 9, 2022
a SharedPreferences replacement for Android with multiprocess support

DEPRECATED - no longer actively maintained Tray - a SharedPreferences replacement for Android If you have read the documentation of the SharedPreferen

HCI @ gcx 2.3k Nov 17, 2022
UPnP/DLNA library for Java and Android

Cling EOL: This project is no longer actively maintained, code may be outdated. If you are interested in maintaining and developing this project, comm

4th Line 1.6k Jan 4, 2023
WebSocket & WAMP in Java for Android and Java 8

Autobahn|Java Client library providing WAMP on Java 8 (Netty) and Android, plus (secure) WebSocket for Android. Autobahn|Java is a subproject of the A

Crossbar.io 1.5k Dec 9, 2022
:iphone: [Android Library] Get device information in a super easy way.

EasyDeviceInfo Android library to get device information in a super easy way. The library is built for simplicity and approachability. It not only eli

Nishant Srivastava 1.7k Dec 22, 2022