mirror of
https://github.com/KRTirtho/spotube.git
synced 2026-11-04 18:23:59 +00:00
AVPlayer misreads the duration of some fragmented MP4 streams (it reports double the real length, leaving the second half silent and never ending the track). Playback on iOS now goes through VLCKit 4, added as a Swift package pinned to videolan/vlckit@6b87735. - NativePlayerEngine (iosMain): single-media engine contract that Swift implements and registers at launch; VLCKit ships as an SPM binary target, so it can't be bound with cinterop from Gradle. - AudioPlayer.ios.kt: rewritten on the engine. Playlist, loop modes, shuffle and auto-advance live in Kotlin, mirroring the JVM player (the old iOS player never advanced to the next track). - VlcPlayerEngine.swift: VLCKit-backed engine. VLCKit 4 has no "ended" state, so natural ends are told apart from requested stops; after a pause/resume it stops reporting time, so a no-op seek restores position updates.
401 lines
14 KiB
Plaintext
401 lines
14 KiB
Plaintext
// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 77;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
9A1B2C3D4E5F60718293A4B1 /* VLCKit in Frameworks */ = {isa = PBXBuildFile; productRef = 9A1B2C3D4E5F60718293A4B3 /* VLCKit */; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
11DF02E4B44E5BCF61736473 /* Spotube.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Spotube.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
|
|
FC0CC9A88AED959E9CE9C913 /* Exceptions for "iosApp" folder in "iosApp" target */ = {
|
|
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
|
membershipExceptions = (
|
|
Info.plist,
|
|
);
|
|
target = CBFC97515810713C553A7541 /* iosApp */;
|
|
};
|
|
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
|
|
|
|
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
|
5BB730BF90365122B74925FF /* iosApp */ = {
|
|
isa = PBXFileSystemSynchronizedRootGroup;
|
|
exceptions = (
|
|
FC0CC9A88AED959E9CE9C913 /* Exceptions for "iosApp" folder in "iosApp" target */,
|
|
);
|
|
path = iosApp;
|
|
sourceTree = "<group>";
|
|
};
|
|
E265D0F6D10F52F5C1374EEB /* Configuration */ = {
|
|
isa = PBXFileSystemSynchronizedRootGroup;
|
|
path = Configuration;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXFileSystemSynchronizedRootGroup section */
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
|
EFCF243BC7D8246E008EF23D /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
9A1B2C3D4E5F60718293A4B1 /* VLCKit in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
/* Begin PBXGroup section */
|
|
EFA169D322B90F32841D602F = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
E265D0F6D10F52F5C1374EEB /* Configuration */,
|
|
5BB730BF90365122B74925FF /* iosApp */,
|
|
835615636B5FE86AA850B7DB /* Products */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
835615636B5FE86AA850B7DB /* Products */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
11DF02E4B44E5BCF61736473 /* Spotube.app */,
|
|
);
|
|
name = Products;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
CBFC97515810713C553A7541 /* iosApp */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 6F8AC65FA015674062B91E20 /* Build configuration list for PBXNativeTarget "iosApp" */;
|
|
buildPhases = (
|
|
6413B0F29E004BC8B0C4D22A /* Compile Kotlin Framework */,
|
|
314349EF3C4149F4A4A72378 /* Sources */,
|
|
EFCF243BC7D8246E008EF23D /* Frameworks */,
|
|
ED9557BFD7438D37A5E9513D /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
fileSystemSynchronizedGroups = (
|
|
5BB730BF90365122B74925FF /* iosApp */,
|
|
);
|
|
name = iosApp;
|
|
packageProductDependencies = (
|
|
9A1B2C3D4E5F60718293A4B3 /* VLCKit */,
|
|
);
|
|
productName = iosApp;
|
|
productReference = 11DF02E4B44E5BCF61736473 /* Spotube.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
B056E79C138AE849968965F1 /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
BuildIndependentTargetsInParallel = 1;
|
|
LastSwiftUpdateCheck = 1620;
|
|
LastUpgradeCheck = 1620;
|
|
TargetAttributes = {
|
|
CBFC97515810713C553A7541 = {
|
|
CreatedOnToolsVersion = 16.2;
|
|
};
|
|
};
|
|
};
|
|
buildConfigurationList = 79A44D8DEA428263AC7DC2E1 /* Build configuration list for PBXProject "iosApp" */;
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
en,
|
|
Base,
|
|
);
|
|
mainGroup = EFA169D322B90F32841D602F;
|
|
minimizedProjectReferenceProxies = 1;
|
|
packageReferences = (
|
|
9A1B2C3D4E5F60718293A4B2 /* XCRemoteSwiftPackageReference "vlckit" */,
|
|
);
|
|
preferredProjectObjectVersion = 77;
|
|
productRefGroup = 835615636B5FE86AA850B7DB /* Products */;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
CBFC97515810713C553A7541 /* iosApp */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
ED9557BFD7438D37A5E9513D /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXShellScriptBuildPhase section */
|
|
6413B0F29E004BC8B0C4D22A /* Compile Kotlin Framework */ = {
|
|
isa = PBXShellScriptBuildPhase;
|
|
alwaysOutOfDate = 1;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
inputFileListPaths = (
|
|
);
|
|
inputPaths = (
|
|
);
|
|
name = "Compile Kotlin Framework";
|
|
outputFileListPaths = (
|
|
);
|
|
outputPaths = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
shellPath = /bin/sh;
|
|
shellScript = "if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \\\"YES\\\"\"\n exit 0\nfi\ncd \"$SRCROOT/..\"\n./gradlew :composeApp:embedAndSignAppleFrameworkForXcode\n";
|
|
};
|
|
/* End PBXShellScriptBuildPhase section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
314349EF3C4149F4A4A72378 /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
AF5828948B37FEEF5EF7F345 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
baseConfigurationReferenceAnchor = E265D0F6D10F52F5C1374EEB /* Configuration */;
|
|
baseConfigurationReferenceRelativePath = Config.xcconfig;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
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;
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_TESTABILITY = YES;
|
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
"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 = 18.2;
|
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
MTL_FAST_MATH = YES;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
|
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
};
|
|
name = Debug;
|
|
};
|
|
1C42200356BD14712FAE1CFA /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
baseConfigurationReferenceAnchor = E265D0F6D10F52F5C1374EEB /* Configuration */;
|
|
baseConfigurationReferenceRelativePath = Config.xcconfig;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
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;
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
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 = 18.2;
|
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
MTL_FAST_MATH = YES;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_COMPILATION_MODE = wholemodule;
|
|
VALIDATE_PRODUCT = YES;
|
|
};
|
|
name = Release;
|
|
};
|
|
AC996E9458BD3DAE9610EA49 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ARCHS = arm64;
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
CODE_SIGN_IDENTITY = "Apple Development";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
|
DEVELOPMENT_TEAM = "${TEAM_ID}";
|
|
ENABLE_PREVIEWS = YES;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
INFOPLIST_FILE = iosApp/Info.plist;
|
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Debug;
|
|
};
|
|
4FB276594B17F1A0D71D2462 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ARCHS = arm64;
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
CODE_SIGN_IDENTITY = "Apple Development";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
|
DEVELOPMENT_TEAM = "${TEAM_ID}";
|
|
ENABLE_PREVIEWS = YES;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
INFOPLIST_FILE = iosApp/Info.plist;
|
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Release;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
79A44D8DEA428263AC7DC2E1 /* Build configuration list for PBXProject "iosApp" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
AF5828948B37FEEF5EF7F345 /* Debug */,
|
|
1C42200356BD14712FAE1CFA /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
6F8AC65FA015674062B91E20 /* Build configuration list for PBXNativeTarget "iosApp" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
AC996E9458BD3DAE9610EA49 /* Debug */,
|
|
4FB276594B17F1A0D71D2462 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
|
|
/* Begin XCRemoteSwiftPackageReference section */
|
|
9A1B2C3D4E5F60718293A4B2 /* XCRemoteSwiftPackageReference "vlckit" */ = {
|
|
isa = XCRemoteSwiftPackageReference;
|
|
repositoryURL = "https://github.com/videolan/vlckit";
|
|
requirement = {
|
|
kind = revision;
|
|
revision = 6b87735a95fd3aa96f0fdb6d1b465a2d92badd8f;
|
|
};
|
|
};
|
|
/* End XCRemoteSwiftPackageReference section */
|
|
|
|
/* Begin XCSwiftPackageProductDependency section */
|
|
9A1B2C3D4E5F60718293A4B3 /* VLCKit */ = {
|
|
isa = XCSwiftPackageProductDependency;
|
|
package = 9A1B2C3D4E5F60718293A4B2 /* XCRemoteSwiftPackageReference "vlckit" */;
|
|
productName = VLCKit;
|
|
};
|
|
/* End XCSwiftPackageProductDependency section */
|
|
};
|
|
rootObject = B056E79C138AE849968965F1 /* Project object */;
|
|
} |