The communications protocol for web3, Reown brings the ecosystem together by enabling hundreds of wallets and apps to securely connect and interact. This repository contains Kotlin implementation of Reown protocols for Android applications.
The Reown Kotlin SDK is a comprehensive mobile development kit that enables blockchain wallet functionality and wallet-to-dApp communication for Android applications. It implements the WalletConnect protocol suite, allowing mobile wallets to securely connect with decentralized applications (dApps).
- Wallet Implementation: Manage crypto accounts and transactions
- Sign Protocol: Secure connection between wallets and dApps
- Notify Protocol: Blockchain-related notifications
- Chain Abstraction: Simplified cross-chain transactions
- Authentication: Wallet verification mechanisms
- WalletKit: SDK for building wallet applications with full blockchain capabilities
- AppKit: SDK for building dApps that connect to wallets
- Protocol Layer: Implementations of Sign, Notify, and Auth protocols
The Reown Kotlin SDK is organized as a modular system with several layers:
-
Foundation Layer: Base libraries providing core functionality
foundation/: Fundamental libraries and utilities
-
Core Layer: Essential platform-specific implementations
core/android/: Core Android implementationcore/modal/: Core modal UI componentscore/bom/: Bill of Materials for dependency version management
-
Protocol Layer: Protocol-specific implementations
protocol/sign/: Implementation of the WalletConnect Sign protocolprotocol/notify/: Implementation of the WalletConnect Notify protocol
-
Product Layer: High-level SDK features
product/walletkit/: SDK for building wallet applicationsproduct/appkit/: SDK for building dApp applications
-
Sample Applications: Example implementations
sample/wallet/: Wallet sample applicationsample/dapp/: dApp sample applicationsample/pos/: POS sample applicationsample/modal/: Modal sample application
To integrate the Reown Kotlin SDK into your project, use the Bill of Materials (BOM) to manage compatible dependencies:
dependencies {
implementation(platform("com.reown:android-bom:{BOM version}"))
// Core SDK
implementation("com.reown:android-core")
// For wallet applications
implementation("com.reown:walletkit")
// For dApp applications
implementation("com.reown:appkit")
}The repository includes several sample applications that demonstrate different use cases of the Reown Kotlin SDK. Follow these instructions to build and run the sample apps:
- Android Studio Arctic Fox or later
- Android SDK API level 21 or higher
- Gradle 7.0 or later
- JDK 11 or later
No manual setup is needed for debug builds. Mock secrets.properties and google-services.json files are auto-generated on first build if they are missing.
For production or internal builds, provide real configuration:
secrets.propertiesin the root directory with valid keystore paths and passwordsgoogle-services.jsonin each sample app directory with real Firebase credentials
- Purpose: Demonstrates a complete wallet implementation
- Package:
com.reown.sample.wallet - Build Command:
./gradlew :sample:wallet:assembleDebug
- Purpose: Shows how to build a dApp that connects to wallets
- Package:
com.reown.sample.dapp - Build Command:
./gradlew :sample:dapp:assembleDebug
- Purpose: Point of Sale application example
- Package:
com.reown.sample.pos - Build Command:
./gradlew :sample:pos:assembleDebug
- Purpose: Modal UI integration example
- Package:
com.reown.sample.modal - Build Command:
./gradlew :sample:modal:assembleDebug
- Build all samples:
./gradlew :sample:assembleDebug - Build specific sample:
./gradlew :sample:{sample_name}:assembleDebug - Install on device:
./gradlew :sample:{sample_name}:installDebug - Run tests:
./gradlew :sample:{sample_name}:testDebugUnitTest
- Build errors: Ensure all dependencies are synced with
./gradlew build - Keystore issues: Delete
secrets.propertiesand rebuild to regenerate mock values, or provide real keystore config - Google Services: Delete
google-services.jsonfrom the sample directory and rebuild to regenerate, or provide real Firebase config - Gradle sync: Try
./gradlew cleanfollowed by./gradlew build