Skip to content

Repository files navigation

Passman Android

Latest Release

Get it on Play Store Get it on F-Droid Get it on IzzyOnDroid

Passman for Android is the official mobile companion for the Passman Nextcloud extension. It provides a secure, self-hosted alternative to proprietary password managers, keeping your credentials synchronized across your devices without compromising your privacy.

Note

This app requires a running Nextcloud instance with the Passman extension installed.

Screenshots

Features

Vault Management

  • View, add, rename, and delete vaults
  • Secure vault login with encrypted stored passwords
  • Support for multiple vaults with easy switching
  • Option to close the vault after a period of not being used

Credential Handling

  • Full CRUD operations: View, add, edit, and delete credentials
  • OTP (One-Time Password) generation for 2FA
  • Integrated password generator
  • Support for adding, downloading, and deleting file attachments

Security & Integration

  • Modern Android user authentication (Biometrics/PIN/Pattern) for app start
  • Android Autofill implementation (requires Android 8+)
  • Encrypted offline cache for reliable access without a network connection
  • Secure storage using the Android Keystore system
  • Optional screenshot protection

FAQ

For troubleshooting and detailed guides, please read our Frequently Asked Questions.

Demo System

You can test the Passman ecosystem using our demo system.

Development

Prerequisites

  • CMake, GCC, and Git
  • Android Studio with SDK and NDK installed

Build steps

  1. Clone & Initialize:
    git clone https://github.com/nextcloud/passman-android.git
    cd passman-android
    git submodule update --init --recursive
  2. Signing (for Release/Alpha builds):
    • Create a keystore: keytool -genkey -v -keystore keystore.jks -alias alpha -keyalg rsa.
    • Configure gradle.properties based on gradle.properties.example.
    • Fill in the appropriate values for your keystore. If you only build debug builds you can leave the default values.
  3. Android Studio: If not already done, open the project in Android Studio and install the SDK an the NDK
  4. OpenSSL Configuration:
    • Copy openssl.conf.example to openssl.conf.
    • Update ANDROID_NDK_HOME and HOST_TAG in openssl.conf to match your environment.
    • Run ./build-openssl.sh.
  5. Build: Build via Android Studio or run ./gradlew assembleDebug.

Build in docker using fastlane

If you want to build your own apk release, you can use this method instead of using Android Studio to have always a fresh and clean build environment. It will give you builds for all supported architectures.

  1. Preparation (once per machine): Clone this repository, go into the directory, initialize the submodules and run the commands below step by step.
    git clone https://github.com/nextcloud/passman-android.git
    cd passman-android
    git submodule update --init --recursive
  2. Start the container and attach to it. The image like fabernovel/android:api-35-v1.11.0 needs to match the currently used Android SDK version (see app/build.gradle for the compileSdk).
    docker run --name passman-android-test -it -v $(pwd):/app -w /app fabernovel/android:api-35-v1.11.0 bash
    • Run all following commands in the container
  3. Install dependencies
    bundle check || bundle install --jobs $(nproc)
    apt update -y && apt install -y curl gcc cmake make
    
    # this downloads like gradle and the ndk, the later build step requires to be present
    bundle exec fastlane prepare
    
    # in case this fails, cleanup manually and try the prepare command again
    # rm -rf app/.cxx app/build .gradle .bundle
  4. Build OpenSSL for the supported architectures (give it some time)
    ./build-openssl.sh > build-openssl.log
  5. Run tests
    bundle exec fastlane test
  6. Create a keystore and the gradle.properties file. Take a look at the instructions above.
    • Modify gradle.properties to and set like this: RELEASE_STORE=../keystore.jks. Its important to use a relative path pointing to the parent directory, otherwise the build will fail.
    • The keystore should be created with the alias release.
  7. Build the app release
    bundle exec fastlane build
    • you can find the apks in app/build/outputs/apk/release/
  8. Optional: Exit the container, stop and remove it
    # exit withint the container
    exit
    
    # stop and remove the container
    docker stop passman-android-test
    docker rm passman-android-test

Support Passman

Passman is open source and thrives on community contributions. Whether it's pull requests or feedback, all help is welcome!

Please consider donating (we'll gladly accept a pizza):

About

🔑 Android app for Passman.

Topics

Resources

Contributing

Security policy

Stars

103 stars

Watchers

15 watching

Forks

Releases

Packages

Used by

Contributors

Languages