diff --git a/.github/workflows/ios-build.yml b/.github/workflows/ios-build.yml index af8949e..7aac59f 100644 --- a/.github/workflows/ios-build.yml +++ b/.github/workflows/ios-build.yml @@ -1,14 +1,18 @@ name: Build Max+ iOS on: + push: + branches: + - main + pull_request: workflow_dispatch: jobs: build: - runs-on: macos-14 + runs-on: macos-15 env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - timeout-minutes: 20 + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + timeout-minutes: 40 steps: - uses: actions/checkout@v4 @@ -16,7 +20,7 @@ jobs: - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: "latest-stable" + xcode-version: "16.4" - name: Setup Bun uses: oven-sh/setup-bun@v2 @@ -32,61 +36,27 @@ jobs: workspaces: "src-tauri" - name: Install dependencies - run: bun install - - - name: Prepare Tauri iOS - run: | - rm -rf src-tauri/gen/apple - bun tauri ios init - - - name: Generate Icons - run: bun run tauri icon static/favicon.png + run: bun install --frozen-lockfile - name: Patch Cargo.toml for CI run: | sed -i '' 's|path = "../../rumax"|git = "https://github.com/me0wkie/rumax.git", branch = "main"|g' src-tauri/Cargo.toml echo "Cargo.toml updated for cloud build:" - cat src-tauri/Cargo.toml | grep rumax - - - name: Patch Tauri identifier for FCM - run: | - sed -i 's|"identifier": "org.meowkie.max"|"identifier": "ru.oneme.app"|g' src-tauri/tauri.conf.json - - echo "Tauri conf updated:" - grep identifier src-tauri/tauri.conf.json + grep rumax src-tauri/Cargo.toml - - name: Build Xcode Project - run: | - mkdir -p $GITHUB_WORKSPACE/bin - cat << 'EOF' > $GITHUB_WORKSPACE/bin/xcodebuild - #!/bin/bash - exec /usr/bin/xcodebuild "$@" CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY="" PROVISIONING_PROFILE_SPECIFIER="" - EOF - chmod +x $GITHUB_WORKSPACE/bin/xcodebuild - export PATH="$GITHUB_WORKSPACE/bin:$PATH" - - bun tauri ios build || true - - - name: Package IPA - run: | - mkdir -p Payload - - APP_PATH=$(find src-tauri/gen/apple -type d -name "*.app" | head -n 1) + - name: Prepare Tauri iOS + run: bun tauri ios init --ci - if [ -z "$APP_PATH" ]; then - echo "Error: .app file not found!" - find src-tauri/gen/apple -type d -name "*.app" - exit 1 - fi + - name: Generate Icons + run: bun run tauri icon static/favicon.png - echo "Found app at: $APP_PATH" - cp -r "$APP_PATH" Payload/ - zip -qr Max_Unsigned.ipa Payload + - name: Build iOS + run: bun tauri ios build --ci --target aarch64 --no-sign - name: Upload Artifact uses: actions/upload-artifact@v4 with: - name: Mobile-iOS-Build - path: maxplus_unsigned.ipa + name: maxplus-ios-unsigned + path: src-tauri/gen/apple/build/arm64/*.ipa if-no-files-found: error diff --git a/README.md b/README.md index d8cc77b..3596bc2 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,19 @@ $ cargo tauri android build --target aarch64 $ cargo tauri android build ``` -Нормальная сборка под iOS возможна только с macOS. Может понадобиться [платная подписка Apple Developer.](https://developer.apple.com/support/compare-memberships/) +### Сборка под iOS 15+ на macOS + +В CI используется Xcode 16.4. После установки [зависимостей для iOS](https://v2.tauri.app/start/prerequisites/#ios) и зависимостей проекта: + +```sh +bun tauri ios init +bun run tauri icon static/favicon.png +bun tauri ios build --target aarch64 --no-sign +``` + +Неподписанный IPA появится в `src-tauri/gen/apple/build/arm64/`. Для установки на устройство его нужно подписать. Для сборки с подписью настройте [Apple Developer и подпись Tauri](https://v2.tauri.app/distribute/sign/ios/) и уберите `--no-sign`. + +GitHub Actions **Build Max+ iOS** выполняет ту же release-сборку при push в `main`, в pull request и вручную через `workflow_dispatch`. IPA доступен в артефакте `maxplus-ios-unsigned` завершённого запуска. Workflow не публикует GitHub Release. ## Сброс данных клиента Секретные чаты теряются! diff --git a/src-tauri/Info.ios.plist b/src-tauri/Info.ios.plist index 1609b9d..8f2e722 100644 --- a/src-tauri/Info.ios.plist +++ b/src-tauri/Info.ios.plist @@ -4,8 +4,6 @@ NSFaceIDUsageDescription Authenticate with biometric - - NSCameraUsageDescription Read QR codes diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index a492ca1..6ef4b5d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -39,6 +39,9 @@ "icons/icon.icns", "icons/icon.ico" ], + "iOS": { + "minimumSystemVersion": "15.0" + }, "linux": { "appimage": { "bundleMediaFramework": false