- Clone the project
- Initialize submodules
git submodule update --init --recursive - Get Infura API Key and Secret key and Covalent API Key
- Create Github Personal Access Token with read:packages permission
- Set values in
local.properties:
GITHUB_ACTOR=[github username]
GITHUB_TOKEN=[github personal access token created in step 4]
ALCHEMY_API_KEY=[your Alchemy API key]
COVALENTHQ_API_KEY=[your CovalentHQ API key]
INFURA_API_KEY=[Infura API Key]
INFURA_SECRET_KEY=[Infura Secret Key]
REVENUECAT_ANDROID_API_KEY=[some foo empty string]
REVENUECAT_IOS_API_KEY=[some foo empty string]
- Paging: Multiplatform Paging
- kotlinx-serialization
- kotlinx-datetime
develop- Development branch (for Firebase App Distribution builds)uat- Internal release branch (for Google Play internal)staging- Closed alpha release branch (for Google Play closed alpha)master- Public release branch (for Google Play Store)
Before contributing to this project, please read our development standards:
- Git Workflow - Branch naming and commit message conventions
- Development Standards - Code style, architecture, and best practices
- Read GIT_WORKFLOW.md for Git conventions
- Set up Git commit template:
git config commit.template .gitmessage
- Create your feature branch:
git checkout -b feature/your-feature-name
- Make your changes following our coding standards
- Write tests for your changes
- Commit using conventional commit format
- Push and create a Pull Request
There are 3 app variants: Cold, Pro and Ui
- Cold: Wallet with transaction signing capability, intended to be use on a separate, air-gapped device (not connected to the Internet) for security
- UI: Wallet that can send transaction. Intended to be used in combination with Cold. Cold and UI can be used on the same device and can communicate with each other (planned feature)
- Pro: Combination of Cold and Ui in one app
Prerequisite for all platforms
Change the value currentFlavor in gradle.properties to your desired build variant. Please remember to not commit this change to Git
Android Set build variant in Android Studio
iOS Select scheme in Xcode
Desktop
- There's an additional value
desktopBuildTypeingradle.properties. Change this value to your desired build type (debug or release) - Run task
generateBuildKonfigin:common:utilsmodule to update the values
- Make the changes you need in
./common/mokoresources/src/commonMain/moko-resources/files/ - Verify if you have sqlite3 command line tool by running
sqlite3 --versionin terminal. If you see a version number, you have sqlite3 installed - If not, install sqlite3 command line tool
brew install sqlite3on Mac orsudo apt-get install sqlite3on Linux - cd into the
./common/mokoresources/src/commonMain/moko-resources/files/folder - Run this command
for file in *.sql; do sqlite3 mangalawallet.db < "$file" done - Be sure to add a new migration for the change in
data/local/src/commonMain/sqldelight/migrationsfolder
- Execution failed for task ':composeApp:podInstallSyntheticIos'
Run
./gradlew :composeApp:podInstallSyntheticIosin terminal - The /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
command returned non-zero exit code: 1.
output:
ld: framework not found FirebaseMessaging
Run
./gradlew :libraries:kmpnotifier:podInstallSyntheticIos - Building iOS and getting error
Missing package product Kingfisher, Missing package product OHHTTPStubsSwift, ...Go to XCode and open File -> Packages -> Reset Package Caches and rebuild - Cannot find
strcmpin scope Modify the StatementAuthorizer file like this https://github.com/groue/GRDB.swift/commit/fcfdab2f11df7dd08e77bcd769ece6cb9f1261e4
- Generating Kotlin file for DB after editing .sq file
./gradlew generateCommonMainAntelopeDatabaseInterface