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:
.gitmodules
from:
[submodule "Submodules/My-Wallet-V3"]
path = Submodules/My-Wallet-V3
url = git@github.com:blockchain/My-Wallet-V3-Private.git
ignore = dirty
to:
[submodule "Submodules/My-Wallet-V3"]
path = Submodules/My-Wallet-V3
url = git@github.com:blockchain/My-Wallet-V3.git
ignore = dirty
Then run:
$ 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.5
$ rbenv global 2.6.5
$ eval "$(rbenv init -)"
Then the project ruby dependencies (fastlane
, etc.):
$ gem install bundler
$ bundle install
$ sh scripts/install-brew-dependencies.sh
You will be installing: - nvm - node - yarn
Check nvm installaton instructions.
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
Install the correct node version:
$ nvm install 8.17.0
$ nvm use 8.17.0
$ brew install yarn
$ cd Submodules/My-Wallet-V3
$ git checkout ios
$ cd ../..
$ sh scripts/install-js.sh && sh scripts/build-js.sh
$ 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
Clone 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
Clone 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…
xcode-select
error:
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Install mockingbird mock generator CLI:
$ sh scripts/install-mockingbird.sh
Install mock generation script in targets. It will generate mocks first time the test are run:
$ sh scripts/install-mocks.sh
cmd-r
Please refer to the README in the Modules
directory.
Please also refer to the README in the TestKit
directory.
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>
For example:
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:
- Email: security@blockchain.info
- Bug Bounty: https://hackerone.com/blockchain