Commit 4c069f44 authored by DanmeiChen's avatar DanmeiChen

update README.md

parent b70fcd55
......@@ -24,12 +24,10 @@ If you want to dig through Linphone code or report a bug, please read `CONTRIBUT
## How to be a beta tester ?
Enter the Beta :
- Download TestFlight from the App Store and log in it with your apple-id
- Send an email to linphone-iphone@belledonne-communications.com, with object : [Beta test - Request], where you precise your apple-id you logged in TestFlight with
- You will receive an invitation code to the beta in the following days via your email associated to your apple-id
- Enter the invitation code received into TestFlight
- Download Linphone from TestFlight
- And voilà ! TestFlight will send you a notification every time a new beta test is available.
- Download TestFlight from the App Store and log in it with your apple-id
-Tap the public link on your iOS device. The public link : https://testflight.apple.com/join/LUlmZWjH
-Touch View in TestFlight or Start Testing. You can also touch Accept, Install, or Update for Linphone app.
-And voilà ! You can update your beta version with the same public link when a new one is available
Send a crash report :
- It is done automatically by TestFlight
......@@ -46,87 +44,31 @@ Report a bug :
- Change the object to [Beta test - Bug report]
- Send the mail
# Building and customizing the SDK
Linphone for iPhone depends on liblinphone SDK. This SDK is generated from makefiles and shell scripts.
Steps to customize the liblinphone SDK options are:
1. Install [HomeBrew, a package manager for OS X](http://brew.sh) (MacPorts is supported but deprecated).
2. Install Linphone dependencies: open iTerm.app in the current directory and list dependencies to install using:
`./prepare.py`
3. Reorder your path so that brew tools are used instead of Apple's ones which are obsolete:
`export PATH=/usr/local/bin:$PATH`
4. Build SDK (see below for options and explanations):
`./prepare.py -c && ./prepare.py && make`
For instance to generate the liblinphone multi-arch SDK in GPL mode, simply invoke:
./prepare.py [options] && make
**The resulting SDK is located in `liblinphone-sdk/` root directory.**
## Incorporating our SDK in your project
After the SDK has been built, add all the `.framework` files located in `liblinphone-sdk/apple-darwin/Frameworks` to your XCode project Embedded Frameworks and linked binaries.
Make sure that your project FRAMEWORK_SEARCH_PATHS contains "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks"
Make sure that your project LD_RUNPATH_SEARCH_PATHS contains "$(inherited) @executable_path/Frameworks";
Add a Run Script step to your build steps, put it after your step to embed frameworks, set it to use our `deploy.sh` script located in the `Tools` folder of linphone-iphone root directory.
## Licensing: GPL third parties versus non GPL third parties
This SDK can be generated in 2 flavors:
* GPL third parties enabled means that liblinphone includes GPL third parties like FFmpeg. If you choose this flavor, your final application **must comply with GPL in any case**. This is the default mode.
* NO GPL third parties means that Linphone will only use non GPL code except for `liblinphone`, `mediastreamer2`, `oRTP` and `belle-sip`. If you choose this flavor, your final application is **still subject to GPL except if you have a [commercial license for the mentioned libraries](http://www.belledonne-communications.com/products.html)**.
To generate the liblinphone multi arch SDK without GPL third parties, invoke:
./prepare.py -DENABLE_GPL_THIRD_PARTIES=NO -DENABLE_FFMPEG=NO [other options] && make
## Customizing features
You can enable non-free codecs by using `-DENABLE_NON_FREE_CODECS=ON` and `-DENABLE_<codec>=ON`. To get a list of all features, the simplest way is to invoke `prepare.py` with `--list-features`:
./prepare.py --list-features
You can for instance enable X264 using:
./prepare.py -DENABLE_NON_FREE_CODECS=ON -DENABLE_X264=ON [other options]
## Built architectures
4 architectures currently exists on iOS:
- 64 bits ARM64 for iPhone 5s, iPad Air, iPad mini 2, iPhone 6, iPhone 6 Plus, iPad Air 2, iPad mini 3.
- 32 bits ARMv7 for older devices.
- 64 bits x86_64 for simulator for all ARM64 devices.
- 32 bits i386 for simulator for all ARMv7 older devices.
Note: We are not compiling for the 32 bits i386 simulator by default because Xcode default device (iPhone 6) runs in 64 bits. If you want to enable it, you should invoke `prepare.py` with `i386` argument: `./prepare.py i386 [other options]`.
## Upgrading your iOS SDK
# Building the application
Simply re-invoking `make` should update your SDK. If compilation fails, you may need to rebuilding everything by invoking:
## What's new
./prepare.py -c && ./prepare.py [options] && make
Now the default way of building linphone-iphone is to use CocoaPods.
Compared to previous versions, this project no longer uses submodules developper has to build in order to get a working app.
However, if you wish to use a locally compiled SDK see below how to proceed.
# Building the application
## Building the app
After the SDK is built, just open the Linphone Xcode project with Xcode, and press `Run`.
If you don't have CocoaPods, you can download it using :
- sudo gem install cocoapods
## Note regarding third party components subject to license
Build the linphone-iphone :
- pod install
It will download the linphone library from our gitlab repository so you don't have to build anything yourelf.
The liblinphone SDK is compiled with third parties code that are subject to patent license, specially: AMR, SILK G729 and H264 codecs.
Linphone controls the embedding of these codecs by generating dummy libraries when there are not available. You can enable them using `prepare.py`
script (see `-DENABLE_NON_FREE_CODECS=OFF` option). Before embedding these 4 codecs in the final application, **make sure to have the right to do so**.
Then open linphone.xcworkspace file (instead of linphone.xcodeproj) to install the app.
# Testing the application
We are using the KIF framework to test the UI of Linphone. It is used as a submodule (instead of CocoaPods) for ease.
Simply press `⌘U` and the default simulator / device will launch and try to pass all the tests.
We are using the Xcode test navigator to test the UI of Linphone.
Change the Scheme to LinphoneTester. Press the test navigator button and all the tests will show.
See: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/05-running_tests.html
# Limitations and known bugs
......@@ -134,20 +76,18 @@ Simply press `⌘U` and the default simulator / device will launch and try to pa
# Debugging the SDK
Sometime it can be useful to step into liblinphone SDK functions. To allow Xcode to enable breakpoint within liblinphone, SDK must be built with debug symbols by using option `--debug`:
./prepare.py --debug [other options] && make
## Building a local SDK
## Debugging mediastreamer2
-Clone the linphone-sdk repository from out gitlab:
* git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive
For iOS specific media development like audio video capture/playback it may be interesting to use `mediastream` test tool.
You can build it using the following:
-Follow the instructions in the linphone-sdk/README file to build the SDK.
./prepare.py -G Xcode -g && make
# then open the project for a given architecture (here x86_64, to run on simulator):
open WORK/ios-x86_64/Build/linphone_builder/EP_linphone_builder.xcodeproj
-Edit in the Podfile, change the way to pod linphone-sdk.
* For example, replace "pod 'linphone-sdk', '~> 4.1-221-g241bbf9'" by "pod 'linphone-sdk', :path => "<path to linphone-sdk-ios>"".
Then you can select mediastream target and launch it on device. You can configure scheme to pass custom parameters.
-Rebuild the project:
* pod install
# Quick UI reference
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment