Files
LoveLiveMusicPlayerKMP/iosApp/project.yml
T

297 lines
11 KiB
YAML

name: iosApp
options:
bundleIdPrefix: com.zhushenwudi.lovelivemusicplayer
deploymentTarget:
iOS: "18.0"
createIntermediateGroups: true
groupSortPosition: top
# Match Flutter Runner configs (Debug / Release / Profile=AdHoc)
configs:
Debug: debug
Release: release
Profile: release
settings:
base:
SWIFT_VERSION: "5.0"
TARGETED_DEVICE_FAMILY: "1,2"
CLANG_ENABLE_MODULES: YES
ENABLE_BITCODE: NO
ENABLE_USER_SCRIPT_SANDBOXING: NO
# Xcode 15+/26 Debug Dylib puts app code in *.debug.dylib without App Group
# entitlements → CFPrefs "client is not entitled" / Container null on simulator.
ENABLE_DEBUG_DYLIB: NO
# Synced from Flutter Runner (pubspec 1.7.4+74)
MARKETING_VERSION: "1.7.4"
CURRENT_PROJECT_VERSION: "74"
SUPPORTED_PLATFORMS: "iphoneos iphonesimulator"
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: YES
configs:
Debug:
CODE_SIGN_STYLE: Manual
CODE_SIGN_IDENTITY: "Apple Development"
"CODE_SIGN_IDENTITY[sdk=iphoneos*]": "iPhone Developer"
DEVELOPMENT_TEAM: ""
"DEVELOPMENT_TEAM[sdk=iphoneos*]": V73L9LHPCA
Release:
CODE_SIGN_STYLE: Manual
CODE_SIGN_IDENTITY: "Apple Development"
"CODE_SIGN_IDENTITY[sdk=iphoneos*]": "iPhone Distribution"
DEVELOPMENT_TEAM: ""
"DEVELOPMENT_TEAM[sdk=iphoneos*]": V73L9LHPCA
VALIDATE_PRODUCT: YES
Profile:
CODE_SIGN_STYLE: Manual
CODE_SIGN_IDENTITY: "Apple Development"
"CODE_SIGN_IDENTITY[sdk=iphoneos*]": "iPhone Distribution"
DEVELOPMENT_TEAM: ""
"DEVELOPMENT_TEAM[sdk=iphoneos*]": V73L9LHPCA
VALIDATE_PRODUCT: YES
targets:
iosApp:
type: application
platform: iOS
sources:
- path: iosApp
excludes:
- "Info.plist"
- "**/*.entitlements"
info:
path: iosApp/Info.plist
properties:
CFBundleDisplayName: LLMP
CFBundleName: LLMP
CFBundleShortVersionString: "$(MARKETING_VERSION)"
CFBundleVersion: "$(CURRENT_PROJECT_VERSION)"
LSRequiresIPhoneOS: true
CADisableMinimumFrameDurationOnPhone: true
ITSAppUsesNonExemptEncryption: false
LSApplicationCategoryType: public.app-category.music
LSSupportsOpeningDocumentsInPlace: true
UIFileSharingEnabled: true
UIRequiresFullScreen: true
UIStatusBarHidden: false
UIViewControllerBasedStatusBarAppearance: false
UIApplicationSupportsIndirectInputEvents: true
UILaunchScreen: {}
BGTaskSchedulerPermittedIdentifiers:
- com.zhushenwudi.lovelivemusicplayer
UIBackgroundModes:
- audio
- fetch
- processing
- remote-notification
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
"UISupportedInterfaceOrientations~ipad":
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
NSCameraUsageDescription: 需要获取摄像头权限扫描二维码
NSPhotoLibraryUsageDescription: 需要读取相册获取图片
NSAppTransportSecurity:
NSAllowsArbitraryLoads: true
NSAllowsArbitraryLoads: true
MOBAppKey: 375f94ab8316c
MOBAppSecret: 9cac7a0532d211eb04fcf6b25b197859
LSApplicationQueriesSchemes:
- mqq
- mqqapi
- timapi
- mqqopensdkminiapp
- mqqopensdkapiV2
- mqqopensdkapiV3
- mqqopensdkapiV4
- mqzoneopensdk
- mqzoneopensdkapi
- mqzoneopensdkapi19
- mqzoneopensdkapiV2
- mqqwpa
- mqzone
CFBundleURLTypes:
- CFBundleTypeRole: Editor
CFBundleURLName: qq
CFBundleURLSchemes:
- QQ0614FEC2
- CFBundleTypeRole: Editor
CFBundleURLName: qzone
CFBundleURLSchemes:
- tencent102039234
- CFBundleTypeRole: Editor
CFBundleURLName: llmp
CFBundleURLSchemes:
- llmp
- CFBundleTypeRole: Editor
CFBundleURLName: llmppush
CFBundleURLSchemes:
- llmppush
# KMP / WidgetKit deep link (also used on Android)
- CFBundleTypeRole: Editor
CFBundleURLName: homeWidget
CFBundleURLSchemes:
- homeWidgetExample
UIApplicationSceneManifest:
UIApplicationSupportsMultipleScenes: true
UISceneConfigurations:
UIWindowSceneSessionRoleApplication:
- UISceneConfigurationName: Default Configuration
UISceneDelegateClassName: $(PRODUCT_MODULE_NAME).SceneDelegate
CPTemplateApplicationSceneSessionRoleApplication:
- UISceneConfigurationName: CarPlay Configuration
UISceneDelegateClassName: $(PRODUCT_MODULE_NAME).CarPlaySceneDelegate
# Base entitlements written by XcodeGen; Debug/Profile use Debug file, Release overrides below
entitlements:
path: iosApp/iosApp.entitlements
properties:
aps-environment: development
com.apple.developer.associated-domains:
- applinks:0524259523de2fc4f2a1a2a32df3efd8.share2dlink.com
com.apple.developer.carplay-audio: true
com.apple.developer.playable-content: true
com.apple.security.application-groups:
- group.com.zhushenwudi.lovelivemusicplayer
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.zhushenwudi.lovelivemusicplayer
PRODUCT_NAME: LLMP
INFOPLIST_FILE: iosApp/Info.plist
INFOPLIST_KEY_CFBundleDisplayName: LLMP
INFOPLIST_KEY_LSApplicationCategoryType: public.app-category.music
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS: YES
LD_RUNPATH_SEARCH_PATHS:
- $(inherited)
- "@executable_path/Frameworks"
FRAMEWORK_SEARCH_PATHS:
- $(inherited)
- "$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"
OTHER_LDFLAGS:
- $(inherited)
- -framework
- ComposeApp
- -lsqlite3
"EXCLUDED_ARCHS[sdk=iphonesimulator*]": $(inherited)
configs:
Debug:
CODE_SIGN_ENTITLEMENTS: iosApp/iosApp.entitlements
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]": LLMP-M-DEVELOP
PROVISIONING_PROFILE_SPECIFIER: ""
Release:
CODE_SIGN_ENTITLEMENTS: iosApp/iosAppRelease.entitlements
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]": LLMP-M-RELEASE
PROVISIONING_PROFILE_SPECIFIER: ""
Profile:
CODE_SIGN_ENTITLEMENTS: iosApp/iosApp.entitlements
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]": LLMP-M-AD-HOC
PROVISIONING_PROFILE_SPECIFIER: ""
dependencies:
- target: WidgetExtension
embed: true
postBuildScripts:
- name: Verify Widget Extension Embedded
basedOnDependencyAnalysis: false
script: |
set -euo pipefail
APPEX="${TARGET_BUILD_DIR}/${WRAPPER_NAME}/PlugIns/WidgetExtension.appex"
if [ ! -d "$APPEX" ]; then
echo "error: WidgetExtension.appex is missing from ${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
echo "error: The app will install without widgets. Check WidgetExtension code signing."
exit 1
fi
echo "Widget extension embedded: $APPEX"
preBuildScripts:
- name: Build ComposeApp.framework
basedOnDependencyAnalysis: false
script: |
set -euo pipefail
if [ "YES" = "${OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED:-}" ]; then
echo "Skipping Gradle build (OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED=YES)"
exit 0
fi
cd "$SRCROOT/.."
./gradlew :composeApp:embedAndSignAppleFrameworkForXcode
WidgetExtension:
type: app-extension
platform: iOS
sources:
- path: WidgetExtension
excludes:
- "Info.plist"
- "**/*.entitlements"
- "HomeWidgetExampleControl.swift"
- "HomeWidgetExampleLiveActivity.swift"
info:
path: WidgetExtension/Info.plist
properties:
CFBundleDisplayName: LLMP
CFBundleShortVersionString: "$(MARKETING_VERSION)"
CFBundleVersion: "$(CURRENT_PROJECT_VERSION)"
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension
entitlements:
path: WidgetExtension/WidgetExtension.entitlements
properties:
com.apple.security.application-groups:
- group.com.zhushenwudi.lovelivemusicplayer
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.zhushenwudi.lovelivemusicplayer.HomeWidgetExample
PRODUCT_NAME: "$(TARGET_NAME)"
INFOPLIST_FILE: WidgetExtension/Info.plist
INFOPLIST_KEY_CFBundleDisplayName: LLMP
INFOPLIST_KEY_NSHumanReadableCopyright: ""
CODE_SIGN_ENTITLEMENTS: WidgetExtension/WidgetExtension.entitlements
# Match Flutter HomeWidgetExampleExtension deployment
IPHONEOS_DEPLOYMENT_TARGET: "17.0"
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME: WidgetBackground
LD_RUNPATH_SEARCH_PATHS:
- $(inherited)
- "@executable_path/Frameworks"
- "@executable_path/../../Frameworks"
SKIP_INSTALL: YES
SUPPORTS_MACCATALYST: NO
GENERATE_INFOPLIST_FILE: YES
"EXCLUDED_ARCHS[sdk=iphoneos*]": armv7
"EXCLUDED_ARCHS[sdk=iphonesimulator*]": $(inherited)
configs:
Debug:
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]": LLMP-M-DEVELOP-WIDGET
PROVISIONING_PROFILE_SPECIFIER: ""
Release:
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]": LLMP-M-RELEASE-WIDGET
PROVISIONING_PROFILE_SPECIFIER: ""
Profile:
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]": LLMP-M-AD-HOC-WIDGET
PROVISIONING_PROFILE_SPECIFIER: ""
schemes:
# Main app scheme — do NOT list WidgetExtension with `run` / `all`, or XcodeGen
# marks wasCreatedForAppExtension=YES and Run jumps to widget debug (needs _XCWidgetKind).
# Widget still builds + embeds via iosApp → WidgetExtension dependency.
iosApp:
build:
targets:
iosApp: all
run:
config: Debug
archive:
config: Release
profile:
config: Profile
# Only use this scheme when debugging WidgetKit itself (intentionally opens Home).
WidgetExtension:
build:
targets:
WidgetExtension: [run, test, profile, analyze, archive]
iosApp: [run]
run:
config: Debug
environmentVariables:
_XCWidgetKind: HomeWidgetExampleWhite
_XCWidgetFamily: systemMedium