Update README.md #26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build iOS | |
| on: | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| branches: [ master ] | |
| workflow_dispatch: | |
| jobs: | |
| build-ios: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '17' | |
| - name: Setup Kotlin | |
| run: | | |
| chmod +x gradlew | |
| ./gradlew --version | |
| - name: Cache Gradle | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: Build Kotlin Framework | |
| run: | | |
| # Устанавливаем переменные для Xcode | |
| echo "SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)" >> $GITHUB_ENV | |
| echo "PLATFORM_NAME=iphoneos" >> $GITHUB_ENV | |
| # Собираем для arm64 | |
| ./gradlew :composeApp:linkDebugFrameworkIosArm64 \ | |
| -Pkotlin.native.cocoapods.generate.wrapper=true \ | |
| --stacktrace | |
| - name: Prepare Xcode project | |
| run: | | |
| cd iosApp | |
| # Устанавливаем CocoaPods если есть | |
| if [ -f "Podfile" ]; then | |
| pod install | |
| fi | |
| # Показываем доступные схемы | |
| echo "Available schemes:" | |
| xcodebuild -list -project iosApp.xcodeproj | |
| - name: Build iOS App with explicit output path | |
| run: | | |
| cd iosApp | |
| # Создаем директорию для бинарников | |
| mkdir -p build/Debug-iphoneos | |
| # Устанавливаем DERIVED_DATA_PATH для контроля вывода | |
| DERIVED_DATA_PATH="$PWD/build/DerivedData" | |
| # Сборка с явным указанием DerivedData | |
| if [ -f "iosApp.xcworkspace" ]; then | |
| xcodebuild -workspace iosApp.xcworkspace \ | |
| -scheme iosApp \ | |
| -configuration Debug \ | |
| -sdk iphoneos \ | |
| -arch arm64 \ | |
| -derivedDataPath "$DERIVED_DATA_PATH" \ | |
| CODE_SIGNING_ALLOWED=NO \ | |
| SKIP_INSTALL=NO \ | |
| build | |
| else | |
| xcodebuild -project iosApp.xcodeproj \ | |
| -scheme iosApp \ | |
| -configuration Debug \ | |
| -sdk iphoneos \ | |
| -arch arm64 \ | |
| -derivedDataPath "$DERIVED_DATA_PATH" \ | |
| CODE_SIGNING_ALLOWED=NO \ | |
| SKIP_INSTALL=NO \ | |
| build | |
| fi | |
| # Копируем .app в известное место | |
| echo "Looking for .app in DerivedData..." | |
| find "$DERIVED_DATA_PATH" -name "*.app" -type d | |
| # Копируем .app если найден | |
| APP_PATH=$(find "$DERIVED_DATA_PATH" -name "*.app" -type d | head -n 1) | |
| if [ ! -z "$APP_PATH" ]; then | |
| echo "Found .app at: $APP_PATH" | |
| cp -r "$APP_PATH" build/Debug-iphoneos/ | |
| else | |
| echo "❌ .app not found in DerivedData" | |
| fi | |
| - name: Alternative - Find .app everywhere | |
| run: | | |
| cd iosApp | |
| echo "🔍 Searching for .app bundles in entire project..." | |
| find "$PWD" -name "*.app" -type d | |
| # Поиск в стандартных местах Xcode | |
| echo "🔍 Searching in Xcode default locations..." | |
| find ~/Library/Developer/Xcode/DerivedData -name "*.app" -type d 2>/dev/null || true | |
| # Поиск в build директории | |
| echo "🔍 Searching in build directory..." | |
| find build -name "*.app" -type d 2>/dev/null || true | |
| - name: Create IPA from found app | |
| run: | | |
| cd iosApp | |
| # Ищем .app во всех возможных местах | |
| APP_PATH=$(find "$PWD" -name "*.app" -type d | head -n 1) | |
| if [ ! -z "$APP_PATH" ]; then | |
| echo "✅ Found app at: $APP_PATH" | |
| mkdir -p Payload | |
| cp -r "$APP_PATH" Payload/ | |
| zip -r app.ipa Payload | |
| echo "✅ IPA created successfully" | |
| else | |
| echo "❌ Could not find .app bundle" | |
| exit 1 | |
| fi | |
| - name: Upload IPA artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ios-app | |
| path: iosApp/app.ipa | |
| retention-days: 7 | |
| if-no-files-found: warn |