diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 6ae69862..2ad977e8 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -32,6 +32,10 @@ jobs: with: flutter-version: '3.24.x' channel: 'stable' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} - name: Install Flutter dependencies run: flutter pub get - run: flutter build appbundle --release @@ -73,6 +77,12 @@ jobs: with: flutter-version: '3.24.x' channel: 'stable' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} + - name: Install flutterfire_cli + run: dart pub global activate flutterfire_cli - run: flutter pub get - run: flutter build ios --release --no-codesign - uses: ruby/setup-ruby@v1 @@ -132,6 +142,10 @@ jobs: with: flutter-version: '3.24.x' channel: 'stable' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} - name: Enable windows run: flutter config --enable-windows-desktop - run: flutter doctor -v diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index f3246cd5..b3cb54cd 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -25,6 +25,10 @@ jobs: channel: 'stable' cache: true cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} - run: flutter pub get - name: Analyze files run: flutter analyze . @@ -51,6 +55,10 @@ jobs: channel: 'stable' cache: true cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} - run: flutter pub get - name: Build Android app bundle run: flutter build appbundle --release @@ -78,7 +86,13 @@ jobs: channel: 'stable' cache: true cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} - run: flutter pub get + - name: Install flutterfire_cli + run: dart pub global activate flutterfire_cli - name: Build iOS run: flutter build ios --release --no-codesign @@ -128,6 +142,10 @@ jobs: channel: 'stable' cache: true cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} - name: Intall requird Dependencies run: sudo apt -y install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev - name: Enable linux @@ -150,6 +168,10 @@ jobs: channel: 'stable' cache: true cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' + - name: Decrypt dev configs + run: sh ./scripts/decrypt_dev_configs.sh + env: + DEV_CONFIGS_PASSPHRASE: ${{ secrets.DEV_CONFIGS_PASSPHRASE }} - name: Enable windows run: flutter config --enable-windows-desktop - run: flutter doctor -v diff --git a/.gitignore b/.gitignore index dbb53089..4e3abe20 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,8 @@ google-services.json key.jks service_account_key.json android/android_keys.zip +dev_configs.zip +lib/firebase_options.dart .vscode/ diff --git a/.metadata b/.metadata index 82403edb..391c336b 100644 --- a/.metadata +++ b/.metadata @@ -4,5 +4,42 @@ # This file should be version controlled and should not be manually edited. version: - revision: c7ea3ca377e909469c68f2ab878a5bc53d3cf66b - channel: beta + revision: "5874a72aa4c779a02553007c47dacbefba2374dc" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + - platform: android + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + - platform: ios + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + - platform: linux + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + - platform: macos + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + - platform: web + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + - platform: windows + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/README.md b/README.md index d03f1f0d..032dc436 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,10 @@ - [X] [Android](https://play.google.com/store/apps/details?id=com.kuas.ap&hl=zh_TW) - [X] [iOS](https://itunes.apple.com/us/app/id1439751462) -- [X] [Web](https://nkust-ap-flutter.web.app) -- [X] [Windows(Beta)](https://github.com/NKUST-ITC/NKUST-AP-Flutter/releases/download/v3.8.5/nkust_ap_windows.zip) -- [X] [MacOS](https://itunes.apple.com/us/app/id1439751462) -- [X] [Linux(Beta)](https://snapcraft.io/nkust-ap) +- [ ] [Web](https://nkust-ap-flutter.web.app) +- [X] [Windows(目前無法使用因為目前 TFLite 套件不支援 桌面版)](https://github.com/NKUST-ITC/NKUST-AP-Flutter/releases/download/v3.8.5/nkust_ap_windows.zip) +- [X] [MacOS(目前無法使用因為目前 TFLite 套件不支援 桌面版)](https://itunes.apple.com/us/app/id1439751462) +- [X] [Linux(目前無法使用因為目前 TFLite 套件不支援 桌面版)](https://snapcraft.io/nkust-ap) ### Web 版本自7月起因為學校阻擋高請求IP,改為客戶端爬蟲,因此暫時無法使用 @@ -30,7 +30,22 @@ - [NKUST API](https://github.com/NKUST-ITC/NKUST-AP-API) : 高科校務通後端HTTP RESTful API,代為App處理所有爬蟲問題 -## 步驟 +## 開發事前需求 + +### 開發需安裝工具 + + - GPG + +### 解密開發所需檔案 + +`$DEV_CONFIGS_PASSPHRASE` 替換成正確的密碼 + +```bash + gpg --quiet --batch --yes --decrypt --passphrase="$DEV_CONFIGS_PASSPHRASE" \ + --output dev_configs.zip dev_configs.zip.gpg && sh scripts/unzip_dev_configs.sh +``` + +## 如何貢獻 1. `Fork` 此專案到你的 GitHub 帳號. 2. 挑選一個你想解決的 [issue](https://github.com/NKUST-ITC/NKUST-AP-Flutter/issues). 3. 創建一個分支(Branch)以該問題命名. diff --git a/android/app/build.gradle b/android/app/build.gradle index 7dd5cdea..c9cc6b74 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -38,6 +38,10 @@ android { buildTypes { release { signingConfig signingConfigs.release + ndk { + debugSymbolLevel 'FULL' + } + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } } } diff --git a/android/settings.gradle b/android/settings.gradle index 9c875b7e..15aab85f 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -16,6 +16,7 @@ pluginManagement { excludeGroupByRegex "com\\.google\\.android\\.gms" } } + gradlePluginPortal() } } @@ -23,8 +24,8 @@ plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "7.3.0" apply false id "org.jetbrains.kotlin.android" version "1.8.22" apply false - id "com.google.gms.google-services" version "4.3.15" apply false - id "com.google.firebase.crashlytics" version "2.8.1" apply false + id "com.google.gms.google-services" version "4.4.0" apply false + id "com.google.firebase.crashlytics" version "2.9.9" apply false } include ":app" diff --git a/dev_configs.zip.gpg b/dev_configs.zip.gpg new file mode 100644 index 00000000..119f84ba Binary files /dev/null and b/dev_configs.zip.gpg differ diff --git a/firebase.json b/firebase.json index 0d25a779..e6ea32fb 100644 --- a/firebase.json +++ b/firebase.json @@ -6,5 +6,44 @@ "**/.*", "**/node_modules/**" ] + }, + "flutter": { + "platforms": { + "android": { + "default": { + "projectId": "nkust-ap-flutter", + "appId": "1:141403473068:android:05ebdd62590fb72e", + "fileOutput": "android/app/google-services.json" + } + }, + "ios": { + "default": { + "projectId": "nkust-ap-flutter", + "appId": "1:141403473068:ios:65aa63de8e144164", + "uploadDebugSymbols": true, + "fileOutput": "ios/Runner/GoogleService-Info.plist" + } + }, + "macos": { + "default": { + "projectId": "nkust-ap-flutter", + "appId": "1:141403473068:ios:568f2386591e74bbf34b09", + "uploadDebugSymbols": true, + "fileOutput": "macos/Runner/GoogleService-Info.plist" + } + }, + "dart": { + "lib/firebase_options.dart": { + "projectId": "nkust-ap-flutter", + "configurations": { + "android": "1:141403473068:android:05ebdd62590fb72e", + "ios": "1:141403473068:ios:65aa63de8e144164", + "macos": "1:141403473068:ios:568f2386591e74bbf34b09", + "web": "1:141403473068:web:2804dce650446efef34b09", + "windows": "1:141403473068:web:d71d06f2e8822143f34b09" + } + } + } + } } -} +} \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 348baf5a..fcd074f5 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -15,69 +15,69 @@ PODS: - Flutter - file_saver (0.0.1): - Flutter - - Firebase/Analytics (10.18.0): + - Firebase/Analytics (10.25.0): - Firebase/Core - - Firebase/Core (10.18.0): + - Firebase/Core (10.25.0): - Firebase/CoreOnly - - FirebaseAnalytics (~> 10.18.0) - - Firebase/CoreOnly (10.18.0): - - FirebaseCore (= 10.18.0) - - Firebase/Crashlytics (10.18.0): + - FirebaseAnalytics (~> 10.25.0) + - Firebase/CoreOnly (10.25.0): + - FirebaseCore (= 10.25.0) + - Firebase/Crashlytics (10.25.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 10.18.0) - - Firebase/Messaging (10.18.0): + - FirebaseCrashlytics (~> 10.25.0) + - Firebase/Messaging (10.25.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.18.0) - - Firebase/Performance (10.18.0): + - FirebaseMessaging (~> 10.25.0) + - Firebase/Performance (10.25.0): - Firebase/CoreOnly - - FirebasePerformance (~> 10.18.0) - - Firebase/RemoteConfig (10.18.0): + - FirebasePerformance (~> 10.25.0) + - Firebase/RemoteConfig (10.25.0): - Firebase/CoreOnly - - FirebaseRemoteConfig (~> 10.18.0) - - firebase_analytics (10.8.0): - - Firebase/Analytics (= 10.18.0) + - FirebaseRemoteConfig (~> 10.25.0) + - firebase_analytics (10.10.7): + - Firebase/Analytics (= 10.25.0) - firebase_core - Flutter - - firebase_core (2.24.2): - - Firebase/CoreOnly (= 10.18.0) + - firebase_core (2.32.0): + - Firebase/CoreOnly (= 10.25.0) - Flutter - - firebase_crashlytics (3.4.9): - - Firebase/Crashlytics (= 10.18.0) + - firebase_crashlytics (3.5.7): + - Firebase/Crashlytics (= 10.25.0) - firebase_core - Flutter - - firebase_messaging (14.7.10): - - Firebase/Messaging (= 10.18.0) + - firebase_messaging (14.9.4): + - Firebase/Messaging (= 10.25.0) - firebase_core - Flutter - - firebase_performance (0.9.3-8): - - Firebase/Performance (= 10.18.0) + - firebase_performance (0.9.4-7): + - Firebase/Performance (= 10.25.0) - firebase_core - Flutter - - firebase_remote_config (4.3.8): - - Firebase/RemoteConfig (= 10.18.0) + - firebase_remote_config (4.4.7): + - Firebase/RemoteConfig (= 10.25.0) - firebase_core - Flutter - FirebaseABTesting (10.29.0): - FirebaseCore (~> 10.0) - - FirebaseAnalytics (10.18.0): - - FirebaseAnalytics/AdIdSupport (= 10.18.0) + - FirebaseAnalytics (10.25.0): + - FirebaseAnalytics/AdIdSupport (= 10.25.0) - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (10.18.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseAnalytics/AdIdSupport (10.25.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - - GoogleAppMeasurement (= 10.18.0) + - GoogleAppMeasurement (= 10.25.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCore (10.18.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseCore (10.25.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.12) - GoogleUtilities/Logger (~> 7.12) @@ -85,45 +85,49 @@ PODS: - FirebaseCore (~> 10.0) - FirebaseCoreInternal (10.29.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseCrashlytics (10.18.0): + - FirebaseCrashlytics (10.25.0): - FirebaseCore (~> 10.5) - FirebaseInstallations (~> 10.0) + - FirebaseRemoteConfigInterop (~> 10.23) - FirebaseSessions (~> 10.5) - GoogleDataTransport (~> 9.2) - GoogleUtilities/Environment (~> 7.8) - - nanopb (< 2.30910.0, >= 2.30908.0) + - nanopb (< 2.30911.0, >= 2.30908.0) - PromisesObjC (~> 2.1) - FirebaseInstallations (10.29.0): - FirebaseCore (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.18.0): + - FirebaseMessaging (10.25.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - - GoogleDataTransport (~> 9.2) + - GoogleDataTransport (~> 9.3) - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/Reachability (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebasePerformance (10.18.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebasePerformance (10.25.0): - FirebaseCore (~> 10.5) - FirebaseInstallations (~> 10.0) - FirebaseRemoteConfig (~> 10.0) - FirebaseSessions (~> 10.5) - GoogleDataTransport (~> 9.2) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/ISASwizzler (~> 7.8) - - GoogleUtilities/MethodSwizzler (~> 7.8) - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseRemoteConfig (10.18.0): + - GoogleUtilities/Environment (~> 7.13) + - GoogleUtilities/ISASwizzler (~> 7.13) + - GoogleUtilities/MethodSwizzler (~> 7.13) + - GoogleUtilities/UserDefaults (~> 7.13) + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseRemoteConfig (10.25.0): - FirebaseABTesting (~> 10.0) - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) + - FirebaseRemoteConfigInterop (~> 10.23) - FirebaseSharedSwift (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseRemoteConfigInterop (10.29.0) - FirebaseSessions (10.29.0): - FirebaseCore (~> 10.5) - FirebaseCoreExtension (~> 10.0) @@ -152,26 +156,26 @@ PODS: - FlutterMacOS - GoogleSignIn (~> 7.1) - GTMSessionFetcher (>= 3.4.0) - - GoogleAppMeasurement (10.18.0): - - GoogleAppMeasurement/AdIdSupport (= 10.18.0) + - GoogleAppMeasurement (10.25.0): + - GoogleAppMeasurement/AdIdSupport (= 10.25.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (10.18.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 10.18.0) + - nanopb (< 2.30911.0, >= 2.30908.0) + - GoogleAppMeasurement/AdIdSupport (10.25.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.25.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (10.18.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - GoogleAppMeasurement/WithoutAdIdSupport (10.25.0): - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) + - nanopb (< 2.30911.0, >= 2.30908.0) - GoogleDataTransport (9.4.1): - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30911.0, >= 2.30908.0) @@ -222,11 +226,11 @@ PODS: - Flutter - in_app_review (0.2.0): - Flutter - - nanopb (2.30909.1): - - nanopb/decode (= 2.30909.1) - - nanopb/encode (= 2.30909.1) - - nanopb/decode (2.30909.1) - - nanopb/encode (2.30909.1) + - nanopb (2.30910.0): + - nanopb/decode (= 2.30910.0) + - nanopb/encode (= 2.30910.0) + - nanopb/decode (2.30910.0) + - nanopb/encode (2.30910.0) - OrderedSet (5.0.0) - package_info_plus (0.4.5): - Flutter @@ -302,6 +306,7 @@ SPEC REPOS: - FirebaseMessaging - FirebasePerformance - FirebaseRemoteConfig + - FirebaseRemoteConfigInterop - FirebaseSessions - FirebaseSharedSwift - GoogleAppMeasurement @@ -381,23 +386,24 @@ SPEC CHECKSUMS: AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa cupertino_http: 1a3a0f163c1b26e7f1a293b33d476e0fde7a64ec file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808 - Firebase: 414ad272f8d02dfbf12662a9d43f4bba9bec2a06 - firebase_analytics: b3d6dd14c61549a29abb10e9843446a4d8bb53eb - firebase_core: 0af4a2b24f62071f9bf283691c0ee41556dcb3f5 - firebase_crashlytics: 4b91b8ad60ee7c168fe88979f84c9573a729de7a - firebase_messaging: 90e8a6db84b6e1e876cebce4f30f01dc495e7014 - firebase_performance: 2183122a3c7a650c80d8c164e9e28f13c4c62fc7 - firebase_remote_config: 14ad7a3c99810d373ba1ad4a754a8cf26c91d476 + Firebase: 0312a2352584f782ea56f66d91606891d4607f06 + firebase_analytics: cc06e24d6a2343c44f845b3112143db72d10ef78 + firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197 + firebase_crashlytics: 17e856fabec68d993662abaf2f6fe2413f0abece + firebase_messaging: 06391e8f35dc65a00c56580266285263d2861f10 + firebase_performance: c38de2d2f8bcec54fdbc3595716d34c38f3ffe7a + firebase_remote_config: 7b05c80210ab558c80f7a756681022b4ee98eea0 FirebaseABTesting: d87f56707159bae64e269757a6e963d490f2eebe - FirebaseAnalytics: 4d310b35c48eaa4a058ddc04bdca6bdb5dc0fe80 - FirebaseCore: 2322423314d92f946219c8791674d2f3345b598f + FirebaseAnalytics: ec00fe8b93b41dc6fe4a28784b8e51da0647a248 + FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483 FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 - FirebaseCrashlytics: 86d5bce01f42fa1db265f87ff1d591f04db610ec + FirebaseCrashlytics: 4b96efb0ce73b38b2a85e8b8bd1bd8f63f09d015 FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 9bc34a98d2e0237e1b121915120d4d48ddcf301e - FirebasePerformance: c406a9198d8aabfbac281b42855f5122fc1bcf69 - FirebaseRemoteConfig: bbd42790a4e84fde6aab7eae810b608e7b5c0bf6 + FirebaseMessaging: 88950ba9485052891ebe26f6c43a52bb62248952 + FirebasePerformance: bae7778c4448b37f2a75cb72d30c2df7d10ff227 + FirebaseRemoteConfig: 9f3935cefecd85d5b312192117f444957de24a75 + FirebaseRemoteConfigInterop: 6efda51fb5e2f15b16585197e26eaa09574e8a4d FirebaseSessions: dbd14adac65ce996228652c1fc3a3f576bdf3ecc FirebaseSharedSwift: 20530f495084b8d840f78a100d8c5ee613375f6e Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 @@ -405,7 +411,7 @@ SPEC CHECKSUMS: flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38 - GoogleAppMeasurement: 70ce9aa438cff1cfb31ea3e660bcc67734cb716e + GoogleAppMeasurement: 9abf64b682732fed36da827aa2a68f0221fd2356 GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 @@ -413,7 +419,7 @@ SPEC CHECKSUMS: GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 in_app_review: 318597b3a06c22bb46dc454d56828c85f444f99d - nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 + nanopb: 438bc412db1928dac798aa6fd75726007be04262 OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 551dbad3..cfda6ba1 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -226,8 +226,8 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 206ACDB7DFB38C569AEBD820 /* [CP] Embed Pods Frameworks */, - A45559A6217D5F9D00687009 /* ShellScript */, 45F92C6EF4DD0A2E66767AA2 /* [CP] Copy Pods Resources */, + 3288D7AC3491336D5B831FE9 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */, ); buildRules = ( ); @@ -347,6 +347,7 @@ "${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework", "${BUILT_PRODUCTS_DIR}/FirebasePerformance/FirebasePerformance.framework", "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfigInterop/FirebaseRemoteConfigInterop.framework", "${BUILT_PRODUCTS_DIR}/FirebaseSessions/FirebaseSessions.framework", "${BUILT_PRODUCTS_DIR}/FirebaseSharedSwift/FirebaseSharedSwift.framework", "${BUILT_PRODUCTS_DIR}/GTMAppAuth/GTMAppAuth.framework", @@ -390,6 +391,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebasePerformance.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfig.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfigInterop.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSessions.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSharedSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMAppAuth.framework", @@ -426,6 +428,24 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 3288D7AC3491336D5B831FE9 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\""; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n"; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -467,10 +487,12 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/firebase_messaging/firebase_messaging_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/google_sign_in_ios/google_sign_in_ios_privacy.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/firebase_messaging_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/google_sign_in_ios_privacy.bundle", ); runOnlyForDeploymentPostprocessing = 0; @@ -493,20 +515,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; - A45559A6217D5F9D00687009 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "${PODS_ROOT}/FirebaseCrashlytics/run\n"; - }; A4B0643825C7EC38006D4AAB /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/lib/main.dart b/lib/main.dart index a27e8371..eb4b6788 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,6 +16,7 @@ import 'package:nkust_ap/api/helper.dart'; import 'package:nkust_ap/api/mobile_nkust_helper.dart'; import 'package:nkust_ap/app.dart'; import 'package:nkust_ap/config/constants.dart'; +import 'package:nkust_ap/firebase_options.dart'; import 'package:nkust_ap/models/crawler_selector.dart'; Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { @@ -53,24 +54,31 @@ void main() async { } AnnouncementHelper.instance.organization = 'nkust'; - if (FirebaseUtils.isSupportCore) await Firebase.initializeApp(); + if (FirebaseUtils.isSupportCore) { + await Firebase.initializeApp( + options: DefaultFirebaseOptions.currentPlatform, + ); + } if (kDebugMode) { if (FirebaseCrashlyticsUtils.isSupported) { - await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(false); + await FirebaseCrashlytics.instance + .setCrashlyticsCollectionEnabled(kReleaseMode); } if (FirebasePerformancesUtils.isSupported) { - await FirebasePerformance.instance.setPerformanceCollectionEnabled(false); + await FirebasePerformance.instance + .setPerformanceCollectionEnabled(kReleaseMode); } } if (!kDebugMode && FirebaseCrashlyticsUtils.isSupported) { - runZonedGuarded(() { - runApp(const MyApp()); - }, (Object error, StackTrace stackTrace) { - FirebaseCrashlytics.instance.recordError(error, stackTrace); - }); - } else { - runApp(const MyApp()); + FlutterError.onError = (FlutterErrorDetails errorDetails) { + FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails); + }; + PlatformDispatcher.instance.onError = (Object error, StackTrace stack) { + FirebaseCrashlytics.instance.recordError(error, stack, fatal: true); + return true; + }; } + runApp(const MyApp()); } class MyHttpOverrides extends HttpOverrides { diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 60f1a02a..326232ec 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -195,6 +195,7 @@ 3399D490228B24CF009A79C7 /* ShellScript */, 7B7F643CD9CF5931C23CF49B /* [CP] Embed Pods Frameworks */, A4AD9136251F219C009231C1 /* ShellScript */, + ECDCDC0C98B89B47B9CA28DA /* FlutterFire: "flutterfire upload-crashlytics-symbols" */, ); buildRules = ( ); @@ -409,6 +410,24 @@ shellPath = /bin/sh; shellScript = "${PODS_ROOT}/FirebaseCrashlytics/run\n"; }; + ECDCDC0C98B89B47B9CA28DA /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\""; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=macos --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/pubspec.lock b/pubspec.lock index c324a645..9003579c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: f5628cd9c92ed11083f425fd1f8f1bc60ecdda458c81d73b143aeda036c35fe7 + sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" url: "https://pub.dev" source: hosted - version: "1.3.16" + version: "1.3.35" _macros: dependency: transitive description: dart @@ -42,18 +42,18 @@ packages: dependency: "direct main" description: name: ap_common - sha256: b5ac71b101c7a5a716675bfd75ff3eac749b0e60df5571c20e167e096c1dff81 + sha256: "50f46c94ed14070d43b7e2d8f7d7114d0d0145922a4281f70e73635adbf70efd" url: "https://pub.dev" source: hosted - version: "0.25.0-dev.3" + version: "0.25.0" ap_common_firebase: dependency: "direct main" description: name: ap_common_firebase - sha256: f624d04c8240aa02e37005a1ebc7113d2747990420ede64d90e7d760a307dd4e + sha256: a829949c0ff1f6aa610b6e789d1d665ea80000a8e033916debbb348c7c9271d3 url: "https://pub.dev" source: hosted - version: "0.16.0-dev.2" + version: "0.16.0-dev.3" ap_common_plugin: dependency: "direct main" description: @@ -210,10 +210,10 @@ packages: dependency: transitive description: name: cached_network_image - sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" + sha256: "4a5d8d2c728b0f3d0245f69f921d7be90cae4c2fd5288f773088672c0893f819" url: "https://pub.dev" source: hosted - version: "3.4.1" + version: "3.4.0" cached_network_image_platform_interface: dependency: transitive description: @@ -226,10 +226,10 @@ packages: dependency: transitive description: name: cached_network_image_web - sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" + sha256: "6322dde7a5ad92202e64df659241104a43db20ed594c41ca18de1014598d7996" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.0" characters: dependency: transitive description: @@ -419,10 +419,10 @@ packages: dependency: transitive description: name: file_saver - sha256: "017a127de686af2d2fbbd64afea97052d95f2a0f87d19d25b87e097407bf9c1e" + sha256: d375b351e3331663abbaf99747abd72f159260c58fbbdbca9f926f02c01bdc48 url: "https://pub.dev" source: hosted - version: "0.2.14" + version: "0.2.13" file_selector_linux: dependency: transitive description: @@ -459,34 +459,34 @@ packages: dependency: transitive description: name: firebase_analytics - sha256: "0240076090d77045d757aecb090616066d23b343840d4c21074094d6fe40a184" + sha256: dbf1e7ab22cfb1f4a4adb103b46a26276b4edc593d4a78ef6fb942bafc92e035 url: "https://pub.dev" source: hosted - version: "10.8.0" + version: "10.10.7" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: "6d9baa077d16b47ef5f19d982c4fc475597991aa53b0c601216faa3e1cdab45f" + sha256: "3729b74f8cf1d974a27ba70332ecb55ff5ff560edc8164a6469f4a055b429c37" url: "https://pub.dev" source: hosted - version: "3.9.0" + version: "3.10.8" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "89a740249bce9d52a99db4e501be6087ca6749c73c47cff2b174802be10abd81" + sha256: "019cd7eee74254d33fbd2e29229367ce33063516bf6b3258a341d89e3b0f1655" url: "https://pub.dev" source: hosted - version: "0.5.5+12" + version: "0.5.7+7" firebase_core: dependency: transitive description: name: firebase_core - sha256: "96607c0e829a581c2a483c658f04e8b159964c3bae2730f73297070bc85d40bb" + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" url: "https://pub.dev" source: hosted - version: "2.24.2" + version: "2.32.0" firebase_core_platform_interface: dependency: transitive description: @@ -499,98 +499,98 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: d585bdf3c656c3f7821ba1bd44da5f13365d22fcecaf5eb75c4295246aaa83c0 + sha256: e8d1e22de72cb21cdcfc5eed7acddab3e99cd83f3b317f54f7a96c32f25fd11e url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.17.4" firebase_crashlytics: dependency: transitive description: name: firebase_crashlytics - sha256: "5125b7f3fcef2bfdd7e071afe7edcefd9597968003e44e073456c773d91694ee" + sha256: "9897c01efaa950d2f6da8317d12452749a74dc45f33b46390a14cfe28067f271" url: "https://pub.dev" source: hosted - version: "3.4.9" + version: "3.5.7" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: "359197344def001589c84f8d1d57c05f6e2e773f559205610ce58c25e2045a57" + sha256: "16a71e08fbf6e00382816e1b13397898c29a54fa0ad969c2c2a3b82a704877f0" url: "https://pub.dev" source: hosted - version: "3.6.16" + version: "3.6.35" firebase_messaging: dependency: transitive description: name: firebase_messaging - sha256: "980259425fa5e2afc03e533f33723335731d21a56fd255611083bceebf4373a8" + sha256: a1662cc95d9750a324ad9df349b873360af6f11414902021f130c68ec02267c4 url: "https://pub.dev" source: hosted - version: "14.7.10" + version: "14.9.4" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "54e283a0e41d81d854636ad0dad73066adc53407a60a7c3189c9656e2f1b6107" + sha256: "87c4a922cb6f811cfb7a889bdbb3622702443c52a0271636cbc90d813ceac147" url: "https://pub.dev" source: hosted - version: "4.5.18" + version: "4.5.37" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "90dc7ed885e90a24bb0e56d661d4d2b5f84429697fd2cbb9e5890a0ca370e6f4" + sha256: "0d34dca01a7b103ed7f20138bffbb28eb0e61a677bf9e78a028a932e2c7322d5" url: "https://pub.dev" source: hosted - version: "3.5.18" + version: "3.8.7" firebase_performance: dependency: transitive description: name: firebase_performance - sha256: "9df1c993365814ea6e75be9da4e2545afe2c5d4b27fce02af2e7050b04eb3396" + sha256: dbcfc300755c4bb866988de20a491f0b53e1a0d14c375a2c31aa53ca82174c5b url: "https://pub.dev" source: hosted - version: "0.9.3+8" + version: "0.9.4+7" firebase_performance_platform_interface: dependency: transitive description: name: firebase_performance_platform_interface - sha256: a2be699e610f684260984cc327cffb43c72a09f75c1f27084c247adef10faa57 + sha256: "191c9945c2ea4359cb57dc086463b2a25b0f9d8d42f66a0be4c1a7133e26ebc8" url: "https://pub.dev" source: hosted - version: "0.1.4+16" + version: "0.1.4+35" firebase_performance_web: dependency: transitive description: name: firebase_performance_web - sha256: "73fa046809a3292c04836d362f568146c344951d641d5582dab57c843955f225" + sha256: "9f03a53f55697b206393366bf138e382cbd845d5021b5be6f7fc97b338da2cb5" url: "https://pub.dev" source: hosted - version: "0.1.4+16" + version: "0.1.6+7" firebase_remote_config: dependency: transitive description: name: firebase_remote_config - sha256: "60fc92273d1db338a6fad1839c42dedc4ad64f812043acad0cbb200702f5c9ce" + sha256: "653bd94b68e2c4e89eca10db90576101f1024151f39f2d4e7c64ae6a90a5f9c5" url: "https://pub.dev" source: hosted - version: "4.3.8" + version: "4.4.7" firebase_remote_config_platform_interface: dependency: transitive description: name: firebase_remote_config_platform_interface - sha256: "41813ef8dfbc40ef7a59a73f9e5acef2608dbcb2933241b6c03d52e90677040f" + sha256: "24a2c445b15de3af7e4582ebceb2aa9a1e3731d0202cb3e7a1e03012440fa07d" url: "https://pub.dev" source: hosted - version: "1.4.16" + version: "1.4.35" firebase_remote_config_web: dependency: transitive description: name: firebase_remote_config_web - sha256: "089e92f333c2fb2c05c640c80fecea9d1e06dada0ba85efe34a580987ef94a0a" + sha256: "525aa3000fd27cd023841c802010a06515e564aab2f147aa964b35f54abbf449" url: "https://pub.dev" source: hosted - version: "1.4.16" + version: "1.6.7" fixnum: dependency: transitive description: @@ -1319,10 +1319,10 @@ packages: dependency: transitive description: name: printing - sha256: de1889f30b34029fc46e5de6a9841498850b23d32942a9ee810ca36b0cb1b234 + sha256: cc4b256a5a89d5345488e3318897b595867f5181b8c5ed6fc63bfa5f2044aec3 url: "https://pub.dev" source: hosted - version: "5.13.2" + version: "5.13.1" pub_semver: dependency: transitive description: @@ -1367,10 +1367,10 @@ packages: dependency: transitive description: name: share_plus - sha256: "468c43f285207c84bcabf5737f33b914ceb8eb38398b91e5e3ad1698d1b72a52" + sha256: "59dfd53f497340a0c3a81909b220cfdb9b8973a91055c4e5ab9b9b9ad7c513c0" url: "https://pub.dev" source: hosted - version: "10.0.2" + version: "10.0.0" share_plus_platform_interface: dependency: transitive description: @@ -1733,10 +1733,10 @@ packages: dependency: transitive description: name: web - sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "0.5.1" web_socket: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index be81d282..9aafedef 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,8 +16,8 @@ dependencies: intl: ">=0.17.0 <1.0.0" multiple_localization: ^0.5.0 - ap_common: ^0.25.0-dev.3 - ap_common_firebase: ^0.16.0-dev.0 + ap_common: ^0.25.0 + ap_common_firebase: ^0.16.0-dev.3 ap_common_plugin: ^0.4.1 #official plugin http: ^0.13.3 diff --git a/scripts/decrypt_dev_configs.sh b/scripts/decrypt_dev_configs.sh new file mode 100644 index 00000000..9ff57e50 --- /dev/null +++ b/scripts/decrypt_dev_configs.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# --batch to prevent interactive command +# --yes to assume "yes" for questions +gpg --quiet --batch --yes --decrypt --passphrase="$DEV_CONFIGS_PASSPHRASE" \ +--output dev_configs.zip dev_configs.zip.gpg && sh scripts/unzip_dev_configs.sh diff --git a/scripts/encrypt_dev_configs.sh b/scripts/encrypt_dev_configs.sh new file mode 100644 index 00000000..42472db8 --- /dev/null +++ b/scripts/encrypt_dev_configs.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +sh scripts/zip_dev_configs.sh +gpg --symmetric --cipher-algo AES256 dev_configs.zip \ No newline at end of file diff --git a/scripts/unzip_dev_configs.sh b/scripts/unzip_dev_configs.sh new file mode 100644 index 00000000..67f5e9c0 --- /dev/null +++ b/scripts/unzip_dev_configs.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +jar xvf dev_configs.zip \ No newline at end of file diff --git a/scripts/zip_dev_configs.sh b/scripts/zip_dev_configs.sh new file mode 100644 index 00000000..ee840efd --- /dev/null +++ b/scripts/zip_dev_configs.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +zip -r dev_configs.zip \ + lib/firebase_options.dart \ + android/app/google-services.json \ + ios/Runner/GoogleService-Info.plist \ + macos/Runner/GoogleService-Info.plist \ No newline at end of file