TWA 래퍼를 걷어내고 Compose Multiplatform 으로 다시 만들었다. 엔진·UI·모드 전부 commonMain 한 벌이라 Android 와 iOS 가 같은 코드를 쓴다. - engine/: 웹 JS 엔진을 Kotlin 으로 이식 (SRS+180 킥, 7-bag, T-spin, B2B, 콤보, All Clear, 점수·레벨). commonTest 28개 통과 - game/: 모드 규칙 + 중력/락딜레이/DAS/ARR 타이밍 - ui/: 네오브루탈 컴포넌트, 메인/솔로시트/인게임/결과/설정 - ui/Responsive.kt: 고정 해상도를 버리고 가용 크기에서 셀 크기·배율 계산. 폰 세로, 플립 초세로, 플립 커버(소형), 폴드 펼침, 태블릿/아이패드 가로 대응 - androidMain: resizeableActivity + configChanges 로 접기/펴기·회전 시 재시작 없음 - iosMain + iosApp/: MainViewController + SwiftUI 껍데기 + XcodeGen 설정 (실제 iOS 빌드는 macOS + Xcode 필요) - scripts/release.sh: 버전 상승 → 테스트 → 서명 빌드 → 태그 → Gitea 릴리스 자동화
54 lines
1.6 KiB
YAML
54 lines
1.6 KiB
YAML
# XcodeGen 설정 — macOS 에서 `xcodegen generate` 로 iosApp.xcodeproj 를 만든다.
|
|
# brew install xcodegen
|
|
# cd app/iosApp && xcodegen generate && open iosApp.xcodeproj
|
|
# Gradle 이 만든 ComposeApp.framework 를 링크한다.
|
|
name: iosApp
|
|
options:
|
|
bundleIdPrefix: kr.tkrmagid
|
|
deploymentTarget:
|
|
iOS: "15.0"
|
|
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: kr.tkrmagid.tetrig
|
|
MARKETING_VERSION: "2.0.0"
|
|
CURRENT_PROJECT_VERSION: "2"
|
|
SWIFT_VERSION: "5.0"
|
|
TARGETED_DEVICE_FAMILY: "1,2" # iPhone + iPad
|
|
ENABLE_USER_SCRIPT_SANDBOXING: NO
|
|
|
|
targets:
|
|
iosApp:
|
|
type: application
|
|
platform: iOS
|
|
sources:
|
|
- path: iosApp
|
|
info:
|
|
path: iosApp/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: TETRIG
|
|
UILaunchScreen: {}
|
|
UISupportedInterfaceOrientations:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
UISupportedInterfaceOrientations~ipad:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationPortraitUpsideDown
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
UIRequiresFullScreen: false
|
|
settings:
|
|
base:
|
|
FRAMEWORK_SEARCH_PATHS:
|
|
- "$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"
|
|
OTHER_LDFLAGS:
|
|
- "-framework"
|
|
- "ComposeApp"
|
|
preBuildScripts:
|
|
- name: Build Compose framework
|
|
script: |
|
|
cd "$SRCROOT/../"
|
|
./gradlew :composeApp:embedAndSignAppleFrameworkForXcode
|
|
basedOnDependencyAnalysis: false
|