From 2e9aca44945bb64cb813ea3844ce05d2e7c08d54 Mon Sep 17 00:00:00 2001 From: paregi12 Date: Sun, 28 Jun 2026 01:16:02 +0530 Subject: [PATCH] Add files via upload --- .github/workflows/duild-mobile.yml | 189 +++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 .github/workflows/duild-mobile.yml diff --git a/.github/workflows/duild-mobile.yml b/.github/workflows/duild-mobile.yml new file mode 100644 index 000000000..04107ce23 --- /dev/null +++ b/.github/workflows/duild-mobile.yml @@ -0,0 +1,189 @@ +name: Build Nuvio Mobile (iOS & Android) + +on: + push: + branches: + - 'kmp' + - '*' + workflow_dispatch: + +jobs: + build-ios-full: + name: Build iOS Full Version + runs-on: macos-latest + env: + GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx11264M -Dkotlin.daemon.jvmargs=-Xmx11264M -Dkotlin.native.jvmargs=-Xmx11264M" + steps: + - name: Checkout Repository & Submodules + uses: actions/checkout@v4 + + - name: Fetch iOS Specific Submodule + run: | + set -euo pipefail + git submodule sync -- MPVKit + git submodule update --init --depth 1 -- MPVKit + + - name: Pull Git LFS files + run: | + set -euo pipefail + git lfs install --local + git lfs pull + cd MPVKit + git lfs install --local + git lfs pull + + - name: Select Latest Stable Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + + - name: Make gradlew executable + run: chmod +x ./gradlew + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Generate local.properties + env: + SUPABASE_URL_VAR: ${{ secrets.SUPABASE_URL || 'https://dpyhjjcoabcglfmgecug.supabase.co' }} + SUPABASE_ANON_KEY_VAR: ${{ secrets.SUPABASE_ANON_KEY || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImRweWhqamNvYWJjZ2xmbWdlY3VnIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzA3OTAwMDAwfQ.dummy' }} + TRAKT_CLIENT_ID_VAR: ${{ secrets.TRAKT_CLIENT_ID || 'dummy-key' }} + TRAKT_CLIENT_SECRET_VAR: ${{ secrets.TRAKT_CLIENT_SECRET || 'dummy-key' }} + TRAKT_REDIRECT_URI_VAR: ${{ secrets.TRAKT_REDIRECT_URI || 'nuvio://auth/trakt' }} + PREMIUMIZE_CLIENT_ID_VAR: ${{ secrets.PREMIUMIZE_CLIENT_ID || 'dummy-key' }} + PREMIUMIZE_CLIENT_SECRET_VAR: ${{ secrets.PREMIUMIZE_CLIENT_SECRET || 'dummy-key' }} + PREMIUMIZE_REDIRECT_URI_VAR: ${{ secrets.PREMIUMIZE_REDIRECT_URI || 'nuvio://auth/trakt' }} + TMDB_API_KEY_VAR: ${{ secrets.TMDB_API_KEY || 'dummy-key' }} + INTRODB_API_URL_VAR: ${{ secrets.INTRODB_API_URL || 'https://api.introdb.app' }} + CONTRIBUTIONS_URL_VAR: ${{ secrets.CONTRIBUTIONS_URL || '' }} + DONATIONS_BASE_URL_VAR: ${{ secrets.DONATIONS_BASE_URL || '' }} + DONATIONS_DONATE_URL_VAR: ${{ secrets.DONATIONS_DONATE_URL || '' }} + DIRECT_DEBRID_API_BASE_URL_VAR: ${{ secrets.DIRECT_DEBRID_API_BASE_URL || '' }} + run: | + cat << EOF > local.properties + SUPABASE_URL=${SUPABASE_URL_VAR} + SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY_VAR} + TRAKT_CLIENT_ID=${TRAKT_CLIENT_ID_VAR} + TRAKT_CLIENT_SECRET=${TRAKT_CLIENT_SECRET_VAR} + TRAKT_REDIRECT_URI=${TRAKT_REDIRECT_URI_VAR} + PREMIUMIZE_CLIENT_ID=${PREMIUMIZE_CLIENT_ID_VAR} + PREMIUMIZE_CLIENT_SECRET=${PREMIUMIZE_CLIENT_SECRET_VAR} + PREMIUMIZE_REDIRECT_URI=${PREMIUMIZE_REDIRECT_URI_VAR} + TMDB_API_KEY=${TMDB_API_KEY_VAR} + INTRODB_API_URL=${INTRODB_API_URL_VAR} + CONTRIBUTIONS_URL=${CONTRIBUTIONS_URL_VAR} + DONATIONS_BASE_URL=${DONATIONS_BASE_URL_VAR} + DONATIONS_DONATE_URL=${DONATIONS_DONATE_URL_VAR} + DIRECT_DEBRID_API_BASE_URL=${DIRECT_DEBRID_API_BASE_URL_VAR} + NUVIO_IOS_DISTRIBUTION=full + EOF + + - name: Build iOS App via Xcode + run: | + rm -rf ~/Library/Caches/org.swift.swiftpm/ + rm -rf ~/Library/Developer/Xcode/DerivedData/ + cd iosApp + rm -rf build + xcodebuild -resolvePackageDependencies -project iosApp.xcodeproj -scheme iosApp -derivedDataPath build + xcodebuild \ + -project iosApp.xcodeproj \ + -scheme iosApp \ + -configuration Release \ + -sdk iphoneos \ + -destination "generic/platform=iOS" \ + -derivedDataPath build \ + CODE_SIGNING_ALLOWED=NO \ + CODE_SIGNING_REQUIRED=NO \ + CODE_SIGN_IDENTITY="" \ + build + + - name: Package App into .ipa + run: | + cd iosApp/build/Build/Products/Release-iphoneos + APP_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" Nuvio.app/Info.plist) + mkdir -p Payload + mv Nuvio.app Payload/ + zip -q -r "Nuvio-v${APP_VERSION}-Full.ipa" Payload + echo "IPA_FILENAME=Nuvio-v${APP_VERSION}-Full.ipa" >> $GITHUB_ENV + + - name: Upload iOS Artifact + uses: actions/upload-artifact@v4 + with: + name: Nuvio-iOS-Full + path: iosApp/build/Build/Products/Release-iphoneos/${{ env.IPA_FILENAME }} + + build-android: + name: Build Android Full Version + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + - name: Generate local.properties + env: + SUPABASE_URL_VAR: ${{ secrets.SUPABASE_URL || 'https://dpyhjjcoabcglfmgecug.supabase.co' }} + SUPABASE_ANON_KEY_VAR: ${{ secrets.SUPABASE_ANON_KEY || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImRweWhqamNvYWJjZ2xmbWdlY3VnIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzA3OTAwMDAwfQ.dummy' }} + TRAKT_CLIENT_ID_VAR: ${{ secrets.TRAKT_CLIENT_ID || 'dummy-key' }} + TRAKT_CLIENT_SECRET_VAR: ${{ secrets.TRAKT_CLIENT_SECRET || 'dummy-key' }} + TRAKT_REDIRECT_URI_VAR: ${{ secrets.TRAKT_REDIRECT_URI || 'nuvio://auth/trakt' }} + PREMIUMIZE_CLIENT_ID_VAR: ${{ secrets.PREMIUMIZE_CLIENT_ID || 'dummy-key' }} + PREMIUMIZE_CLIENT_SECRET_VAR: ${{ secrets.PREMIUMIZE_CLIENT_SECRET || 'dummy-key' }} + PREMIUMIZE_REDIRECT_URI_VAR: ${{ secrets.PREMIUMIZE_REDIRECT_URI || 'nuvio://auth/trakt' }} + TMDB_API_KEY_VAR: ${{ secrets.TMDB_API_KEY || 'dummy-key' }} + INTRODB_API_URL_VAR: ${{ secrets.INTRODB_API_URL || 'https://api.introdb.app' }} + CONTRIBUTIONS_URL_VAR: ${{ secrets.CONTRIBUTIONS_URL || '' }} + DONATIONS_BASE_URL_VAR: ${{ secrets.DONATIONS_BASE_URL || '' }} + DONATIONS_DONATE_URL_VAR: ${{ secrets.DONATIONS_DONATE_URL || '' }} + DIRECT_DEBRID_API_BASE_URL_VAR: ${{ secrets.DIRECT_DEBRID_API_BASE_URL || '' }} + run: | + cat << EOF > local.properties + SUPABASE_URL=${SUPABASE_URL_VAR} + SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY_VAR} + TRAKT_CLIENT_ID=${TRAKT_CLIENT_ID_VAR} + TRAKT_CLIENT_SECRET=${TRAKT_CLIENT_SECRET_VAR} + TRAKT_REDIRECT_URI=${TRAKT_REDIRECT_URI_VAR} + PREMIUMIZE_CLIENT_ID=${PREMIUMIZE_CLIENT_ID_VAR} + PREMIUMIZE_CLIENT_SECRET=${PREMIUMIZE_CLIENT_SECRET_VAR} + PREMIUMIZE_REDIRECT_URI=${PREMIUMIZE_REDIRECT_URI_VAR} + TMDB_API_KEY=${TMDB_API_KEY_VAR} + INTRODB_API_URL=${INTRODB_API_URL_VAR} + CONTRIBUTIONS_URL=${CONTRIBUTIONS_URL_VAR} + DONATIONS_BASE_URL=${DONATIONS_BASE_URL_VAR} + DONATIONS_DONATE_URL=${DONATIONS_DONATE_URL_VAR} + DIRECT_DEBRID_API_BASE_URL=${DIRECT_DEBRID_API_BASE_URL_VAR} + NUVIO_ANDROID_DISTRIBUTION=full + EOF + + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + + - name: Build Full APK + run: | + ./gradlew \ + :androidApp:assembleFullDebug \ + -Pnuvio.android.distribution=full \ + -Pnuvio.splitAbi=true \ + --stacktrace + + - name: Upload Android Artifact + uses: actions/upload-artifact@v4 + with: + name: Nuvio-Android-Full + path: androidApp/build/outputs/apk/full/debug/*.apk