Homebrew: 3.4.1+ Xcode: 13.2.1+ Ruby: 2.6.9 Ruby-Gems: 3.0.3 Swiftlint: 0.46.5+ Swiftformat: 0.49.5+
If you are using a M1 you might need to update ruby to version 2.7.5 or 3.x.x. Postponing the upgrade now so we don't disturb the current builds until the CI is updated to M1 and everybody get their M1s.
After installing Xcode, open it to begin the Command Line Tools installation. After finished, make sure that a valid CL Tool version is selected in
Xcode > Preferences > Locations > Command Line Tools.
$ git submodule update --init
If the submodules are not fetched, run:
$ git submodule update --recursive --force
Open .gitmodules and modify My-Wallet-V3 entry url to the public repo:
[submodule "Submodules/My-Wallet-V3"] path = Submodules/My-Wallet-V3 url = firstname.lastname@example.org:blockchain/My-Wallet-V3-Private.git ignore = dirty
[submodule "Submodules/My-Wallet-V3"] path = Submodules/My-Wallet-V3 url = email@example.com:blockchain/My-Wallet-V3.git ignore = dirty
$ git submodule sync $ git submodule update --init
Install a Ruby version manager such as rbenv.
$ brew update && brew install rbenv $ rbenv init
Install a recent ruby version:
$ rbenv install 2.6.9 $ rbenv global 2.6.9 $ eval "$(rbenv init -)"
For M1 use this: $ rbenv install 2.7.6 $ rbenv global 2.7.6 $ eval "$(rbenv init -)"
Then the project ruby dependencies (
$ gem install bundler $ bundle install
$ sh scripts/install-brew-dependencies.sh
Check nvm installaton instructions.
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
Install the correct node version:
$ nvm install 8.17.0 $ nvm use 8.17.0
If nvm is failing to install, please make sure you are installing it with the curl command above. If it still fails, check their website for a possibly newer installer.
$ brew install yarn
$ cd Submodules/My-Wallet-V3 $ git checkout ios $ cd ../..
$ sh scripts/install-js.sh && sh scripts/build-js.sh
If the above command is failing you might need to fix the missing python binary on systems with python3 installed.
$ brew install python3
You should see those Caveats at the end of a successful installation:
==> Caveats Python has been installed as /opt/homebrew/bin/python3 Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to `python3`, `python3-config`, `pip3` etc., respectively, have been installed into /firstname.lastname@example.org/libexec/bin
The first lines tells us python3 binary was installed.
The second part tells us that there are unversioned aliases also installed in another directory that is not in our PATH but we can add to it if we want to make those unversioned aliases available.
To do so, edit your
~/.bashrc depending on which shell do you use.
Find a line that starts with
export PATH and add the aliases path to it.
BREW_PYTHON="$(brew --prefix python3)/libexec/bin" export PATH=$HOME/bin:/usr/local/bin:$BREW_PYTHON:$PATH
$ cd ./Submodules/OpenSSL-for-iPhone $ ./build-libssl.sh --cleanup --archs="x86_64 arm64"
Clone the wallet-ios-credentials repository and copy it's
Config directory to this project root directory, it contains a
.xcconfig for each environment:
Config/BlockchainConfig/Dev.xcconfig Config/BlockchainConfig/Production.xcconfig Config/BlockchainConfig/Staging.xcconfig Config/BlockchainConfig/Alpha.xcconfig Config/NetworkKitConfig/Dev.xcconfig Config/NetworkKitConfig/Production.xcconfig Config/NetworkKitConfig/Staging.xcconfig Config/NetworkKitConfig/Alpha.xcconfig
For example, This is how
BlockchainConfig/Production.xcconfig looks like:
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon OPENSSL_CERT_URL = blockchain.info
For example, This is how
NetworkKitConfig/Production.xcconfig looks like:
API_URL = api.blockchain.info BUY_WEBVIEW_URL = blockchain.info/wallet/#/intermediate COINIFY_URL = app-api.coinify.com EXCHANGE_URL = exchange.blockchain.com EXPLORER_SERVER = blockchain.com RETAIL_CORE_SOCKET_URL = ws.blockchain.info/nabu-gateway/markets/quotes RETAIL_CORE_URL = api.blockchain.info/nabu-gateway WALLET_SERVER = blockchain.info WALLET_HELPER = wallet-helper.blockchain.info/wallet-helper
wallet-ios-credentials repository and copy it's
Firebase directory into
Blockchain directory, it contains a
GoogleService-Info.plist for each environment.
Firebase/Dev/GoogleService-Info.plist Firebase/Prod/GoogleService-Info.plist Firebase/Staging/GoogleService-Info.plist Firebase/Alpha/GoogleService-Info.plist
wallet-ios-credentials repository and copy the
env to the root folder of the project, hide the file by using
mv env .env
We are integrating XcodeGen and, despite still committing project files in git, we should generate project files using the following script:
$ brew install xcodegen
$ sh scripts/bootstrap.sh
👉 Beware that this will take a while. Feel free to read some docs, a 📖, get a ☕, or go for a 🚶 while it runs…
⚠️ You may need to run the following command if you encounter an
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
If you would like to contribute code to the Blockchain iOS app, you can do so by forking this repository, making the changes on your fork, and sending a pull request back to this repository.
When submitting a pull request, please make sure that your code compiles correctly and all tests in the
BlockchainTests target passes. Be as detailed as possible in the pull request’s summary by describing the problem you solved and your proposed solution.
Additionally, for your change to be included in the subsequent release’s change log, make sure that your pull request’s title and commit message is prefixed using one of the changelog types.
The pull request and commit message format should be:
<changelog type>(<component>): <brief description>
fix(Create Wallet): Fix email validation
For a full list of supported types, see .changelogrc.
Source Code License: LGPL v3
Artwork & images remain Copyright Blockchain Luxembourg S.A.R.L
Security issues can be reported to us in the following venues:
|Last commit: 1 week ago|
fix(KYC) IOS-6933 skip questions form when buy crypto (#4318) bab247c9
Use Fastlane number_of_commits instead of git rev-list (#4320) 474e33bd
Generated with git-changelog. If you have any problems or suggestions, create an issue. :) Thanks