diff --git a/.github/workflows/build-android-fcm.yml b/.github/workflows/build-android-fcm.yml new file mode 100644 index 0000000..b603622 --- /dev/null +++ b/.github/workflows/build-android-fcm.yml @@ -0,0 +1,91 @@ +name: Build Android (FCM) + +on: + workflow_dispatch: + push: + branches: + - main + - master + paths: + - 'lib/**' + - 'android/**' + - 'pubspec.yaml' + - '.github/workflows/build-android-fcm.yml' + pull_request: + paths: + - 'lib/**' + - 'android/**' + - 'pubspec.yaml' + - '.github/workflows/build-android-fcm.yml' + +jobs: + build-android-fcm: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v3 + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: '3.41.5' + channel: 'stable' + + - name: Get dependencies + run: flutter pub get + + - name: Configure Gradle + run: | + mkdir -p ~/.gradle + echo "org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m" >> ~/.gradle/gradle.properties + echo "kotlin.daemon.jvmargs=-Xmx1536m" >> ~/.gradle/gradle.properties + + - name: Build Universal APK + run: flutter build apk --release --flavor oneme + + - name: Build Split APKs + run: flutter build apk --release --split-per-abi --flavor oneme + + - name: Upload Universal APK + uses: actions/upload-artifact@v4 + with: + name: komet-android-fcm-universal + path: build/app/outputs/flutter-apk/app-oneme-release.apk + retention-days: 30 + + - name: Upload arm64-v8a APK + uses: actions/upload-artifact@v4 + with: + name: komet-android-fcm-arm64-v8a + path: build/app/outputs/flutter-apk/app-oneme-arm64-v8a-release.apk + retention-days: 30 + + - name: Upload armeabi-v7a APK + uses: actions/upload-artifact@v4 + with: + name: komet-android-fcm-armeabi-v7a + path: build/app/outputs/flutter-apk/app-oneme-armeabi-v7a-release.apk + retention-days: 30 + + - name: Upload x86_64 APK + uses: actions/upload-artifact@v4 + with: + name: komet-android-fcm-x86_64 + path: build/app/outputs/flutter-apk/app-oneme-x86_64-release.apk + retention-days: 30 + + - name: Build App Bundle + run: flutter build appbundle --release --flavor oneme + + - name: Upload App Bundle artifact + uses: actions/upload-artifact@v4 + with: + name: komet-android-fcm-aab + path: build/app/outputs/bundle/onemeRelease/app-oneme-release.aab + retention-days: 30 diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 380cd38..4866fe6 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -45,47 +45,47 @@ jobs: mkdir -p ~/.gradle echo "org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m" >> ~/.gradle/gradle.properties echo "kotlin.daemon.jvmargs=-Xmx1536m" >> ~/.gradle/gradle.properties - + - name: Build Universal APK - run: flutter build apk --release + run: flutter build apk --release --flavor komet - name: Build Split APKs - run: flutter build apk --release --split-per-abi + run: flutter build apk --release --split-per-abi --flavor komet - name: Upload Universal APK uses: actions/upload-artifact@v4 with: name: komet-android-universal - path: build/app/outputs/flutter-apk/app-release.apk + path: build/app/outputs/flutter-apk/app-komet-release.apk retention-days: 30 - name: Upload arm64-v8a APK uses: actions/upload-artifact@v4 with: name: komet-android-arm64-v8a - path: build/app/outputs/flutter-apk/app-arm64-v8a-release.apk + path: build/app/outputs/flutter-apk/app-komet-arm64-v8a-release.apk retention-days: 30 - name: Upload armeabi-v7a APK uses: actions/upload-artifact@v4 with: name: komet-android-armeabi-v7a - path: build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk + path: build/app/outputs/flutter-apk/app-komet-armeabi-v7a-release.apk retention-days: 30 - name: Upload x86_64 APK uses: actions/upload-artifact@v4 with: name: komet-android-x86_64 - path: build/app/outputs/flutter-apk/app-x86_64-release.apk + path: build/app/outputs/flutter-apk/app-komet-x86_64-release.apk retention-days: 30 - name: Build App Bundle - run: flutter build appbundle --release + run: flutter build appbundle --release --flavor komet - name: Upload App Bundle artifact uses: actions/upload-artifact@v4 with: name: komet-android-aab - path: build/app/outputs/bundle/release/app-release.aab + path: build/app/outputs/bundle/kometRelease/app-komet-release.aab retention-days: 30 diff --git a/.github/workflows/flutter-dev.yml b/.github/workflows/flutter-dev.yml index a1dc487..7e5d633 100644 --- a/.github/workflows/flutter-dev.yml +++ b/.github/workflows/flutter-dev.yml @@ -13,10 +13,17 @@ jobs: - name: Checkout code uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + - name: Set up Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 'stable' + flutter-version: '3.41.5' + channel: 'stable' - name: Install dependencies run: flutter pub get @@ -24,5 +31,11 @@ jobs: - name: Flutter analyze run: flutter analyze + - name: Configure Gradle + run: | + mkdir -p ~/.gradle + echo "org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m" >> ~/.gradle/gradle.properties + echo "kotlin.daemon.jvmargs=-Xmx1536m" >> ~/.gradle/gradle.properties + - name: Build Android APK - run: flutter build apk --release + run: flutter build apk --release --flavor komet diff --git a/.github/workflows/flutter-main.yml b/.github/workflows/flutter-main.yml index 3255616..f43dd96 100644 --- a/.github/workflows/flutter-main.yml +++ b/.github/workflows/flutter-main.yml @@ -6,17 +6,23 @@ on: - 'main' jobs: - analyze-and-build-all: + android: runs-on: ubuntu-latest - steps: - name: Checkout code uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + - name: Set up Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 'stable' + flutter-version: '3.41.5' + channel: 'stable' - name: Install dependencies run: flutter pub get @@ -24,8 +30,34 @@ jobs: - name: Flutter analyze run: flutter analyze + - name: Configure Gradle + run: | + mkdir -p ~/.gradle + echo "org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m" >> ~/.gradle/gradle.properties + echo "kotlin.daemon.jvmargs=-Xmx1536m" >> ~/.gradle/gradle.properties + - name: Build Android APK - run: flutter build apk --release + run: flutter build apk --release --flavor komet + + web-linux: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: '3.41.5' + channel: 'stable' + + - name: Install Linux desktop dependencies + run: | + sudo apt-get update + sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev + + - name: Install dependencies + run: flutter pub get - name: Build Web run: flutter build web --release @@ -33,13 +65,41 @@ jobs: - name: Build Linux run: flutter build linux --release + windows: + runs-on: windows-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: '3.41.5' + channel: 'stable' + + - name: Install dependencies + run: flutter pub get + - name: Build Windows run: flutter build windows --release - - name: Build iOS (only macOS runners) - if: runner.os == 'macOS' - run: flutter build ios --release + apple: + runs-on: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 - - name: Build macOS (only macOS runners) - if: runner.os == 'macOS' + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: '3.41.5' + channel: 'stable' + + - name: Install dependencies + run: flutter pub get + + - name: Build iOS + run: flutter build ios --release --no-codesign + + - name: Build macOS run: flutter build macos --release diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 1e361bc..fa4342c 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -3,6 +3,7 @@ plugins { id("kotlin-android") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") + id("com.google.gms.google-services") } android { @@ -20,16 +21,27 @@ android { } defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "ru.komet.app" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion + minSdk = maxOf(flutter.minSdkVersion, 23) targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName } + flavorDimensions += "distribution" + + productFlavors { + create("komet") { + dimension = "distribution" + isDefault = true + applicationId = "ru.komet.app" + } + create("oneme") { + dimension = "distribution" + applicationId = "ru.oneme.app" + } + } + buildTypes { release { // TODO: Add your own signing config for the release build. diff --git a/android/app/src/komet/google-services.json b/android/app/src/komet/google-services.json new file mode 100644 index 0000000..9027e06 --- /dev/null +++ b/android/app/src/komet/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "659634599081", + "project_id": "max-messenger-app", + "storage_bucket": "max-messenger-app.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:659634599081:android:00000000000000000000ab", + "android_client_info": { + "package_name": "ru.komet.app" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyABuDYeeDXIOrKTXLkUj30Ii143ofPe63Q" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index b2c538d..8dd5624 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + +