## UI SDK 源码集成 & 自定义修改
以点播 UI SDK 为例

-  clone UI SDK 至 工程同级目录（示例工程为 BJPlayerManagerUITest）。  

 ```objc
 git clone http://git.baijiashilian.com/open-ios/BJVideoPlayerUI.git
 ```
![image](https://img.baijiayun.com/0baijiatools/821dcb03af39f45a2acb2648c793b73e/fileImage.png) 

- clone的UI SDK 可使用 git 跟踪，示例中使用 SourceTree 工具来进行，直接拖入即可，这样可以跟踪到 SDK 的版本更新，再自行决定是否同步到本地。
 ![image](https://img.baijiayun.com/0baijiatools/821dcb03af39f45a2acb2648c793b73e/UISDKFile.png) 
 
![image](https://img.baijiayun.com/0baijiatools/821dcb03af39f45a2acb2648c793b73e/UISDKInSourceTree.png) 

![image](https://img.baijiayun.com/0baijiatools/821dcb03af39f45a2acb2648c793b73e/sourcetree.png) 

-  在BJPlayerManagerUITest工程目录下创建 Podfile，内容如下： 

```objc

	source 'https://github.com/CocoaPods/Specs.git' 
	source 'http://git.baijiashilian.com/open-ios/specs.git' 
	 
	platform :ios, '9.0' 
	target BJPlayerManagerUITest do 
	     
	 pod 'BJVideoPlayerUI/static.source', :path => '../BJVideoPlayerUI/' 
	    
    script_phase \
    :name => '[BJLiveCore] Embed Frameworks',
    :script => 'Pods/BJLiveCore/frameworks/EmbedFrameworks.sh',
    :execution_position => :after_compile

    script_phase \
    :name => '[BJVideoPlayerCore] Embed Frameworks',
    :script => 'Pods/BJVideoPlayerCore/frameworks/EmbedFrameworks.sh', 
    :execution_position => :after_compile
    
    script_phase \
    :name => '[BJLiveBase] Clear Archs From BJHLMediaPlayer Frameworks',
    :script => 'Pods/BJLiveBase/script/ClearArchsFromFrameworks.sh "BJHLMediaPlayer.framework" "BJYIJKMediaFramework.framework"',
    :execution_position => :after_compile
	     
	end 
```

其中“:path => '../ BJVideoPlayerUI/' ”指定的是 UI SDK 相对于工程目录的路径。指定本地相对路径集成，就不用担心自定义的修改在下次执行 pod update 的时候被覆盖掉。

- 在工程目录下执行 pod install，成功之后可以使用 Xcode 打开，看到如下内容说明开源集成已成功： 

 ![image](https://img.baijiayun.com/0baijiatools/821dcb03af39f45a2acb2648c793b73e/xcode.png
) 

- 自定义修改：修改UI SDK的源文件，这里以 BJPUViewController.m 文件为例。 

  ![image](https://img.baijiayun.com/0baijiatools/821dcb03af39f45a2acb2648c793b73e/changeInXcode.png
)  
 
 
本地的修改推荐用 SourceTree 进行管理，同时也可以跟踪到远程仓库的修改。 

 ![image](https://img.baijiayun.com/0baijiatools/821dcb03af39f45a2acb2648c793b73e/changeInSourceTree.png)
  
因为 pod 集成的是本地路径的 UI SDK，所以不用担心本地的修改被覆盖，回放 UI SDK 同理。  

- 仓库管理：我们的 git 迁到国内的域名了，无法使用 fork 的方式。可以新建一个自己的 remote 仓库，添加到本地的 SDK 上，这样就既能管理自己的修改，又能跟踪到我们的更新了。
 
 ![image](https://img.baijiayun.com/0baijiatools/5608f5aa4463cf9226200dcd3c846ea9/addNewRemote.png)
