Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3882bc9438 | |||
| 89c4f4755d | |||
| 87cdb24a24 | |||
| f400ad9883 | |||
| a53096df50 | |||
| 4720991d0f | |||
| ca661f1996 | |||
| 5ba8f4db04 | |||
| 34c5cac889 | |||
| 3729921bed | |||
| ce3a42f41a | |||
| 92e00745d7 | |||
| c7ef4c2ebc | |||
| 75b2a10881 | |||
| e60bd3bd3b | |||
| a95c54eb56 | |||
| af54544cbe | |||
| 54003387d5 | |||
| f441a7a03e | |||
| ad04383a32 | |||
| 46d34ae58f | |||
| 6dce0ee5b4 | |||
| a9a9627ce9 | |||
| 70eb3f5039 | |||
| b3ec050d8f | |||
| bea45df706 | |||
| 03482bccda | |||
| 01f34b57e5 | |||
| a83cf1fb3a | |||
| 1b09629f9d | |||
| 97f17e3362 | |||
| 72aec6efa8 | |||
| 708c945840 | |||
| a60a1da448 | |||
| 90530c4961 | |||
| 7f7f2157fd | |||
| 2a11f34165 | |||
| 0a28c0cc1b | |||
| a31eafca1f | |||
| 6e8446675e | |||
| dd3f9937b2 | |||
| fb7879346a | |||
| 393e659cf0 | |||
| 17c04841dd | |||
| 19328921bb | |||
| 14f1e26dfd | |||
| a031f37000 | |||
| ceeb22419f | |||
| c02d5aba36 | |||
| 9490ecc197 | |||
| d9fd6ec9e0 | |||
| bd27ed90de |
@@ -0,0 +1,50 @@
|
||||
version: 2
|
||||
|
||||
jobs:
|
||||
build-and-test:
|
||||
environment:
|
||||
BUNDLE_PATH: vendor/bundle
|
||||
FL_OUTPUT_DIR: output
|
||||
macos:
|
||||
xcode: "10.1.0"
|
||||
working_directory: ~/PlayerKit
|
||||
shell: /bin/bash --login -o pipefail
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
|
||||
- restore_cache:
|
||||
key: v1-gems-{{ checksum "Gemfile.lock" }}
|
||||
|
||||
- run:
|
||||
name: Set Ruby version
|
||||
command: echo "ruby-2.4" > ~/.ruby-version
|
||||
|
||||
- run:
|
||||
name: Install bundler dependencies
|
||||
command: bundle install --path vendor/bundle
|
||||
|
||||
- run:
|
||||
name: Build and run tests
|
||||
command: bundle exec fastlane ios test
|
||||
environment:
|
||||
SCAN_DEVICE: iPhone 8
|
||||
SCAN_SCHEME: PlayerKit-Example
|
||||
|
||||
- save_cache:
|
||||
paths:
|
||||
- vendor/bundle
|
||||
key: v1-gems-{{ checksum "Gemfile.lock" }}
|
||||
|
||||
- store_artifacts:
|
||||
path: output
|
||||
|
||||
- store_test_results:
|
||||
path: output/scan
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
build:
|
||||
jobs:
|
||||
- build-and-test
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ playground.xcworkspace
|
||||
.build/
|
||||
|
||||
# CocoaPods
|
||||
Pods
|
||||
# Pods
|
||||
|
||||
# Carthage
|
||||
#
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
4.0
|
||||
@@ -0,0 +1,42 @@
|
||||
# Copyright © 2018 Vimeo. All rights reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
# Run `swiftlint rules` for a list of available rules.
|
||||
|
||||
# Only the rules specified here will be enabled.
|
||||
whitelist_rules:
|
||||
- trailing_newline
|
||||
- trailing_whitespace
|
||||
- opening_brace
|
||||
|
||||
# Paths to include during linting.
|
||||
included:
|
||||
- ../PlayerKit/Classes
|
||||
- ../Example
|
||||
|
||||
# Paths to exclude during linting.
|
||||
excluded:
|
||||
- Pods
|
||||
|
||||
# Configurable rules can be customized from this configuration file,
|
||||
# binary rules can set their severity level.
|
||||
trailing_whitespace:
|
||||
ignores_empty_lines: true
|
||||
|
||||
@@ -172,6 +172,7 @@
|
||||
39DBB93200760D1BB486C4CC /* [CP] Check Pods Manifest.lock */,
|
||||
607FACCC1AFB9204008FA782 /* Sources */,
|
||||
607FACCD1AFB9204008FA782 /* Frameworks */,
|
||||
0C1455B6219DDFB7006442F3 /* ShellScript */,
|
||||
607FACCE1AFB9204008FA782 /* Resources */,
|
||||
AEEB7FDEAB18BB5B2C3B7E51 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
@@ -216,12 +217,12 @@
|
||||
607FACCF1AFB9204008FA782 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
LastSwiftMigration = 0900;
|
||||
LastSwiftMigration = 1010;
|
||||
};
|
||||
607FACE41AFB9204008FA782 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
LastSwiftMigration = 0900;
|
||||
LastSwiftMigration = 1010;
|
||||
TestTargetID = 607FACCF1AFB9204008FA782;
|
||||
};
|
||||
};
|
||||
@@ -231,6 +232,7 @@
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
English,
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
@@ -267,6 +269,19 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
0C1455B6219DDFB7006442F3 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "WORKSPACE_ROOT=$( cd \"$(dirname \"${SRCROOT[0]}\")\" ; pwd -P )\n\nif which \"$PODS_ROOT\"/SwiftLint/swiftlint > /dev/null; then\n \"$PODS_ROOT\"/SwiftLint/swiftlint autocorrect --config \"$WORKSPACE_ROOT\"/.swiftlint.yml\nelse\n echo \"Warning: SwiftLint is not installed. Make sure you've run `bundle exec pod install`.\"\nfi\n";
|
||||
};
|
||||
39DBB93200760D1BB486C4CC /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -407,7 +422,7 @@
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.2;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -447,7 +462,7 @@
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.2;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
@@ -456,7 +471,6 @@
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9D69DB7C6B7F626E6391E3FA /* Pods-PlayerKit_Example.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = PlayerKit/Info.plist;
|
||||
@@ -464,8 +478,6 @@
|
||||
MODULE_NAME = ExampleApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
@@ -474,7 +486,6 @@
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = CF08222175BD5B0E142D343A /* Pods-PlayerKit_Example.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = PlayerKit/Info.plist;
|
||||
@@ -482,8 +493,6 @@
|
||||
MODULE_NAME = ExampleApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
@@ -502,8 +511,6 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -517,8 +524,6 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
@@ -70,7 +69,6 @@
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
|
||||
@@ -13,8 +13,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
|
||||
{
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
self.window = UIWindow(frame: UIScreen.main.bounds)
|
||||
self.window?.rootViewController = PlayerViewController()
|
||||
self.window?.makeKeyAndVisible()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<string>1.4.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
||||
@@ -10,10 +10,8 @@ import UIKit
|
||||
import PlayerKit
|
||||
import AVFoundation
|
||||
|
||||
class PlayerViewController: UIViewController, PlayerDelegate
|
||||
{
|
||||
private struct Constants
|
||||
{
|
||||
class PlayerViewController: UIViewController, PlayerDelegate {
|
||||
private struct Constants {
|
||||
static let VideoURL = URL(string: "https://github.com/vimeo/PlayerKit/blob/master/Example/PlayerKit/video.mp4?raw=true")!
|
||||
}
|
||||
|
||||
@@ -24,8 +22,7 @@ class PlayerViewController: UIViewController, PlayerDelegate
|
||||
|
||||
private let player = RegularPlayer()
|
||||
|
||||
override func viewDidLoad()
|
||||
{
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
player.delegate = self
|
||||
@@ -37,8 +34,7 @@ class PlayerViewController: UIViewController, PlayerDelegate
|
||||
|
||||
// MARK: Setup
|
||||
|
||||
private func addPlayerToView()
|
||||
{
|
||||
private func addPlayerToView() {
|
||||
player.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
|
||||
player.view.frame = self.view.bounds
|
||||
self.view.insertSubview(player.view, at: 0)
|
||||
@@ -46,13 +42,11 @@ class PlayerViewController: UIViewController, PlayerDelegate
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
@IBAction func didTapPlayButton()
|
||||
{
|
||||
@IBAction func didTapPlayButton() {
|
||||
self.player.playing ? self.player.pause() : self.player.play()
|
||||
}
|
||||
|
||||
@IBAction func didChangeSliderValue()
|
||||
{
|
||||
@IBAction func didChangeSliderValue() {
|
||||
let value = Double(self.slider.value)
|
||||
|
||||
let time = value * self.player.duration
|
||||
@@ -62,12 +56,10 @@ class PlayerViewController: UIViewController, PlayerDelegate
|
||||
|
||||
// MARK: VideoPlayerDelegate
|
||||
|
||||
func playerDidUpdateState(player: Player, previousState: PlayerState)
|
||||
{
|
||||
func playerDidUpdateState(player: Player, previousState: PlayerState) {
|
||||
self.activityIndicator.isHidden = true
|
||||
|
||||
switch player.state
|
||||
{
|
||||
switch player.state {
|
||||
case .loading:
|
||||
|
||||
self.activityIndicator.isHidden = false
|
||||
@@ -82,30 +74,24 @@ class PlayerViewController: UIViewController, PlayerDelegate
|
||||
}
|
||||
}
|
||||
|
||||
func playerDidUpdatePlaying(player: Player)
|
||||
{
|
||||
func playerDidUpdatePlaying(player: Player) {
|
||||
self.playButton.isSelected = player.playing
|
||||
}
|
||||
|
||||
func playerDidUpdateTime(player: Player)
|
||||
{
|
||||
guard player.duration > 0 else
|
||||
{
|
||||
func playerDidUpdateTime(player: Player) {
|
||||
guard player.duration > 0 else {
|
||||
return
|
||||
}
|
||||
|
||||
let ratio = player.time / player.duration
|
||||
|
||||
if self.slider.isHighlighted == false
|
||||
{
|
||||
if self.slider.isHighlighted == false {
|
||||
self.slider.value = Float(ratio)
|
||||
}
|
||||
}
|
||||
|
||||
func playerDidUpdateBufferedTime(player: Player)
|
||||
{
|
||||
guard player.duration > 0 else
|
||||
{
|
||||
func playerDidUpdateBufferedTime(player: Player) {
|
||||
guard player.duration > 0 else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
+8
-6
@@ -1,10 +1,12 @@
|
||||
use_frameworks!
|
||||
|
||||
platform :ios, '8.0'
|
||||
|
||||
target 'PlayerKit_Example' do
|
||||
pod 'PlayerKit', :path => '../'
|
||||
|
||||
target 'PlayerKit_Tests' do
|
||||
inherit! :search_paths
|
||||
|
||||
end
|
||||
pod 'PlayerKit', :path => '../'
|
||||
pod 'SwiftLint', '0.28.0'
|
||||
|
||||
target 'PlayerKit_Tests' do
|
||||
inherit! :search_paths
|
||||
end
|
||||
end
|
||||
|
||||
+10
-3
@@ -1,16 +1,23 @@
|
||||
PODS:
|
||||
- PlayerKit (1.2.0)
|
||||
- PlayerKit (1.3.0)
|
||||
- SwiftLint (0.28.0)
|
||||
|
||||
DEPENDENCIES:
|
||||
- PlayerKit (from `../`)
|
||||
- SwiftLint (= 0.28.0)
|
||||
|
||||
SPEC REPOS:
|
||||
https://github.com/cocoapods/specs.git:
|
||||
- SwiftLint
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
PlayerKit:
|
||||
:path: "../"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
PlayerKit: ff4e4cd4c216d60ebcfccf3a68772d6299373e5a
|
||||
PlayerKit: 16dbe4196fbd6cbc0e677026d13ffb5fb80276fb
|
||||
SwiftLint: 088cfacb75b45970017e62b7524d506776d60148
|
||||
|
||||
PODFILE CHECKSUM: 071d8819500a822237123321021901352f4d91a4
|
||||
PODFILE CHECKSUM: 90f31c00641fb4d5e9453ba687a3a06a32cca83f
|
||||
|
||||
COCOAPODS: 1.5.2
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "PlayerKit",
|
||||
"version": "1.4.0",
|
||||
"summary": "A modular video player system.",
|
||||
"description": "PlayerKit is a modular video player system for iOS and tvOS.",
|
||||
"homepage": "https://github.com/vimeo/PlayerKit",
|
||||
"license": {
|
||||
"type": "MIT",
|
||||
"file": "LICENSE"
|
||||
},
|
||||
"authors": {
|
||||
"Gavin King": "gavin@vimeo.com"
|
||||
},
|
||||
"source": {
|
||||
"git": "https://github.com/vimeo/PlayerKit.git",
|
||||
"tag": "1.4.0"
|
||||
},
|
||||
"platforms": {
|
||||
"ios": "8.0",
|
||||
"tvos": "9.0"
|
||||
},
|
||||
"swift_version": "4.2",
|
||||
"source_files": "PlayerKit/Classes/**/*"
|
||||
}
|
||||
Generated
+23
@@ -0,0 +1,23 @@
|
||||
PODS:
|
||||
- PlayerKit (1.4.0)
|
||||
- SwiftLint (0.28.0)
|
||||
|
||||
DEPENDENCIES:
|
||||
- PlayerKit (from `../`)
|
||||
- SwiftLint (= 0.28.0)
|
||||
|
||||
SPEC REPOS:
|
||||
https://github.com/cocoapods/specs.git:
|
||||
- SwiftLint
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
PlayerKit:
|
||||
:path: "../"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
PlayerKit: 9050662f1f359624b860ee9bbdd6d5292a1cde37
|
||||
SwiftLint: 088cfacb75b45970017e62b7524d506776d60148
|
||||
|
||||
PODFILE CHECKSUM: 90f31c00641fb4d5e9453ba687a3a06a32cca83f
|
||||
|
||||
COCOAPODS: 1.5.2
|
||||
+808
@@ -0,0 +1,808 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
38F9ED3A57811F1A308F3F4C95982249 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; };
|
||||
6403F8D0355F843A5963BF588FA44C29 /* PlayerKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E36FBD34DFE09FE1165C376E0F9DFF8F /* PlayerKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
6B43E50C44229EC87C348F85E7A5E6C2 /* CMTime+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EED6B7D6D151042A470D13A89263B1B /* CMTime+Utilities.swift */; };
|
||||
6DA44A7CF78912979685D2D79D2E9C65 /* Pods-PlayerKit_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E4FEEE8C88FE06A508DDF8D8FBC9692 /* Pods-PlayerKit_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
82952A5429F44FF0A548589EE9FA5954 /* Player.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81E25C10B525917094FBA06BB66C810 /* Player.swift */; };
|
||||
A644FA311C388E857AD8BEB09ADFEFA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; };
|
||||
B0DB1CDBEA51A9EE025B4D55F7A2D6E8 /* AVPlayer+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647AB81B8201A5309944A6B07F03800A /* AVPlayer+Utilities.swift */; };
|
||||
B496EE723BB3516E48D50435CF745948 /* Pods-PlayerKit_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2308CA2421E1CC63664308B4845E9D7 /* Pods-PlayerKit_Tests-dummy.m */; };
|
||||
DC12A8C2659636EAE661FBE5C3F31C09 /* PlayerKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CB748C07369113D58731585C6B511C4F /* PlayerKit-dummy.m */; };
|
||||
E01BBFC24DA9A096BD05BE5E6AF9CD67 /* Pods-PlayerKit_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B473A3F0ED86C67C27AEFA87458EE6C /* Pods-PlayerKit_Example-dummy.m */; };
|
||||
E4F9E25CA9B19850E15EF2DBC720348B /* Pods-PlayerKit_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E29BE6B251CD6D79E79E5E029B4A287 /* Pods-PlayerKit_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E7AD548CD2EDE4A651211CEB35EA5191 /* RegularPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3725D33F4E0C6E70C1B18C94438A0C8 /* RegularPlayer.swift */; };
|
||||
F52020FFE1559A2A145002AF52425752 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
40F3BFEB7BEE775A5E1965175355A1D2 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 47CFA9C8B27D2DECB40B0854D4C0F6C8;
|
||||
remoteInfo = "Pods-PlayerKit_Example";
|
||||
};
|
||||
4643C73692A30D991FACD5705891F436 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 6EBFB3A0DE393574923D72A46AD0295B;
|
||||
remoteInfo = PlayerKit;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0326B6EAFBB722F5E1820CCFC5DB2E86 /* Pods-PlayerKit_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PlayerKit_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||
0756DB753105EC148891AF3F42C48C0D /* Pods-PlayerKit_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PlayerKit_Example-resources.sh"; sourceTree = "<group>"; };
|
||||
15086E1488C28FA85A16A3B3E5E40E69 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
|
||||
168252682F1FF51DD697AE3912A04B22 /* Pods-PlayerKit_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PlayerKit_Example.release.xcconfig"; sourceTree = "<group>"; };
|
||||
264DCF0F4FC02539EA68FC513DB560D7 /* Pods-PlayerKit_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PlayerKit_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||
2B473A3F0ED86C67C27AEFA87458EE6C /* Pods-PlayerKit_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PlayerKit_Example-dummy.m"; sourceTree = "<group>"; };
|
||||
2E29BE6B251CD6D79E79E5E029B4A287 /* Pods-PlayerKit_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-PlayerKit_Example-umbrella.h"; sourceTree = "<group>"; };
|
||||
30AC187F3466792841AED1601CE42ACE /* Pods-PlayerKit_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PlayerKit_Example-frameworks.sh"; sourceTree = "<group>"; };
|
||||
3478DCB015CE7A98C70C28E89592E93C /* Pods-PlayerKit_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-PlayerKit_Tests.modulemap"; sourceTree = "<group>"; };
|
||||
3EED6B7D6D151042A470D13A89263B1B /* CMTime+Utilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CMTime+Utilities.swift"; path = "PlayerKit/Classes/CMTime+Utilities.swift"; sourceTree = "<group>"; };
|
||||
408288F17259916D7697A2C351148FA7 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
42916E1B07A1D5F46CBE04703C2D4E7B /* Pods-PlayerKit_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PlayerKit_Tests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
4616544429EEFE729ECF9942ABAE8C96 /* Pods-PlayerKit_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PlayerKit_Example.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
62CFB1A4EEA86DBF183DA7B5AA44E25D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
647AB81B8201A5309944A6B07F03800A /* AVPlayer+Utilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AVPlayer+Utilities.swift"; path = "PlayerKit/Classes/AVPlayer+Utilities.swift"; sourceTree = "<group>"; };
|
||||
699457C8F54A395D774C46C2F1E99967 /* PlayerKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PlayerKit-prefix.pch"; sourceTree = "<group>"; };
|
||||
6AB858D7AB5BFC8A873C6B80AFA9331F /* Pods-PlayerKit_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PlayerKit_Tests-resources.sh"; sourceTree = "<group>"; };
|
||||
6FAEA9974981ABE4E89122E1F8722C8C /* Pods-PlayerKit_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PlayerKit_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||
7214728455310B721CF87A4D7F953000 /* PlayerKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PlayerKit.xcconfig; sourceTree = "<group>"; };
|
||||
8618200507945480EE11729817307EE4 /* PlayerKit.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = PlayerKit.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
894BE04397185BBF9217681B81129CAD /* PlayerKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PlayerKit.modulemap; sourceTree = "<group>"; };
|
||||
8DBD6B97978801E14CBABA3F045D92A7 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
|
||||
8E4FEEE8C88FE06A508DDF8D8FBC9692 /* Pods-PlayerKit_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-PlayerKit_Tests-umbrella.h"; sourceTree = "<group>"; };
|
||||
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
95F163B46977B67F2ADE7065D70EB7C6 /* Pods_PlayerKit_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_PlayerKit_Example.framework; path = "Pods-PlayerKit_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9CE0789FD2692402AE269865C19AF1A2 /* Pods_PlayerKit_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_PlayerKit_Tests.framework; path = "Pods-PlayerKit_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A81E25C10B525917094FBA06BB66C810 /* Player.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Player.swift; path = PlayerKit/Classes/Player.swift; sourceTree = "<group>"; };
|
||||
C88B11F3A3D6F1F6FB5BA49DE538638C /* Pods-PlayerKit_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PlayerKit_Example-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||
CB748C07369113D58731585C6B511C4F /* PlayerKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PlayerKit-dummy.m"; sourceTree = "<group>"; };
|
||||
CFFFCAD90FD37E9FAF67F1B696A0D6EA /* Pods-PlayerKit_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PlayerKit_Tests-frameworks.sh"; sourceTree = "<group>"; };
|
||||
D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||
E2308CA2421E1CC63664308B4845E9D7 /* Pods-PlayerKit_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PlayerKit_Tests-dummy.m"; sourceTree = "<group>"; };
|
||||
E36FBD34DFE09FE1165C376E0F9DFF8F /* PlayerKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PlayerKit-umbrella.h"; sourceTree = "<group>"; };
|
||||
E3725D33F4E0C6E70C1B18C94438A0C8 /* RegularPlayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RegularPlayer.swift; path = PlayerKit/Classes/RegularPlayer.swift; sourceTree = "<group>"; };
|
||||
E60A728C458CA3E4CE98F05A1CDEFA6E /* Pods-PlayerKit_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PlayerKit_Tests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
E94E1F91B812C2EE70C70222C2AFCF7A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
EB68EA72CB3C46D1D4D5ED14C2493868 /* Pods-PlayerKit_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-PlayerKit_Example.modulemap"; sourceTree = "<group>"; };
|
||||
F617916B60EF85E2F30E85331542CEAB /* PlayerKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PlayerKit.framework; path = PlayerKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
5EE4A50FB943DA53DE0CBA3779D1A2B4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
38F9ED3A57811F1A308F3F4C95982249 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
C659EC887B6F339D0D8DBDE4100D1B24 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F52020FFE1559A2A145002AF52425752 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DE04CDCB4EE437A709F86AD1DCB90AB1 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A644FA311C388E857AD8BEB09ADFEFA2 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
081B2BD03B4C7112458A9DA4DFCCD331 /* Pods-PlayerKit_Example */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
62CFB1A4EEA86DBF183DA7B5AA44E25D /* Info.plist */,
|
||||
EB68EA72CB3C46D1D4D5ED14C2493868 /* Pods-PlayerKit_Example.modulemap */,
|
||||
6FAEA9974981ABE4E89122E1F8722C8C /* Pods-PlayerKit_Example-acknowledgements.markdown */,
|
||||
C88B11F3A3D6F1F6FB5BA49DE538638C /* Pods-PlayerKit_Example-acknowledgements.plist */,
|
||||
2B473A3F0ED86C67C27AEFA87458EE6C /* Pods-PlayerKit_Example-dummy.m */,
|
||||
30AC187F3466792841AED1601CE42ACE /* Pods-PlayerKit_Example-frameworks.sh */,
|
||||
0756DB753105EC148891AF3F42C48C0D /* Pods-PlayerKit_Example-resources.sh */,
|
||||
2E29BE6B251CD6D79E79E5E029B4A287 /* Pods-PlayerKit_Example-umbrella.h */,
|
||||
4616544429EEFE729ECF9942ABAE8C96 /* Pods-PlayerKit_Example.debug.xcconfig */,
|
||||
168252682F1FF51DD697AE3912A04B22 /* Pods-PlayerKit_Example.release.xcconfig */,
|
||||
);
|
||||
name = "Pods-PlayerKit_Example";
|
||||
path = "Target Support Files/Pods-PlayerKit_Example";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
182FF72076E5AC0A7F5D823E51DFB379 /* Targets Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
081B2BD03B4C7112458A9DA4DFCCD331 /* Pods-PlayerKit_Example */,
|
||||
E3C8024433056B385ADC0B6D1B486F8C /* Pods-PlayerKit_Tests */,
|
||||
);
|
||||
name = "Targets Support Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
209501EE150AB15B0EC8230E7F75FB62 /* Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E94E1F91B812C2EE70C70222C2AFCF7A /* Info.plist */,
|
||||
894BE04397185BBF9217681B81129CAD /* PlayerKit.modulemap */,
|
||||
7214728455310B721CF87A4D7F953000 /* PlayerKit.xcconfig */,
|
||||
CB748C07369113D58731585C6B511C4F /* PlayerKit-dummy.m */,
|
||||
699457C8F54A395D774C46C2F1E99967 /* PlayerKit-prefix.pch */,
|
||||
E36FBD34DFE09FE1165C376E0F9DFF8F /* PlayerKit-umbrella.h */,
|
||||
);
|
||||
name = "Support Files";
|
||||
path = "Example/Pods/Target Support Files/PlayerKit";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2E36CDDA3B361D440ABBFF74F3E77273 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F617916B60EF85E2F30E85331542CEAB /* PlayerKit.framework */,
|
||||
95F163B46977B67F2ADE7065D70EB7C6 /* Pods_PlayerKit_Example.framework */,
|
||||
9CE0789FD2692402AE269865C19AF1A2 /* Pods_PlayerKit_Tests.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
32A23E08346748F1793F899C5FF672C1 /* SwiftLint */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = SwiftLint;
|
||||
path = SwiftLint;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
44D5347904CF754D6785B84253F2574A /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */,
|
||||
);
|
||||
name = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6D9E68EE11A612523061BC865FD34B63 /* Pod */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
15086E1488C28FA85A16A3B3E5E40E69 /* LICENSE */,
|
||||
8618200507945480EE11729817307EE4 /* PlayerKit.podspec */,
|
||||
8DBD6B97978801E14CBABA3F045D92A7 /* README.md */,
|
||||
);
|
||||
name = Pod;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7DB346D0F39D3F0E887471402A8071AB = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,
|
||||
BEA07D07F7724F408414E72CECC4833A /* Development Pods */,
|
||||
BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */,
|
||||
9758CC519AE2C57A9659FFC01AAD26F9 /* Pods */,
|
||||
2E36CDDA3B361D440ABBFF74F3E77273 /* Products */,
|
||||
182FF72076E5AC0A7F5D823E51DFB379 /* Targets Support Files */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9758CC519AE2C57A9659FFC01AAD26F9 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32A23E08346748F1793F899C5FF672C1 /* SwiftLint */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A6D6B49956E28E153D9A93DFE83C9949 /* PlayerKit */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
647AB81B8201A5309944A6B07F03800A /* AVPlayer+Utilities.swift */,
|
||||
3EED6B7D6D151042A470D13A89263B1B /* CMTime+Utilities.swift */,
|
||||
A81E25C10B525917094FBA06BB66C810 /* Player.swift */,
|
||||
E3725D33F4E0C6E70C1B18C94438A0C8 /* RegularPlayer.swift */,
|
||||
6D9E68EE11A612523061BC865FD34B63 /* Pod */,
|
||||
209501EE150AB15B0EC8230E7F75FB62 /* Support Files */,
|
||||
);
|
||||
name = PlayerKit;
|
||||
path = ../..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
44D5347904CF754D6785B84253F2574A /* iOS */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BEA07D07F7724F408414E72CECC4833A /* Development Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A6D6B49956E28E153D9A93DFE83C9949 /* PlayerKit */,
|
||||
);
|
||||
name = "Development Pods";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E3C8024433056B385ADC0B6D1B486F8C /* Pods-PlayerKit_Tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
408288F17259916D7697A2C351148FA7 /* Info.plist */,
|
||||
3478DCB015CE7A98C70C28E89592E93C /* Pods-PlayerKit_Tests.modulemap */,
|
||||
264DCF0F4FC02539EA68FC513DB560D7 /* Pods-PlayerKit_Tests-acknowledgements.markdown */,
|
||||
0326B6EAFBB722F5E1820CCFC5DB2E86 /* Pods-PlayerKit_Tests-acknowledgements.plist */,
|
||||
E2308CA2421E1CC63664308B4845E9D7 /* Pods-PlayerKit_Tests-dummy.m */,
|
||||
CFFFCAD90FD37E9FAF67F1B696A0D6EA /* Pods-PlayerKit_Tests-frameworks.sh */,
|
||||
6AB858D7AB5BFC8A873C6B80AFA9331F /* Pods-PlayerKit_Tests-resources.sh */,
|
||||
8E4FEEE8C88FE06A508DDF8D8FBC9692 /* Pods-PlayerKit_Tests-umbrella.h */,
|
||||
42916E1B07A1D5F46CBE04703C2D4E7B /* Pods-PlayerKit_Tests.debug.xcconfig */,
|
||||
E60A728C458CA3E4CE98F05A1CDEFA6E /* Pods-PlayerKit_Tests.release.xcconfig */,
|
||||
);
|
||||
name = "Pods-PlayerKit_Tests";
|
||||
path = "Target Support Files/Pods-PlayerKit_Tests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
62F504138C6CD3AB5A2A125C59B58D14 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6DA44A7CF78912979685D2D79D2E9C65 /* Pods-PlayerKit_Tests-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8A9065F8194EFF8CCDC7E62D4AA09099 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6403F8D0355F843A5963BF588FA44C29 /* PlayerKit-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
950248447635A24BCFDFC6F4AB6B1DD8 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E4F9E25CA9B19850E15EF2DBC720348B /* Pods-PlayerKit_Example-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
47CFA9C8B27D2DECB40B0854D4C0F6C8 /* Pods-PlayerKit_Example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DC593BF9B16FFC2DBE7AF764939026D9 /* Build configuration list for PBXNativeTarget "Pods-PlayerKit_Example" */;
|
||||
buildPhases = (
|
||||
950248447635A24BCFDFC6F4AB6B1DD8 /* Headers */,
|
||||
7743D6DEA3CF143045F25D87F35C49F9 /* Sources */,
|
||||
DE04CDCB4EE437A709F86AD1DCB90AB1 /* Frameworks */,
|
||||
B57F66AE57B406C6AC4B0004CB02759A /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
BE1B5BB2FC18AC6596071F816EC20338 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Pods-PlayerKit_Example";
|
||||
productName = "Pods-PlayerKit_Example";
|
||||
productReference = 95F163B46977B67F2ADE7065D70EB7C6 /* Pods_PlayerKit_Example.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
6EBFB3A0DE393574923D72A46AD0295B /* PlayerKit */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4BCA7E54E81F4EFE6A9B800122800FF5 /* Build configuration list for PBXNativeTarget "PlayerKit" */;
|
||||
buildPhases = (
|
||||
8A9065F8194EFF8CCDC7E62D4AA09099 /* Headers */,
|
||||
127DE71D837A12234DEE8EB50F02E578 /* Sources */,
|
||||
5EE4A50FB943DA53DE0CBA3779D1A2B4 /* Frameworks */,
|
||||
192B7FD8E6D3F52749A89716346FC7A4 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = PlayerKit;
|
||||
productName = PlayerKit;
|
||||
productReference = F617916B60EF85E2F30E85331542CEAB /* PlayerKit.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
ED7F46ED3387E1E32D68E07B52937D0F /* Pods-PlayerKit_Tests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8C2BD57BB4AC42DC437158788CE61872 /* Build configuration list for PBXNativeTarget "Pods-PlayerKit_Tests" */;
|
||||
buildPhases = (
|
||||
62F504138C6CD3AB5A2A125C59B58D14 /* Headers */,
|
||||
072CBC0CCE840A2E5E8085D486B5A989 /* Sources */,
|
||||
C659EC887B6F339D0D8DBDE4100D1B24 /* Frameworks */,
|
||||
DF0583138298C10C9671A990C9CC1EB5 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
C391A34F07BBD4739C22DC5ECCEEE675 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Pods-PlayerKit_Tests";
|
||||
productName = "Pods-PlayerKit_Tests";
|
||||
productReference = 9CE0789FD2692402AE269865C19AF1A2 /* Pods_PlayerKit_Tests.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
D41D8CD98F00B204E9800998ECF8427E /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0930;
|
||||
LastUpgradeCheck = 0930;
|
||||
};
|
||||
buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 7DB346D0F39D3F0E887471402A8071AB;
|
||||
productRefGroup = 2E36CDDA3B361D440ABBFF74F3E77273 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
6EBFB3A0DE393574923D72A46AD0295B /* PlayerKit */,
|
||||
47CFA9C8B27D2DECB40B0854D4C0F6C8 /* Pods-PlayerKit_Example */,
|
||||
ED7F46ED3387E1E32D68E07B52937D0F /* Pods-PlayerKit_Tests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
192B7FD8E6D3F52749A89716346FC7A4 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B57F66AE57B406C6AC4B0004CB02759A /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DF0583138298C10C9671A990C9CC1EB5 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
072CBC0CCE840A2E5E8085D486B5A989 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B496EE723BB3516E48D50435CF745948 /* Pods-PlayerKit_Tests-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
127DE71D837A12234DEE8EB50F02E578 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B0DB1CDBEA51A9EE025B4D55F7A2D6E8 /* AVPlayer+Utilities.swift in Sources */,
|
||||
6B43E50C44229EC87C348F85E7A5E6C2 /* CMTime+Utilities.swift in Sources */,
|
||||
82952A5429F44FF0A548589EE9FA5954 /* Player.swift in Sources */,
|
||||
DC12A8C2659636EAE661FBE5C3F31C09 /* PlayerKit-dummy.m in Sources */,
|
||||
E7AD548CD2EDE4A651211CEB35EA5191 /* RegularPlayer.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
7743D6DEA3CF143045F25D87F35C49F9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E01BBFC24DA9A096BD05BE5E6AF9CD67 /* Pods-PlayerKit_Example-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
BE1B5BB2FC18AC6596071F816EC20338 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = PlayerKit;
|
||||
target = 6EBFB3A0DE393574923D72A46AD0295B /* PlayerKit */;
|
||||
targetProxy = 4643C73692A30D991FACD5705891F436 /* PBXContainerItemProxy */;
|
||||
};
|
||||
C391A34F07BBD4739C22DC5ECCEEE675 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = "Pods-PlayerKit_Example";
|
||||
target = 47CFA9C8B27D2DECB40B0854D4C0F6C8 /* Pods-PlayerKit_Example */;
|
||||
targetProxy = 40F3BFEB7BEE775A5E1965175355A1D2 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
4694D15D5279519D909D634F325D49DE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 4616544429EEFE729ECF9942ABAE8C96 /* Pods-PlayerKit_Example.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-PlayerKit_Example/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-PlayerKit_Example/Pods-PlayerKit_Example.modulemap";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
64C0355B683DEB7927A3A4683B45B640 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7214728455310B721CF87A4D7F953000 /* PlayerKit.xcconfig */;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
GCC_PREFIX_HEADER = "Target Support Files/PlayerKit/PlayerKit-prefix.pch";
|
||||
INFOPLIST_FILE = "Target Support Files/PlayerKit/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MODULEMAP_FILE = "Target Support Files/PlayerKit/PlayerKit.modulemap";
|
||||
PRODUCT_MODULE_NAME = PlayerKit;
|
||||
PRODUCT_NAME = PlayerKit;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
85B95B1234E227C814CCC2C7902D0916 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGNING_ALLOWED = NO;
|
||||
CODE_SIGNING_REQUIRED = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"POD_CONFIGURATION_RELEASE=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
SWIFT_VERSION = 4.2;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
A73625DEBD810B78234FA1958C191C8C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGNING_ALLOWED = NO;
|
||||
CODE_SIGNING_REQUIRED = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"POD_CONFIGURATION_DEBUG=1",
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 4.2;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
D4E1358F5A9F30D2BE1A25026CA67617 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7214728455310B721CF87A4D7F953000 /* PlayerKit.xcconfig */;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
GCC_PREFIX_HEADER = "Target Support Files/PlayerKit/PlayerKit-prefix.pch";
|
||||
INFOPLIST_FILE = "Target Support Files/PlayerKit/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MODULEMAP_FILE = "Target Support Files/PlayerKit/PlayerKit.modulemap";
|
||||
PRODUCT_MODULE_NAME = PlayerKit;
|
||||
PRODUCT_NAME = PlayerKit;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
FBEDF816611836110B2F4373CC680B7C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = E60A728C458CA3E4CE98F05A1CDEFA6E /* Pods-PlayerKit_Tests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-PlayerKit_Tests/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-PlayerKit_Tests/Pods-PlayerKit_Tests.modulemap";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
FD328A9A43959EF1D77337E043C9602D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 168252682F1FF51DD697AE3912A04B22 /* Pods-PlayerKit_Example.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-PlayerKit_Example/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-PlayerKit_Example/Pods-PlayerKit_Example.modulemap";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
FD95912CD7452BCD7AD11A9626A481B3 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 42916E1B07A1D5F46CBE04703C2D4E7B /* Pods-PlayerKit_Tests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-PlayerKit_Tests/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-PlayerKit_Tests/Pods-PlayerKit_Tests.modulemap";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
A73625DEBD810B78234FA1958C191C8C /* Debug */,
|
||||
85B95B1234E227C814CCC2C7902D0916 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4BCA7E54E81F4EFE6A9B800122800FF5 /* Build configuration list for PBXNativeTarget "PlayerKit" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
64C0355B683DEB7927A3A4683B45B640 /* Debug */,
|
||||
D4E1358F5A9F30D2BE1A25026CA67617 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8C2BD57BB4AC42DC437158788CE61872 /* Build configuration list for PBXNativeTarget "Pods-PlayerKit_Tests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
FD95912CD7452BCD7AD11A9626A481B3 /* Debug */,
|
||||
FBEDF816611836110B2F4373CC680B7C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
DC593BF9B16FFC2DBE7AF764939026D9 /* Build configuration list for PBXNativeTarget "Pods-PlayerKit_Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4694D15D5279519D909D634F325D49DE /* Debug */,
|
||||
FD328A9A43959EF1D77337E043C9602D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0930"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6EBFB3A0DE393574923D72A46AD0295B"
|
||||
BuildableName = "PlayerKit.framework"
|
||||
BlueprintName = "PlayerKit"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6EBFB3A0DE393574923D72A46AD0295B"
|
||||
BuildableName = "PlayerKit.framework"
|
||||
BlueprintName = "PlayerKit"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
Generated
+21
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Realm Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.4.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_PlayerKit : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_PlayerKit
|
||||
@end
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double PlayerKitVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char PlayerKitVersionString[];
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
framework module PlayerKit {
|
||||
umbrella header "PlayerKit-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
# Acknowledgements
|
||||
This application makes use of the following third party libraries:
|
||||
|
||||
## PlayerKit
|
||||
|
||||
Copyright (c) 2017 ghking <gavin@vimeo.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
## SwiftLint
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Realm Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
Generated by CocoaPods - https://cocoapods.org
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>This application makes use of the following third party libraries:</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright (c) 2017 ghking <gavin@vimeo.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</string>
|
||||
<key>License</key>
|
||||
<string>MIT</string>
|
||||
<key>Title</key>
|
||||
<string>PlayerKit</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Realm Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
</string>
|
||||
<key>License</key>
|
||||
<string>MIT</string>
|
||||
<key>Title</key>
|
||||
<string>SwiftLint</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||
<key>Title</key>
|
||||
<string></string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StringsTable</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Pods_PlayerKit_Example : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Pods_PlayerKit_Example
|
||||
@end
|
||||
Generated
Executable
+153
@@ -0,0 +1,153 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
|
||||
# If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||
# frameworks to, so exit 0 (signalling the script phase was successful).
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
|
||||
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
|
||||
|
||||
# Used as a return value for each invocation of `strip_invalid_archs` function.
|
||||
STRIP_BINARY_RETVAL=0
|
||||
|
||||
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
|
||||
# Copies and strips a vendored framework
|
||||
install_framework()
|
||||
{
|
||||
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$1"
|
||||
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
|
||||
elif [ -r "$1" ]; then
|
||||
local source="$1"
|
||||
fi
|
||||
|
||||
local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
if [ -L "${source}" ]; then
|
||||
echo "Symlinked..."
|
||||
source="$(readlink "${source}")"
|
||||
fi
|
||||
|
||||
# Use filter instead of exclude so missing patterns don't throw errors.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework "$1")"
|
||||
binary="${destination}/${basename}.framework/${basename}"
|
||||
if ! [ -r "$binary" ]; then
|
||||
binary="${destination}/${basename}"
|
||||
fi
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
fi
|
||||
|
||||
# Resign the code if required by the build settings to avoid unstable apps
|
||||
code_sign_if_enabled "${destination}/$(basename "$1")"
|
||||
|
||||
# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
|
||||
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
|
||||
local swift_runtime_libs
|
||||
swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
|
||||
for lib in $swift_runtime_libs; do
|
||||
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
|
||||
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
|
||||
code_sign_if_enabled "${destination}/${lib}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# Copies and strips a vendored dSYM
|
||||
install_dsym() {
|
||||
local source="$1"
|
||||
if [ -r "$source" ]; then
|
||||
# Copy the dSYM into a the targets temp dir.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework.dSYM "$source")"
|
||||
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
fi
|
||||
|
||||
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
|
||||
# Move the stripped file into its final destination.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
|
||||
else
|
||||
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
|
||||
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Signs a framework with the provided identity
|
||||
code_sign_if_enabled() {
|
||||
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
||||
# Use the current code_sign_identitiy
|
||||
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
|
||||
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
|
||||
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
code_sign_cmd="$code_sign_cmd &"
|
||||
fi
|
||||
echo "$code_sign_cmd"
|
||||
eval "$code_sign_cmd"
|
||||
fi
|
||||
}
|
||||
|
||||
# Strip invalid architectures
|
||||
strip_invalid_archs() {
|
||||
binary="$1"
|
||||
# Get architectures for current target binary
|
||||
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
|
||||
# Intersect them with the architectures we are building for
|
||||
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
|
||||
# If there are no archs supported by this binary then warn the user
|
||||
if [[ -z "$intersected_archs" ]]; then
|
||||
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
|
||||
STRIP_BINARY_RETVAL=0
|
||||
return
|
||||
fi
|
||||
stripped=""
|
||||
for arch in $binary_archs; do
|
||||
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
|
||||
# Strip non-valid architectures in-place
|
||||
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
|
||||
stripped="$stripped $arch"
|
||||
fi
|
||||
done
|
||||
if [[ "$stripped" ]]; then
|
||||
echo "Stripped $binary of architectures:$stripped"
|
||||
fi
|
||||
STRIP_BINARY_RETVAL=1
|
||||
}
|
||||
|
||||
|
||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/PlayerKit/PlayerKit.framework"
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/PlayerKit/PlayerKit.framework"
|
||||
fi
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
wait
|
||||
fi
|
||||
Generated
Executable
+118
@@ -0,0 +1,118 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
|
||||
# If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||
# resources to, so exit 0 (signalling the script phase was successful).
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
|
||||
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
||||
> "$RESOURCES_TO_COPY"
|
||||
|
||||
XCASSET_FILES=()
|
||||
|
||||
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
|
||||
case "${TARGETED_DEVICE_FAMILY:-}" in
|
||||
1,2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
|
||||
;;
|
||||
1)
|
||||
TARGET_DEVICE_ARGS="--target-device iphone"
|
||||
;;
|
||||
2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad"
|
||||
;;
|
||||
3)
|
||||
TARGET_DEVICE_ARGS="--target-device tv"
|
||||
;;
|
||||
4)
|
||||
TARGET_DEVICE_ARGS="--target-device watch"
|
||||
;;
|
||||
*)
|
||||
TARGET_DEVICE_ARGS="--target-device mac"
|
||||
;;
|
||||
esac
|
||||
|
||||
install_resource()
|
||||
{
|
||||
if [[ "$1" = /* ]] ; then
|
||||
RESOURCE_PATH="$1"
|
||||
else
|
||||
RESOURCE_PATH="${PODS_ROOT}/$1"
|
||||
fi
|
||||
if [[ ! -e "$RESOURCE_PATH" ]] ; then
|
||||
cat << EOM
|
||||
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
|
||||
EOM
|
||||
exit 1
|
||||
fi
|
||||
case $RESOURCE_PATH in
|
||||
*.storyboard)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.xib)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.framework)
|
||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
;;
|
||||
*.xcdatamodel)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
|
||||
;;
|
||||
*.xcdatamodeld)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
|
||||
;;
|
||||
*.xcmappingmodel)
|
||||
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
|
||||
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
|
||||
;;
|
||||
*.xcassets)
|
||||
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
|
||||
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
|
||||
;;
|
||||
*)
|
||||
echo "$RESOURCE_PATH" || true
|
||||
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
|
||||
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
fi
|
||||
rm -f "$RESOURCES_TO_COPY"
|
||||
|
||||
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
|
||||
then
|
||||
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
|
||||
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
|
||||
while read line; do
|
||||
if [[ $line != "${PODS_ROOT}*" ]]; then
|
||||
XCASSET_FILES+=("$line")
|
||||
fi
|
||||
done <<<"$OTHER_XCASSETS"
|
||||
|
||||
if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
|
||||
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
else
|
||||
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
|
||||
fi
|
||||
fi
|
||||
Generated
+16
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double Pods_PlayerKit_ExampleVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char Pods_PlayerKit_ExampleVersionString[];
|
||||
|
||||
Generated
+11
@@ -0,0 +1,11 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit/PlayerKit.framework/Headers"
|
||||
OTHER_LDFLAGS = $(inherited) -framework "PlayerKit"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
framework module Pods_PlayerKit_Example {
|
||||
umbrella header "Pods-PlayerKit_Example-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
Generated
+11
@@ -0,0 +1,11 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit/PlayerKit.framework/Headers"
|
||||
OTHER_LDFLAGS = $(inherited) -framework "PlayerKit"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
# Acknowledgements
|
||||
This application makes use of the following third party libraries:
|
||||
Generated by CocoaPods - https://cocoapods.org
|
||||
Generated
+29
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>This application makes use of the following third party libraries:</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||
<key>Title</key>
|
||||
<string></string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StringsTable</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Pods_PlayerKit_Tests : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Pods_PlayerKit_Tests
|
||||
@end
|
||||
Generated
Executable
+146
@@ -0,0 +1,146 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
|
||||
# If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||
# frameworks to, so exit 0 (signalling the script phase was successful).
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
|
||||
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
|
||||
|
||||
# Used as a return value for each invocation of `strip_invalid_archs` function.
|
||||
STRIP_BINARY_RETVAL=0
|
||||
|
||||
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
|
||||
# Copies and strips a vendored framework
|
||||
install_framework()
|
||||
{
|
||||
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$1"
|
||||
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
|
||||
elif [ -r "$1" ]; then
|
||||
local source="$1"
|
||||
fi
|
||||
|
||||
local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
if [ -L "${source}" ]; then
|
||||
echo "Symlinked..."
|
||||
source="$(readlink "${source}")"
|
||||
fi
|
||||
|
||||
# Use filter instead of exclude so missing patterns don't throw errors.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework "$1")"
|
||||
binary="${destination}/${basename}.framework/${basename}"
|
||||
if ! [ -r "$binary" ]; then
|
||||
binary="${destination}/${basename}"
|
||||
fi
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
fi
|
||||
|
||||
# Resign the code if required by the build settings to avoid unstable apps
|
||||
code_sign_if_enabled "${destination}/$(basename "$1")"
|
||||
|
||||
# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
|
||||
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
|
||||
local swift_runtime_libs
|
||||
swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
|
||||
for lib in $swift_runtime_libs; do
|
||||
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
|
||||
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
|
||||
code_sign_if_enabled "${destination}/${lib}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# Copies and strips a vendored dSYM
|
||||
install_dsym() {
|
||||
local source="$1"
|
||||
if [ -r "$source" ]; then
|
||||
# Copy the dSYM into a the targets temp dir.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework.dSYM "$source")"
|
||||
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
fi
|
||||
|
||||
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
|
||||
# Move the stripped file into its final destination.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
|
||||
else
|
||||
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
|
||||
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Signs a framework with the provided identity
|
||||
code_sign_if_enabled() {
|
||||
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
||||
# Use the current code_sign_identitiy
|
||||
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
|
||||
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
|
||||
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
code_sign_cmd="$code_sign_cmd &"
|
||||
fi
|
||||
echo "$code_sign_cmd"
|
||||
eval "$code_sign_cmd"
|
||||
fi
|
||||
}
|
||||
|
||||
# Strip invalid architectures
|
||||
strip_invalid_archs() {
|
||||
binary="$1"
|
||||
# Get architectures for current target binary
|
||||
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
|
||||
# Intersect them with the architectures we are building for
|
||||
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
|
||||
# If there are no archs supported by this binary then warn the user
|
||||
if [[ -z "$intersected_archs" ]]; then
|
||||
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
|
||||
STRIP_BINARY_RETVAL=0
|
||||
return
|
||||
fi
|
||||
stripped=""
|
||||
for arch in $binary_archs; do
|
||||
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
|
||||
# Strip non-valid architectures in-place
|
||||
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
|
||||
stripped="$stripped $arch"
|
||||
fi
|
||||
done
|
||||
if [[ "$stripped" ]]; then
|
||||
echo "Stripped $binary of architectures:$stripped"
|
||||
fi
|
||||
STRIP_BINARY_RETVAL=1
|
||||
}
|
||||
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
wait
|
||||
fi
|
||||
Generated
Executable
+118
@@ -0,0 +1,118 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
|
||||
# If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||
# resources to, so exit 0 (signalling the script phase was successful).
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
|
||||
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
||||
> "$RESOURCES_TO_COPY"
|
||||
|
||||
XCASSET_FILES=()
|
||||
|
||||
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
|
||||
case "${TARGETED_DEVICE_FAMILY:-}" in
|
||||
1,2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
|
||||
;;
|
||||
1)
|
||||
TARGET_DEVICE_ARGS="--target-device iphone"
|
||||
;;
|
||||
2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad"
|
||||
;;
|
||||
3)
|
||||
TARGET_DEVICE_ARGS="--target-device tv"
|
||||
;;
|
||||
4)
|
||||
TARGET_DEVICE_ARGS="--target-device watch"
|
||||
;;
|
||||
*)
|
||||
TARGET_DEVICE_ARGS="--target-device mac"
|
||||
;;
|
||||
esac
|
||||
|
||||
install_resource()
|
||||
{
|
||||
if [[ "$1" = /* ]] ; then
|
||||
RESOURCE_PATH="$1"
|
||||
else
|
||||
RESOURCE_PATH="${PODS_ROOT}/$1"
|
||||
fi
|
||||
if [[ ! -e "$RESOURCE_PATH" ]] ; then
|
||||
cat << EOM
|
||||
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
|
||||
EOM
|
||||
exit 1
|
||||
fi
|
||||
case $RESOURCE_PATH in
|
||||
*.storyboard)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.xib)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.framework)
|
||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
;;
|
||||
*.xcdatamodel)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
|
||||
;;
|
||||
*.xcdatamodeld)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
|
||||
;;
|
||||
*.xcmappingmodel)
|
||||
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
|
||||
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
|
||||
;;
|
||||
*.xcassets)
|
||||
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
|
||||
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
|
||||
;;
|
||||
*)
|
||||
echo "$RESOURCE_PATH" || true
|
||||
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
|
||||
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
fi
|
||||
rm -f "$RESOURCES_TO_COPY"
|
||||
|
||||
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
|
||||
then
|
||||
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
|
||||
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
|
||||
while read line; do
|
||||
if [[ $line != "${PODS_ROOT}*" ]]; then
|
||||
XCASSET_FILES+=("$line")
|
||||
fi
|
||||
done <<<"$OTHER_XCASSETS"
|
||||
|
||||
if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
|
||||
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
else
|
||||
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
|
||||
fi
|
||||
fi
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double Pods_PlayerKit_TestsVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char Pods_PlayerKit_TestsVersionString[];
|
||||
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit/PlayerKit.framework/Headers"
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
framework module Pods_PlayerKit_Tests {
|
||||
umbrella header "Pods-PlayerKit_Tests-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PlayerKit/PlayerKit.framework/Headers"
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<string>1.4.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
||||
@@ -5,6 +5,6 @@ gem 'danger', '4.0.4'
|
||||
gem 'xcode-install', '2.1.0'
|
||||
gem 'xcpretty-json-formatter', '0.1.0'
|
||||
gem 'danger-xcode_summary', '0.1.0'
|
||||
gem 'nokogiri', '1.6.0'
|
||||
gem 'nokogiri', '1.8.5'
|
||||
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||
eval(File.read(plugins_path), binding) if File.exist?(plugins_path)
|
||||
|
||||
+4
-4
@@ -162,7 +162,7 @@ GEM
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
mini_magick (4.5.1)
|
||||
mini_portile (0.5.3)
|
||||
mini_portile2 (2.3.0)
|
||||
minitest (5.11.3)
|
||||
molinillo (0.6.5)
|
||||
multi_json (1.13.1)
|
||||
@@ -171,8 +171,8 @@ GEM
|
||||
nanaimo (0.2.5)
|
||||
nap (1.1.0)
|
||||
netrc (0.11.0)
|
||||
nokogiri (1.6.0)
|
||||
mini_portile (~> 0.5.0)
|
||||
nokogiri (1.8.5)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
octokit (4.9.0)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
open4 (1.3.4)
|
||||
@@ -235,7 +235,7 @@ DEPENDENCIES
|
||||
danger-xcode_summary (= 0.1.0)
|
||||
fastlane (= 2.42.0)
|
||||
fastlane-plugin-pretty_junit
|
||||
nokogiri (= 1.6.0)
|
||||
nokogiri (= 1.8.5)
|
||||
xcode-install (= 2.1.0)
|
||||
xcpretty-json-formatter (= 0.1.0)
|
||||
|
||||
|
||||
+3
-1
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'PlayerKit'
|
||||
s.version = '1.2.0'
|
||||
s.version = '1.4.0'
|
||||
s.summary = 'A modular video player system.'
|
||||
|
||||
s.description = <<-DESC
|
||||
@@ -15,6 +15,8 @@ Pod::Spec.new do |s|
|
||||
s.ios.deployment_target = '8.0'
|
||||
s.tvos.deployment_target = '9.0'
|
||||
|
||||
s.swift_version = "4.2"
|
||||
|
||||
s.source_files = 'PlayerKit/Classes/**/*'
|
||||
|
||||
end
|
||||
|
||||
@@ -9,30 +9,24 @@
|
||||
import Foundation
|
||||
import AVFoundation
|
||||
|
||||
extension AVPlayer
|
||||
{
|
||||
var errorForPlayerOrItem: NSError?
|
||||
{
|
||||
extension AVPlayer {
|
||||
var errorForPlayerOrItem: NSError? {
|
||||
// First try to return the current item's error
|
||||
|
||||
if let error = self.currentItem?.error
|
||||
{
|
||||
if let error = self.currentItem?.error {
|
||||
// If current item's error has an underlying error, return that
|
||||
|
||||
if let underlyingError = (error as NSError).userInfo[NSUnderlyingErrorKey] as? NSError
|
||||
{
|
||||
if let underlyingError = (error as NSError).userInfo[NSUnderlyingErrorKey] as? NSError {
|
||||
return underlyingError
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
return error as NSError?
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise, try to return the player error
|
||||
|
||||
if let error = self.error
|
||||
{
|
||||
if let error = self.error {
|
||||
return error as NSError?
|
||||
}
|
||||
|
||||
|
||||
@@ -9,12 +9,9 @@
|
||||
import Foundation
|
||||
import AVFoundation
|
||||
|
||||
extension CMTime
|
||||
{
|
||||
var timeInterval: TimeInterval?
|
||||
{
|
||||
if CMTIME_IS_INVALID(self) || CMTIME_IS_INDEFINITE(self)
|
||||
{
|
||||
extension CMTime {
|
||||
var timeInterval: TimeInterval? {
|
||||
if CMTIME_IS_INVALID(self) || CMTIME_IS_INDEFINITE(self) {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,7 @@ import UIKit
|
||||
import AVKit
|
||||
|
||||
/// A player error
|
||||
public enum PlayerError: Int
|
||||
{
|
||||
public enum PlayerError: Int {
|
||||
case unknown
|
||||
case loading
|
||||
|
||||
@@ -20,10 +19,8 @@ public enum PlayerError: Int
|
||||
/// The associated error
|
||||
///
|
||||
/// - Returns: The error
|
||||
public func error() -> NSError
|
||||
{
|
||||
switch self
|
||||
{
|
||||
public func error() -> NSError {
|
||||
switch self {
|
||||
case .unknown:
|
||||
|
||||
return NSError(domain: type(of: self).Domain, code: self.rawValue, userInfo: [NSLocalizedDescriptionKey: "An unknown error occurred."])
|
||||
@@ -40,16 +37,14 @@ public enum PlayerError: Int
|
||||
/// - loading: The player is loading or buffering
|
||||
/// - ready: The player is ready for playback
|
||||
/// - failed: The player has failed
|
||||
@objc public enum PlayerState: Int
|
||||
{
|
||||
@objc public enum PlayerState: Int {
|
||||
case loading
|
||||
case ready
|
||||
case failed
|
||||
}
|
||||
|
||||
/// An object that adopts the PlayerDelegate protocol can receive updates from the player.
|
||||
@objc public protocol PlayerDelegate: class
|
||||
{
|
||||
@objc public protocol PlayerDelegate: class {
|
||||
func playerDidUpdateState(player: Player, previousState: PlayerState)
|
||||
func playerDidUpdatePlaying(player: Player)
|
||||
func playerDidUpdateTime(player: Player)
|
||||
@@ -57,8 +52,7 @@ public enum PlayerError: Int
|
||||
}
|
||||
|
||||
/// An object that adopts the Player protocol is responsible for implementing the API and calling PlayerDelegate methods where appropriate.
|
||||
@objc public protocol Player: class
|
||||
{
|
||||
@objc public protocol Player: class {
|
||||
weak var delegate: PlayerDelegate? { get set }
|
||||
|
||||
var state: PlayerState { get }
|
||||
@@ -88,40 +82,34 @@ public enum PlayerError: Int
|
||||
// MARK: Identity Protocols
|
||||
|
||||
/// A player that adopts the ProvidesView protocol is capable of providing a view to be added to a view hierarchy.
|
||||
@objc public protocol ProvidesView
|
||||
{
|
||||
@objc public protocol ProvidesView {
|
||||
var view: UIView { get }
|
||||
}
|
||||
|
||||
// MARK: Capability Protocols
|
||||
|
||||
/// A player that adopts the ProvidesView protocol is capable of AirPlay playback.
|
||||
@objc public protocol AirPlayCapable
|
||||
{
|
||||
@objc public protocol AirPlayCapable {
|
||||
var isAirPlayEnabled: Bool { get set }
|
||||
}
|
||||
|
||||
/// A player that adopts the ProvidesView protocol is capable of setting audio volume.
|
||||
@objc public protocol VolumeCapable
|
||||
{
|
||||
@objc public protocol VolumeCapable {
|
||||
var volume: Float { get set }
|
||||
}
|
||||
|
||||
/// A player that adopts the ProvidesView protocol is capable of setting the video fill mode.
|
||||
@objc public protocol FillModeCapable
|
||||
{
|
||||
@objc public protocol FillModeCapable {
|
||||
var fillMode: FillMode { get set }
|
||||
}
|
||||
|
||||
@objc public enum FillMode: Int
|
||||
{
|
||||
@objc public enum FillMode: Int {
|
||||
case fit
|
||||
case fill
|
||||
}
|
||||
|
||||
/// The metadata that should be attached to any type of text track.
|
||||
@objc public protocol TextTrackMetadata
|
||||
{
|
||||
@objc public protocol TextTrackMetadata {
|
||||
var displayName: String { get }
|
||||
var locale: Locale? { get }
|
||||
// Indicates that the text track represents subtitles for the def and hard of hearing (SDH).
|
||||
@@ -130,17 +118,14 @@ public enum PlayerError: Int
|
||||
@objc(displayNameWithLocale:) func displayName(with locale: Locale) -> String
|
||||
}
|
||||
|
||||
extension TextTrackMetadata
|
||||
{
|
||||
public func matches(_ other: TextTrackMetadata) -> Bool
|
||||
{
|
||||
extension TextTrackMetadata {
|
||||
public func matches(_ other: TextTrackMetadata) -> Bool {
|
||||
return (self.locale == other.locale && self.isSDHTrack == other.isSDHTrack)
|
||||
}
|
||||
}
|
||||
|
||||
/// A player that conforms to the TextTrackCapable protocol is capable of advertising and displaying text tracks.
|
||||
@objc public protocol TextTrackCapable
|
||||
{
|
||||
@objc public protocol TextTrackCapable {
|
||||
var selectedTextTrack: TextTrackMetadata? { get }
|
||||
var availableTextTracks: [TextTrackMetadata] { get }
|
||||
|
||||
@@ -150,8 +135,7 @@ extension TextTrackMetadata
|
||||
|
||||
#if os(iOS)
|
||||
/// A player that adopts the ProvidesView protocol is capable of Picture in Picture playback.
|
||||
@objc public protocol PictureInPictureCapable
|
||||
{
|
||||
@objc public protocol PictureInPictureCapable {
|
||||
@available(iOS 9.0, *)
|
||||
var pictureInPictureController: AVPictureInPictureController? { get }
|
||||
}
|
||||
|
||||
@@ -11,19 +11,15 @@ import Foundation
|
||||
import AVFoundation
|
||||
import AVKit
|
||||
|
||||
extension AVMediaSelectionOption: TextTrackMetadata
|
||||
{
|
||||
public var isSDHTrack: Bool
|
||||
{
|
||||
extension AVMediaSelectionOption: TextTrackMetadata {
|
||||
public var isSDHTrack: Bool {
|
||||
return self.hasMediaCharacteristic(.describesMusicAndSoundForAccessibility) && self.hasMediaCharacteristic(.transcribesSpokenDialogForAccessibility)
|
||||
}
|
||||
}
|
||||
|
||||
/// A RegularPlayer is used to play regular videos.
|
||||
@objc open class RegularPlayer: NSObject, Player, ProvidesView
|
||||
{
|
||||
public struct Constants
|
||||
{
|
||||
@objc open class RegularPlayer: NSObject, Player, ProvidesView {
|
||||
public struct Constants {
|
||||
public static let TimeUpdateInterval: TimeInterval = 0.1
|
||||
}
|
||||
|
||||
@@ -36,12 +32,10 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
/// Sets an AVAsset on the player.
|
||||
///
|
||||
/// - Parameter asset: The AVAsset
|
||||
@objc open func set(_ asset: AVAsset)
|
||||
{
|
||||
@objc open func set(_ asset: AVAsset) {
|
||||
// Prepare the old item for removal
|
||||
|
||||
if let currentItem = self.player.currentItem
|
||||
{
|
||||
if let currentItem = self.player.currentItem {
|
||||
self.removePlayerItemObservers(fromPlayerItem: currentItem)
|
||||
}
|
||||
|
||||
@@ -56,33 +50,27 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
|
||||
// MARK: ProvidesView
|
||||
|
||||
private class RegularPlayerView: UIView
|
||||
{
|
||||
var playerLayer: AVPlayerLayer
|
||||
{
|
||||
private class RegularPlayerView: UIView {
|
||||
var playerLayer: AVPlayerLayer {
|
||||
return self.layer as! AVPlayerLayer
|
||||
}
|
||||
|
||||
override class var layerClass: AnyClass
|
||||
{
|
||||
override class var layerClass: AnyClass {
|
||||
return AVPlayerLayer.self
|
||||
}
|
||||
|
||||
func configureForPlayer(player: AVPlayer)
|
||||
{
|
||||
func configureForPlayer(player: AVPlayer) {
|
||||
(self.layer as! AVPlayerLayer).player = player
|
||||
}
|
||||
}
|
||||
|
||||
public let view: UIView = RegularPlayerView(frame: .zero)
|
||||
|
||||
private var regularPlayerView: RegularPlayerView
|
||||
{
|
||||
private var regularPlayerView: RegularPlayerView {
|
||||
return self.view as! RegularPlayerView
|
||||
}
|
||||
|
||||
private var playerLayer: AVPlayerLayer
|
||||
{
|
||||
private var playerLayer: AVPlayerLayer {
|
||||
return self.regularPlayerView.playerLayer
|
||||
}
|
||||
|
||||
@@ -90,68 +78,55 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
|
||||
weak public var delegate: PlayerDelegate?
|
||||
|
||||
public private(set) var state: PlayerState = .ready
|
||||
{
|
||||
didSet
|
||||
{
|
||||
public private(set) var state: PlayerState = .ready {
|
||||
didSet {
|
||||
self.delegate?.playerDidUpdateState(player: self, previousState: oldValue)
|
||||
}
|
||||
}
|
||||
|
||||
public var duration: TimeInterval
|
||||
{
|
||||
public var duration: TimeInterval {
|
||||
return self.player.currentItem?.duration.timeInterval ?? 0
|
||||
}
|
||||
|
||||
public private(set) var time: TimeInterval = 0
|
||||
{
|
||||
didSet
|
||||
{
|
||||
public private(set) var time: TimeInterval = 0 {
|
||||
didSet {
|
||||
self.delegate?.playerDidUpdateTime(player: self)
|
||||
}
|
||||
}
|
||||
|
||||
public private(set) var bufferedTime: TimeInterval = 0
|
||||
{
|
||||
didSet
|
||||
{
|
||||
public private(set) var bufferedTime: TimeInterval = 0 {
|
||||
didSet {
|
||||
self.delegate?.playerDidUpdateBufferedTime(player: self)
|
||||
}
|
||||
}
|
||||
|
||||
public var playing: Bool
|
||||
{
|
||||
public var playing: Bool {
|
||||
return self.player.rate > 0
|
||||
}
|
||||
|
||||
public var error: NSError?
|
||||
{
|
||||
public var error: NSError? {
|
||||
return self.player.errorForPlayerOrItem
|
||||
}
|
||||
|
||||
public func seek(to time: TimeInterval)
|
||||
{
|
||||
let cmTime = CMTimeMakeWithSeconds(time, Int32(NSEC_PER_SEC))
|
||||
public func seek(to time: TimeInterval) {
|
||||
let cmTime = CMTimeMakeWithSeconds(time, preferredTimescale: Int32(NSEC_PER_SEC))
|
||||
|
||||
self.player.seek(to: cmTime)
|
||||
|
||||
self.time = time
|
||||
}
|
||||
|
||||
public func play()
|
||||
{
|
||||
public func play() {
|
||||
self.player.play()
|
||||
}
|
||||
|
||||
public func pause()
|
||||
{
|
||||
public func pause() {
|
||||
self.player.pause()
|
||||
}
|
||||
|
||||
// MARK: Lifecycle
|
||||
|
||||
public override init()
|
||||
{
|
||||
public override init() {
|
||||
super.init()
|
||||
|
||||
self.addPlayerObservers()
|
||||
@@ -161,10 +136,8 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
self.setupAirplay()
|
||||
}
|
||||
|
||||
deinit
|
||||
{
|
||||
if let playerItem = self.player.currentItem
|
||||
{
|
||||
deinit {
|
||||
if let playerItem = self.player.currentItem {
|
||||
self.removePlayerItemObservers(fromPlayerItem: playerItem)
|
||||
}
|
||||
|
||||
@@ -172,23 +145,29 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
}
|
||||
|
||||
// MARK: Setup
|
||||
|
||||
@available(iOS 10.0, *)
|
||||
public var automaticallyWaitsToMinimizeStalling: Bool {
|
||||
get {
|
||||
return self.player.automaticallyWaitsToMinimizeStalling
|
||||
}
|
||||
set {
|
||||
self.player.automaticallyWaitsToMinimizeStalling = newValue
|
||||
}
|
||||
}
|
||||
|
||||
private func setupAirplay()
|
||||
{
|
||||
private func setupAirplay() {
|
||||
self.player.usesExternalPlaybackWhileExternalScreenIsActive = true
|
||||
}
|
||||
|
||||
// MARK: Observers
|
||||
|
||||
private struct KeyPath
|
||||
{
|
||||
struct Player
|
||||
{
|
||||
private struct KeyPath {
|
||||
struct Player {
|
||||
static let Rate = "rate"
|
||||
}
|
||||
|
||||
struct PlayerItem
|
||||
{
|
||||
struct PlayerItem {
|
||||
static let Status = "status"
|
||||
static let PlaybackLikelyToKeepUp = "playbackLikelyToKeepUp"
|
||||
static let LoadedTimeRanges = "loadedTimeRanges"
|
||||
@@ -197,41 +176,35 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
|
||||
private var playerTimeObserver: Any?
|
||||
|
||||
private func addPlayerItemObservers(toPlayerItem playerItem: AVPlayerItem)
|
||||
{
|
||||
private func addPlayerItemObservers(toPlayerItem playerItem: AVPlayerItem) {
|
||||
playerItem.addObserver(self, forKeyPath: KeyPath.PlayerItem.Status, options: [.initial, .new], context: nil)
|
||||
playerItem.addObserver(self, forKeyPath: KeyPath.PlayerItem.PlaybackLikelyToKeepUp, options: [.initial, .new], context: nil)
|
||||
playerItem.addObserver(self, forKeyPath: KeyPath.PlayerItem.LoadedTimeRanges, options: [.initial, .new], context: nil)
|
||||
}
|
||||
|
||||
private func removePlayerItemObservers(fromPlayerItem playerItem: AVPlayerItem)
|
||||
{
|
||||
private func removePlayerItemObservers(fromPlayerItem playerItem: AVPlayerItem) {
|
||||
playerItem.removeObserver(self, forKeyPath: KeyPath.PlayerItem.Status, context: nil)
|
||||
playerItem.removeObserver(self, forKeyPath: KeyPath.PlayerItem.PlaybackLikelyToKeepUp, context: nil)
|
||||
playerItem.removeObserver(self, forKeyPath: KeyPath.PlayerItem.LoadedTimeRanges, context: nil)
|
||||
}
|
||||
|
||||
private func addPlayerObservers()
|
||||
{
|
||||
private func addPlayerObservers() {
|
||||
self.player.addObserver(self, forKeyPath: KeyPath.Player.Rate, options: [.initial, .new], context: nil)
|
||||
|
||||
let interval = CMTimeMakeWithSeconds(Constants.TimeUpdateInterval, Int32(NSEC_PER_SEC))
|
||||
let interval = CMTimeMakeWithSeconds(Constants.TimeUpdateInterval, preferredTimescale: Int32(NSEC_PER_SEC))
|
||||
|
||||
self.playerTimeObserver = self.player.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: { [weak self] (cmTime) in
|
||||
|
||||
if let strongSelf = self, let time = cmTime.timeInterval
|
||||
{
|
||||
if let strongSelf = self, let time = cmTime.timeInterval {
|
||||
strongSelf.time = time
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private func removePlayerObservers()
|
||||
{
|
||||
private func removePlayerObservers() {
|
||||
self.player.removeObserver(self, forKeyPath: KeyPath.Player.Rate, context: nil)
|
||||
|
||||
if let playerTimeObserver = self.playerTimeObserver
|
||||
{
|
||||
if let playerTimeObserver = self.playerTimeObserver {
|
||||
self.player.removeTimeObserver(playerTimeObserver)
|
||||
|
||||
self.playerTimeObserver = nil
|
||||
@@ -240,56 +213,44 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
|
||||
// MARK: Observation
|
||||
|
||||
override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
|
||||
{
|
||||
override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
|
||||
// Player Item Observers
|
||||
|
||||
if keyPath == KeyPath.PlayerItem.Status
|
||||
{
|
||||
if let statusInt = change?[.newKey] as? Int, let status = AVPlayerItemStatus(rawValue: statusInt)
|
||||
{
|
||||
if keyPath == KeyPath.PlayerItem.Status {
|
||||
if let statusInt = change?[.newKey] as? Int, let status = AVPlayerItem.Status(rawValue: statusInt) {
|
||||
self.playerItemStatusDidChange(status: status)
|
||||
}
|
||||
}
|
||||
else if keyPath == KeyPath.PlayerItem.PlaybackLikelyToKeepUp
|
||||
{
|
||||
if let playbackLikelyToKeepUp = change?[.newKey] as? Bool
|
||||
{
|
||||
else if keyPath == KeyPath.PlayerItem.PlaybackLikelyToKeepUp {
|
||||
if let playbackLikelyToKeepUp = change?[.newKey] as? Bool {
|
||||
self.playerItemPlaybackLikelyToKeepUpDidChange(playbackLikelyToKeepUp: playbackLikelyToKeepUp)
|
||||
}
|
||||
}
|
||||
else if keyPath == KeyPath.PlayerItem.LoadedTimeRanges
|
||||
{
|
||||
if let loadedTimeRanges = change?[.newKey] as? [NSValue]
|
||||
{
|
||||
else if keyPath == KeyPath.PlayerItem.LoadedTimeRanges {
|
||||
if let loadedTimeRanges = change?[.newKey] as? [NSValue] {
|
||||
self.playerItemLoadedTimeRangesDidChange(loadedTimeRanges: loadedTimeRanges)
|
||||
}
|
||||
}
|
||||
|
||||
// Player Observers
|
||||
|
||||
else if keyPath == KeyPath.Player.Rate
|
||||
{
|
||||
if let rate = change?[.newKey] as? Float
|
||||
{
|
||||
else if keyPath == KeyPath.Player.Rate {
|
||||
if let rate = change?[.newKey] as? Float {
|
||||
self.playerRateDidChange(rate: rate)
|
||||
}
|
||||
}
|
||||
|
||||
// Fall Through Observers
|
||||
|
||||
else
|
||||
{
|
||||
else {
|
||||
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Observation Helpers
|
||||
|
||||
private func playerItemStatusDidChange(status: AVPlayerItemStatus)
|
||||
{
|
||||
switch status
|
||||
{
|
||||
private func playerItemStatusDidChange(status: AVPlayerItem.Status) {
|
||||
switch status {
|
||||
case .unknown:
|
||||
|
||||
self.state = .loading
|
||||
@@ -304,22 +265,18 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
}
|
||||
}
|
||||
|
||||
private func playerRateDidChange(rate: Float)
|
||||
{
|
||||
private func playerRateDidChange(rate: Float) {
|
||||
self.delegate?.playerDidUpdatePlaying(player: self)
|
||||
}
|
||||
|
||||
private func playerItemPlaybackLikelyToKeepUpDidChange(playbackLikelyToKeepUp: Bool)
|
||||
{
|
||||
private func playerItemPlaybackLikelyToKeepUpDidChange(playbackLikelyToKeepUp: Bool) {
|
||||
let state: PlayerState = playbackLikelyToKeepUp ? .ready : .loading
|
||||
|
||||
self.state = state
|
||||
}
|
||||
|
||||
private func playerItemLoadedTimeRangesDidChange(loadedTimeRanges: [NSValue])
|
||||
{
|
||||
guard let bufferedCMTime = loadedTimeRanges.first?.timeRangeValue.end, let bufferedTime = bufferedCMTime.timeInterval else
|
||||
{
|
||||
private func playerItemLoadedTimeRangesDidChange(loadedTimeRanges: [NSValue]) {
|
||||
guard let bufferedCMTime = loadedTimeRanges.first?.timeRangeValue.end, let bufferedTime = bufferedCMTime.timeInterval else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -340,25 +297,20 @@ extension AVMediaSelectionOption: TextTrackMetadata
|
||||
|
||||
extension RegularPlayer: AirPlayCapable
|
||||
{
|
||||
public var isAirPlayEnabled: Bool
|
||||
{
|
||||
get
|
||||
{
|
||||
public var isAirPlayEnabled: Bool {
|
||||
get {
|
||||
return self.player.allowsExternalPlayback
|
||||
}
|
||||
set
|
||||
{
|
||||
set {
|
||||
return self.player.allowsExternalPlayback = newValue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if os(iOS)
|
||||
extension RegularPlayer: PictureInPictureCapable
|
||||
{
|
||||
extension RegularPlayer: PictureInPictureCapable {
|
||||
@available(iOS 9.0, *)
|
||||
public var pictureInPictureController: AVPictureInPictureController?
|
||||
{
|
||||
public var pictureInPictureController: AVPictureInPictureController? {
|
||||
return self._pictureInPictureController
|
||||
}
|
||||
}
|
||||
@@ -366,35 +318,27 @@ extension RegularPlayer: PictureInPictureCapable
|
||||
|
||||
extension RegularPlayer: VolumeCapable
|
||||
{
|
||||
public var volume: Float
|
||||
{
|
||||
get
|
||||
{
|
||||
public var volume: Float {
|
||||
get {
|
||||
return self.player.volume
|
||||
}
|
||||
set
|
||||
{
|
||||
set {
|
||||
self.player.volume = newValue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension RegularPlayer: FillModeCapable
|
||||
{
|
||||
public var fillMode: FillMode
|
||||
{
|
||||
get
|
||||
{
|
||||
extension RegularPlayer: FillModeCapable {
|
||||
public var fillMode: FillMode {
|
||||
get {
|
||||
let gravity = (self.view.layer as! AVPlayerLayer).videoGravity
|
||||
|
||||
return gravity == .resizeAspect ? .fit : .fill
|
||||
}
|
||||
set
|
||||
{
|
||||
set {
|
||||
let gravity: AVLayerVideoGravity
|
||||
|
||||
switch newValue
|
||||
{
|
||||
switch newValue {
|
||||
case .fit:
|
||||
|
||||
gravity = .resizeAspect
|
||||
@@ -409,62 +353,48 @@ extension RegularPlayer: FillModeCapable
|
||||
}
|
||||
}
|
||||
|
||||
extension RegularPlayer: TextTrackCapable
|
||||
{
|
||||
public var selectedTextTrack: TextTrackMetadata?
|
||||
{
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
extension RegularPlayer: TextTrackCapable {
|
||||
public var selectedTextTrack: TextTrackMetadata? {
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
if #available(iOS 9.0, *)
|
||||
{
|
||||
if #available(iOS 9.0, *) {
|
||||
return self.player.currentItem?.currentMediaSelection.selectedMediaOption(in: group)
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
return self.player.currentItem?.selectedMediaOption(in: group)
|
||||
}
|
||||
}
|
||||
|
||||
public var availableTextTracks: [TextTrackMetadata]
|
||||
{
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
public var availableTextTracks: [TextTrackMetadata] {
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
||||
return []
|
||||
}
|
||||
return group.options
|
||||
}
|
||||
|
||||
public func fetchTextTracks(completion: @escaping ([TextTrackMetadata], TextTrackMetadata?) -> Void)
|
||||
{
|
||||
public func fetchTextTracks(completion: @escaping ([TextTrackMetadata], TextTrackMetadata?) -> Void) {
|
||||
self.player.currentItem?.asset.loadValuesAsynchronously(forKeys: [#keyPath(AVAsset.availableMediaCharacteristicsWithMediaSelectionOptions)]) { [weak self] in
|
||||
guard let strongSelf = self, let group = strongSelf.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
guard let strongSelf = self, let group = strongSelf.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
||||
completion([], nil)
|
||||
return
|
||||
}
|
||||
if #available(iOS 9.0, *)
|
||||
{
|
||||
if #available(iOS 9.0, *) {
|
||||
completion(group.options, strongSelf.player.currentItem?.currentMediaSelection.selectedMediaOption(in: group))
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
completion(group.options, strongSelf.player.currentItem?.selectedMediaOption(in: group))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func select(_ textTrack: TextTrackMetadata?)
|
||||
{
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
public func select(_ textTrack: TextTrackMetadata?) {
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
||||
return
|
||||
}
|
||||
|
||||
guard let track = textTrack else
|
||||
{
|
||||
guard let track = textTrack else {
|
||||
self.player.currentItem?.select(nil, in: group)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -23,17 +23,28 @@ To run the example project, clone the repo, and run `pod install` from the Examp
|
||||
## Minimum Requirements
|
||||
|
||||
- iOS 8.0 / tvOS 9.0
|
||||
- Swift 3.2
|
||||
- Swift 4.2
|
||||
|
||||
## Installation
|
||||
|
||||
PlayerKit is available through [CocoaPods](http://cocoapods.org). To install
|
||||
it, simply add the following line to your Podfile:
|
||||
PlayerKit is available through [CocoaPods](http://cocoapods.org) and [Carthage](https://github.com/carthage/Carthage)
|
||||
|
||||
### Cocoapods
|
||||
|
||||
To install it, simply add the following line to your Podfile:
|
||||
|
||||
```ruby
|
||||
pod "PlayerKit"
|
||||
```
|
||||
|
||||
### Carthage
|
||||
|
||||
Add the following to your Cartfile:
|
||||
|
||||
```
|
||||
github "vimeo/VimeoNetworking"
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Using RegularPlayer
|
||||
@@ -62,9 +73,9 @@ player.delegate = delegate
|
||||
|
||||
You can create your own players by creating objects that conform to the Player protocol and call the delegate methods when appropriate.
|
||||
|
||||
## Author
|
||||
## Questions?
|
||||
|
||||
Gavin King, gavin@vimeo.com
|
||||
Post on [Stackoverflow](http://stackoverflow.com/questions/tagged/vimeo-ios) with the tag `vimeo-ios`. Get in touch [here](https://vimeo.com/help/contact). Interested in working at Vimeo? We're [hiring](https://vimeo.com/jobs)!
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Example/Pods/Pods.xcodeproj
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
general:
|
||||
artifacts:
|
||||
- "build/Logs"
|
||||
- "PlayerKit_Example-PlayerKit-Example.log"
|
||||
machine:
|
||||
xcode:
|
||||
version: 9.0
|
||||
|
||||
dependencies:
|
||||
override:
|
||||
- bundle install --deployment
|
||||
cache_directories:
|
||||
- "~/.cocoapods"
|
||||
- "Example/Pods"
|
||||
- "vendor/bundle"
|
||||
|
||||
test:
|
||||
override:
|
||||
- bundle exec fastlane test
|
||||
+23
-2
@@ -17,10 +17,10 @@ default_platform :ios
|
||||
|
||||
platform :ios do
|
||||
before_all do
|
||||
ensure_xcode_version(version: "9.0.1")
|
||||
ensure_xcode_version(version: "10.1")
|
||||
end
|
||||
|
||||
desc "run tests"
|
||||
desc "Run tests"
|
||||
lane :test do |options|
|
||||
|
||||
cocoapods(
|
||||
@@ -43,6 +43,27 @@ platform :ios do
|
||||
end
|
||||
end
|
||||
|
||||
desc "bumps the project and podspec version"
|
||||
lane :version_bump do |options|
|
||||
|
||||
bump_type = options[:bump_type]
|
||||
version_number = options[:version_number]
|
||||
if bump_type.nil? && version_number.nil?
|
||||
UI.user_error!("version_bump requires you to provide a bump_type [patch|minor|major] or specific version_number. Please try again.")
|
||||
end
|
||||
|
||||
increment_version_number(
|
||||
bump_type: bump_type,
|
||||
version_number: version_number,
|
||||
xcodeproj: "Example/PlayerKit.xcodeproj"
|
||||
)
|
||||
|
||||
version_bump_podspec(
|
||||
bump_type: bump_type,
|
||||
version_number: version_number
|
||||
)
|
||||
end
|
||||
|
||||
after_all do |lane|
|
||||
|
||||
end
|
||||
|
||||
+7
-1
@@ -27,13 +27,19 @@ xcode-select --install
|
||||
<td width="33%"><code>sudo gem install fastlane -NV</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
# Available Actions
|
||||
## iOS
|
||||
### ios test
|
||||
```
|
||||
fastlane ios test
|
||||
```
|
||||
run tests
|
||||
Run tests
|
||||
### ios version_bump
|
||||
```
|
||||
fastlane ios version_bump
|
||||
```
|
||||
bumps the project and podspec version
|
||||
|
||||
----
|
||||
|
||||
|
||||
Reference in New Issue
Block a user