session-ios/BUILDING.md

89 lines
2.6 KiB
Markdown
Raw Normal View History

2017-03-16 00:11:24 +01:00
# Building
2017-03-16 00:11:24 +01:00
## 1. Clone
2017-03-16 00:11:24 +01:00
Clone the repo to a working directory
2017-07-21 21:36:19 +02:00
## 2. Dependencies
2017-03-16 00:11:24 +01:00
2017-07-21 21:36:19 +02:00
To build and configure the libraries Signal uses, just run:
2017-03-16 00:11:24 +01:00
```
make dependencies
```
2017-07-21 21:36:19 +02:00
If the above fails to run, or you just want to know more about our
dependency management systems, read the next section, Dependency Details.
Else if the above completed without error - jump ahead to step 3.
2017-03-16 00:11:24 +01:00
### Dependency Details
We have a couple of dependency management tools. We us Carthage for
managing frameworks, but because some of our dependencies are not yet
framework compatible, we use Cocoapods to manage the remainder in a
static library.
2.1) [CocoaPods](http://cocoapods.org) is used to manage the dependencies in our static library. Pods are setup easily and are distributed via a ruby gem. Follow the simple instructions on the website to setup. After setup, run the following command from the toplevel directory of Signal-iOS to download the dependencies for Signal-iOS:
```
pod install
```
2017-03-16 00:11:24 +01:00
If you are having build issues, first make sure your pods are up to date
2017-03-16 00:11:24 +01:00
```
2017-03-16 00:11:24 +01:00
pod repo update
pod install
```
2017-03-16 00:11:24 +01:00
2017-07-21 21:36:19 +02:00
Occasionally, CocoaPods itself will need to be updated. Do this with
2017-03-16 00:11:24 +01:00
```
2017-03-16 00:11:24 +01:00
gem update cocoapods
pod repo update
pod install
```
2017-03-16 00:11:24 +01:00
2.2) Framework dependencies are built and managed using [Carthage](https://github.com/Carthage/Carthage). Our prebuilt WebRTC.framework also resides in the Carthage/Build directory.
If you don't have carthage, here are the [install instructions](https://github.com/Carthage/Carthage#installing-carthage).
Once Carthage is installed, run:
```
// DO NOT run: `carthage update` or `carthage checkout`.
git submodule update --init
2017-03-16 00:11:24 +01:00
carthage build --platform iOS
```
2017-07-21 21:36:19 +02:00
### Building WebRTC
A prebuilt version of WebRTC.framework resides in our Carthage submodule
and should be installed by the above steps. However, if you'd like to
build it from source, see: https://github.com/WhisperSystems/signal-webrtc-ios
2017-03-16 00:11:24 +01:00
## 3. XCode
2017-03-16 00:11:24 +01:00
Open the `Signal.xcworkspace` in Xcode.
```
open Signal.xcworkspace
```
2017-03-16 00:11:24 +01:00
In the Signal target on the General tab, change the Team drop down to
2017-07-21 21:36:19 +02:00
your own. You will need an Apple Developer account for that. On the
Capabilities tab turn off Push Notifications and Data Protection. Only
Background Modes should remain on.
2017-03-16 00:11:24 +01:00
Build and Run and you are ready to go!
## Known issues
2017-07-21 21:36:19 +02:00
Features related to push notifications are known to be not working for
third-party contributors since Apple's Push Notification service pushes
will only work with Open Whisper Systems production code signing
certificate.
2017-03-16 00:11:24 +01:00
If you have any other issues, please ask on the [community forum](https://whispersystems.discoursehosting.net/).