# hush-android-wallet A sample Android wallet using the [Hush Android SDK](https://git.hush.is/hush/hush-android-wallet-sdk) which is based on the [Zcash Android SDK](https://github.com/zcash/zcash-android-wallet-sdk). ### Motivation [Dogfooding](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) - _transitive verb_ - is the practice of an organization using its own product. This app was created to help us learn. # Disclaimers There are some known areas for improvement: - This app is mainly intended for learning and improving the related libraries that it uses. There may be bugs. - Traffic analysis, like in other cryptocurrency wallets, can leak some privacy of the user. - The wallet requires a trust in the server to display accurate transaction information. See the upstream Zcash [Wallet App Threat Model](https://zcash.readthedocs.io/en/latest/rtd_pages/wallet_threat_model.html) for more information about the security and privacy limitations of the wallet. If you'd like to help us test, reach out on [Telegram](https://hush.is/tg) or [Matrix](https://hush.is/matrix) and let us know! We're always happy to get feedback! # Description This a sample wallet for the following set of features: - z2z transactions with encrypted memos - reply-to formatted memos # Prerequisites - [The code](https://git.hush.is/hush/hush-android-wallet) - [Android Studio](https://developer.android.com/studio/index.html) or [adb](https://www.xda-developers.com/what-is-adb/) - An Android device or emulator. Android 10 or higher is recommended. # Building the App To run, clone the repo, open it in Android Studio and press play. It should just work.™ ## Install from Android Studio 1. [Install Android Studio](https://developer.android.com/studio/install) and setup an emulator 1a. If using a device, be sure to [put it in developer mode](https://developer.android.com/studio/debug/dev-options) to enable side-loading apps 2. `Import` the hush-android-wallet folder. It will be recognized as an Android project. 3. Press play (once it is done opening and indexing) ## OR Install from the command line To build from the command line, [setup ADB](https://www.xda-developers.com/install-adb-windows-macos-linux/) and connect your device. Then simply run this and it will both build and install the app: ```bash cd /path/to/hush-android-wallet ./gradlew ``` Note: The lack of an explicit Gradle task is not a typo. A default task is configured via [build.gradle.kts](build.gradle.kts). Tip: On macOS and Linux, Gradle is invoked with `./gradlew`. On Windows, Gradle is invoked with `gradlew`. # Included builds To simplify implementation of SDK features in conjunction with changes to the app, a Gradle [Included Build](https://docs.gradle.org/current/userguide/composite_builds.html) can be configured. 1. Check out the SDK to a directory path of `../hush-android-sdk` relative to the root of this app's repo. For example: parent/ hush-android-wallet/ hush-android-sdk/ 1. Verify that the `hush-android-sdk` builds correctly on its own 1. Build `hush-android-wallet`, setting the Gradle property `IS_SDK_INCLUDED_BUILD=true` There are some limitations of included builds: 1. Properties from `hush-android-wallet` will override those set in `hush-android-sdk` with the same name 1. Modules in each project cannot share the same name. For this reason, build-conventions have different names in each repo (`hush-android-sdk/build-conventions` vs `other-android-wallet/build-convention`) 1. Kotlin and KSP versions will need to be coordinated between the two projects, because KSP is tightly coupled to the Kotlin version # Contributing Contributions are very much welcomed! Contact us on [Telegram](https://hush.is/tg) or [Matrix](https://hush.is/matrix) . # Reporting an issue Contact us on [Telegram](https://hush.is/tg) or [Matrix](https://hush.is/matrix) # Copyright Copyright 2016-2022 The Hush developers # License GPLv3