301 lines
11 KiB
YAML
301 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: 需要读取相册获取图片
|
|
NSLocalNetworkUsageDescription: 需要访问本地网络以连接电脑传输歌曲和同步数据
|
|
NSBonjourServices:
|
|
- _llmp._tcp
|
|
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
|
|
cd "$SRCROOT/.."
|
|
if [ "YES" = "${OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED:-}" ]; then
|
|
echo "Kotlin framework was built by the IDE; syncing Compose resources only"
|
|
./gradlew -Pcompose.ios.resources.archs=arm64 :composeApp:syncComposeResourcesForIos --rerun
|
|
exit 0
|
|
fi
|
|
./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
|