Update install guide and a section for IPA generation.

This commit is contained in:
SBiOSoftWhare
2020-08-24 14:41:17 +02:00
parent 29019e6cc1
commit 59bcd327ca

View File

@@ -2,12 +2,12 @@
## Install build tools
To build Riot iOS project you need:
To build Element iOS project you need:
- Xcode 10.3, if you have a newer Xcode version on your Mac you can download it from the Apple Developer Portal [here](https://download.developer.apple.com/Developer_Tools/Xcode_10.3/Xcode_10.3.xip).
- Xcode 11.4+.
- [cmake](https://gitlab.kitware.com/cmake/cmake), used to build [OLMKit](https://gitlab.matrix.org/matrix-org/olm/tree/master/xcode) dependency.
- [CocoaPods](https://cocoapods.org) 1.8.4. Manages library dependencies for Xcode projects.
- [bundler](https://bundler.io/) (optional), is also a dependency manager used to manage build tools dependency (CocoaPods, Fastlane)
- [CocoaPods](https://cocoapods.org) 1.9.3. Manages library dependencies for Xcode projects.
- [bundler](https://bundler.io/) (optional), is also a dependency manager used to manage build tools dependency (CocoaPods, Fastlane).
### Install cmake
@@ -31,9 +31,9 @@ gem install cocoapods
gem install bundler
```
## Choose what to build
## Choose Matrix SDKs version to build
To choose the version you want to develop and build against you will have to modify the right definitions of `$matrixKitVersion` variable in the `Podfile`.
To choose the [MatrixKit](https://github.com/matrix-org/matrix-ios-kit) version (and depending MatrixSDK and OLMKit) you want to develop and build against you will have to modify the right definitions of `$matrixKitVersion` variable in the `Podfile`.
### Determine your needs
@@ -41,19 +41,23 @@ To select which `$matrixKitVersion` value to use you have to determine your need
- **Build an App Store release version**
To build the last published App Store code you just need to checkout master branch. If you want to build an older App Store version just checkout the tag of the corresponding version. You have nothing to modify in the `Podfile`. In this case `$matrixKitVersion` will be set to a specific version of MatrixKit already published on CocoaPods repositoy.
To build the last published App Store code you just need to checkout master branch. If you want to build an older App Store version just checkout the tag of the corresponding version. You have nothing to modify in the `Podfile`. In this case `$matrixKitVersion` will be set to a specific version of the MatrixKit already published on CocoaPods repository.
- **Build last development code and modify Riot project only**
- **Build last development code and modify Element project only**
If you want to build last developpement code you have to checkout the develop branch and uncomment `$matrixKitVersion = 'develop'` in the `Podfile`. This will also use MatrixKit and MatrixSDK develop branches.
If you want to build last development code you have to checkout the develop branch and use `$matrixKitVersion = {'develop' => 'develop'}` in the `Podfile`. This will also use MatrixKit and MatrixSDK develop branches.
- **Build specific branch of Kit and SDK and modify Element project only**
If you want to build a specific branch for the MatrixKit and the MatrixSDK you have to indicate them using a dictionary like this: `$matrixKitVersion = {'kit branch name' => 'sdk branch name'}`.
- **Build any branch and be able to modify MatrixKit and MatrixSDK locally**
If you want to modify MatrixKit and/or MatrixSDK locally and see the result in Riot project you have uncommment `$matrixKitVersion = 'local'` in the `Podfile`.
But before you have to checkout [MatrixKit](https://github.com/matrix-org/matrix-ios-kit) repository in `../matrix-ios-kit` and [MatrixSDK](https://github.com/matrix-org/matrix-ios-sdk) in `../matrix-ios-sdk` locally relatively to your Riot iOS project folder.
Be sure to use compatible branches for Riot iOS, MatrixKit and MatrixSDK. For example if you want to modify Riot iOS from develop branch use MatrixKit and MatrixSDK develop branches and then make your modifications.
If you want to modify MatrixKit and/or MatrixSDK locally and see the result in Element project you have to uncommment `$matrixKitVersion = :local` in the `Podfile`.
But before you have to checkout [MatrixKit](https://github.com/matrix-org/matrix-ios-kit) repository in `../matrix-ios-kit` and [MatrixSDK](https://github.com/matrix-org/matrix-ios-sdk) in `../matrix-ios-sdk` locally relatively to your Element iOS project folder.
Be sure to use compatible branches for Element iOS, MatrixKit and MatrixSDK. For example if you want to modify Element iOS from develop branch use MatrixKit and MatrixSDK develop branches and then make your modifications.
**Important**: By working with local pods (development pods) you will need to use legacy build system in Xcode to have your local changes taken into account. To enable it go to Xcode menu and select `File > Workspace Settings… > Build System` and then choose `Legacy Build System`.
**Important**: By working with local pods (development pods) you will need to use legacy build system in Xcode, to have your local changes taken into account. To enable it go to Xcode menu and select `File > Workspace Settings… > Build System` and then choose `Legacy Build System`.
### Modify `$matrixKitVersion` after installation of dependencies
@@ -65,7 +69,7 @@ Each time you edit `$matrixKitVersion` variable in the `Podfile` you will have t
### Install dependencies
Before opening the Riot Xcode workspace, you need to install dependencies via CocoaPods.
Before opening the Element Xcode workspace, you need to install dependencies via CocoaPods.
To be sure to use the right CocoaPods version you can use `bundler`:
@@ -82,7 +86,7 @@ $ cd Riot
$ pod install
```
This will load all dependencies for the Riot source code, including [MatrixKit](https://github.com/matrix-org/matrix-ios-kit)
This will load all dependencies for the Element source code, including [MatrixKit](https://github.com/matrix-org/matrix-ios-kit)
and [MatrixSDK](https://github.com/matrix-org/matrix-ios-sdk).
### Open workspace
@@ -95,7 +99,46 @@ $ open Riot.xcworkspace
**Note**: If you have multiple Xcode versions installed don't forget to use the right version of Command Line Tools when you are building the app. To check the Command Line Tools version go to `Xcode > Preferences > Locations > Command Line Tools` and check that the displayed version match your Xcode version.
### Configure project
You may need to change the bundle identifier and app group identifier to be unique to get Xcode to build the app. Make sure to change the application group identifier everywhere by running a search for `group.im.vector` and changing every spot that identifier is used to your new identifier.
You may need to change the bundle identifier and app group identifier to be unique to get Xcode to build the app. Make sure to change the bundle identifier, application group identifier and app name in the `Config/Common.xcconfig` file to your new identifiers.
## Generate IPA
To build the IPA we are currently using [fastlane](https://fastlane.tools/).
**Set your project informations**
Before making the release you need to modify the `fastlane/.env.default` file and set all your project informations like your App ID, Team ID, certificate names and so on.
**Install or update build tools**
The preferred way to use the fastlane script is to use `bundler`, to be sure to use the right dependency versions.
After opening the terminal in the project root folder. The first time you perform a release you need to run:
`bundle install`
For other times:
`bundle update`
**Run fastlane script**
Before executing the release command you need to export your Apple ID in environment variables:
`export APPLE_ID="foo.bar@apple.com"`
To make an App Store release you can directly execute this command:
`bundle exec fastlane app_store build_number:<your_build_number>`
Or you can use the wrapper script located at `/Tools/Release/buildRelease.sh`. For that go to the `Release` folder:
`$ cd ./Tools/Release/`
And then indicate a branch or a tag like this:
`$ ./buildRelease.sh <tag or branch>`