From 57d4a876cee0d31e4499be551d0427f924cfbe1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cu=CC=9Bo=CC=9Bng=20Nguye=CC=82=CC=83n?= Date: Wed, 29 Dec 2021 00:11:49 +0700 Subject: [PATCH] Add MacOS --- macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 2 + macos/Flutter/Flutter-Release.xcconfig | 2 + macos/Flutter/GeneratedPluginRegistrant.swift | 36 + macos/Podfile | 40 ++ macos/Podfile.lock | 617 +++++++++++++++++ macos/Runner.xcodeproj/project.pbxproj | 635 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 37584 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 4036 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 545 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 8190 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1039 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 17332 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2049 bytes macos/Runner/Base.lproj/MainMenu.xib | 339 ++++++++++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 14 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + pubspec.lock | 2 +- resources/gen_macos-images.py | 26 + 31 files changed, 1995 insertions(+), 1 deletion(-) create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Podfile create mode 100644 macos/Podfile.lock create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 resources/gen_macos-images.py diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 00000000..746adbb6 --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000..4b81f9b2 --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000..5caa9d15 --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000..7508c8ae --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,36 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import cloud_firestore +import cloud_functions +import device_info_plus_macos +import firebase_auth +import firebase_core +import firebase_crashlytics +import firebase_storage +import in_app_review +import package_info_plus_macos +import path_provider_macos +import shared_preferences_macos +import sqflite +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) + FLTFirebaseFunctionsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFunctionsPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin")) + FLTFirebaseStoragePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseStoragePlugin")) + InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin")) + FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/macos/Podfile b/macos/Podfile new file mode 100644 index 00000000..22d9caad --- /dev/null +++ b/macos/Podfile @@ -0,0 +1,40 @@ +platform :osx, '10.12' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/macos/Podfile.lock b/macos/Podfile.lock new file mode 100644 index 00000000..7815b919 --- /dev/null +++ b/macos/Podfile.lock @@ -0,0 +1,617 @@ +PODS: + - abseil/algorithm (0.20200225.0): + - abseil/algorithm/algorithm (= 0.20200225.0) + - abseil/algorithm/container (= 0.20200225.0) + - abseil/algorithm/algorithm (0.20200225.0): + - abseil/base/config + - abseil/algorithm/container (0.20200225.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/base (0.20200225.0): + - abseil/base/atomic_hook (= 0.20200225.0) + - abseil/base/base (= 0.20200225.0) + - abseil/base/base_internal (= 0.20200225.0) + - abseil/base/bits (= 0.20200225.0) + - abseil/base/config (= 0.20200225.0) + - abseil/base/core_headers (= 0.20200225.0) + - abseil/base/dynamic_annotations (= 0.20200225.0) + - abseil/base/endian (= 0.20200225.0) + - abseil/base/errno_saver (= 0.20200225.0) + - abseil/base/exponential_biased (= 0.20200225.0) + - abseil/base/log_severity (= 0.20200225.0) + - abseil/base/malloc_internal (= 0.20200225.0) + - abseil/base/periodic_sampler (= 0.20200225.0) + - abseil/base/pretty_function (= 0.20200225.0) + - abseil/base/raw_logging_internal (= 0.20200225.0) + - abseil/base/spinlock_wait (= 0.20200225.0) + - abseil/base/throw_delegate (= 0.20200225.0) + - abseil/base/atomic_hook (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/base (0.20200225.0): + - abseil/base/atomic_hook + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/log_severity + - abseil/base/raw_logging_internal + - abseil/base/spinlock_wait + - abseil/meta/type_traits + - abseil/base/base_internal (0.20200225.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/base/bits (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/config (0.20200225.0) + - abseil/base/core_headers (0.20200225.0): + - abseil/base/config + - abseil/base/dynamic_annotations (0.20200225.0) + - abseil/base/endian (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/errno_saver (0.20200225.0): + - abseil/base/config + - abseil/base/exponential_biased (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/log_severity (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/malloc_internal (0.20200225.0): + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/raw_logging_internal + - abseil/base/periodic_sampler (0.20200225.0): + - abseil/base/core_headers + - abseil/base/exponential_biased + - abseil/base/pretty_function (0.20200225.0) + - abseil/base/raw_logging_internal (0.20200225.0): + - abseil/base/atomic_hook + - abseil/base/config + - abseil/base/core_headers + - abseil/base/log_severity + - abseil/base/spinlock_wait (0.20200225.0): + - abseil/base/base_internal + - abseil/base/core_headers + - abseil/base/errno_saver + - abseil/base/throw_delegate (0.20200225.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/container/common (0.20200225.0): + - abseil/meta/type_traits + - abseil/types/optional + - abseil/container/compressed_tuple (0.20200225.0): + - abseil/utility/utility + - abseil/container/container_memory (0.20200225.0): + - abseil/memory/memory + - abseil/utility/utility + - abseil/container/fixed_array (0.20200225.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/throw_delegate + - abseil/container/compressed_tuple + - abseil/memory/memory + - abseil/container/flat_hash_map (0.20200225.0): + - abseil/algorithm/container + - abseil/container/container_memory + - abseil/container/hash_function_defaults + - abseil/container/raw_hash_map + - abseil/memory/memory + - abseil/container/hash_function_defaults (0.20200225.0): + - abseil/base/config + - abseil/hash/hash + - abseil/strings/strings + - abseil/container/hash_policy_traits (0.20200225.0): + - abseil/meta/type_traits + - abseil/container/hashtable_debug_hooks (0.20200225.0): + - abseil/base/config + - abseil/container/hashtablez_sampler (0.20200225.0): + - abseil/base/base + - abseil/base/core_headers + - abseil/base/exponential_biased + - abseil/container/have_sse + - abseil/debugging/stacktrace + - abseil/memory/memory + - abseil/synchronization/synchronization + - abseil/utility/utility + - abseil/container/have_sse (0.20200225.0) + - abseil/container/inlined_vector (0.20200225.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/base/throw_delegate + - abseil/container/inlined_vector_internal + - abseil/memory/memory + - abseil/container/inlined_vector_internal (0.20200225.0): + - abseil/base/core_headers + - abseil/container/compressed_tuple + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/types/span + - abseil/container/layout (0.20200225.0): + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/strings/strings + - abseil/types/span + - abseil/utility/utility + - abseil/container/raw_hash_map (0.20200225.0): + - abseil/base/throw_delegate + - abseil/container/container_memory + - abseil/container/raw_hash_set + - abseil/container/raw_hash_set (0.20200225.0): + - abseil/base/bits + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/container/common + - abseil/container/compressed_tuple + - abseil/container/container_memory + - abseil/container/hash_policy_traits + - abseil/container/hashtable_debug_hooks + - abseil/container/hashtablez_sampler + - abseil/container/have_sse + - abseil/container/layout + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/utility/utility + - abseil/debugging/debugging_internal (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/errno_saver + - abseil/base/raw_logging_internal + - abseil/debugging/demangle_internal (0.20200225.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/stacktrace (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/debugging_internal + - abseil/debugging/symbolize (0.20200225.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/debugging/debugging_internal + - abseil/debugging/demangle_internal + - abseil/hash/city (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/hash/hash (0.20200225.0): + - abseil/base/core_headers + - abseil/base/endian + - abseil/container/fixed_array + - abseil/hash/city + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/strings/strings + - abseil/types/optional + - abseil/types/variant + - abseil/utility/utility + - abseil/memory (0.20200225.0): + - abseil/memory/memory (= 0.20200225.0) + - abseil/memory/memory (0.20200225.0): + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/meta (0.20200225.0): + - abseil/meta/type_traits (= 0.20200225.0) + - abseil/meta/type_traits (0.20200225.0): + - abseil/base/config + - abseil/numeric/int128 (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/strings/internal (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/meta/type_traits + - abseil/strings/str_format (0.20200225.0): + - abseil/strings/str_format_internal + - abseil/strings/str_format_internal (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/strings/strings + - abseil/types/span + - abseil/strings/strings (0.20200225.0): + - abseil/base/base + - abseil/base/bits + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/base/throw_delegate + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/strings/internal + - abseil/synchronization/graphcycles_internal (0.20200225.0): + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/synchronization/kernel_timeout_internal (0.20200225.0): + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/time/time + - abseil/synchronization/synchronization (0.20200225.0): + - abseil/base/atomic_hook + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/debugging/stacktrace + - abseil/debugging/symbolize + - abseil/synchronization/graphcycles_internal + - abseil/synchronization/kernel_timeout_internal + - abseil/time/time + - abseil/time (0.20200225.0): + - abseil/time/internal (= 0.20200225.0) + - abseil/time/time (= 0.20200225.0) + - abseil/time/internal (0.20200225.0): + - abseil/time/internal/cctz (= 0.20200225.0) + - abseil/time/internal/cctz (0.20200225.0): + - abseil/time/internal/cctz/civil_time (= 0.20200225.0) + - abseil/time/internal/cctz/time_zone (= 0.20200225.0) + - abseil/time/internal/cctz/civil_time (0.20200225.0): + - abseil/base/config + - abseil/time/internal/cctz/time_zone (0.20200225.0): + - abseil/base/config + - abseil/time/internal/cctz/civil_time + - abseil/time/time (0.20200225.0): + - abseil/base/base + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/numeric/int128 + - abseil/strings/strings + - abseil/time/internal/cctz/civil_time + - abseil/time/internal/cctz/time_zone + - abseil/types (0.20200225.0): + - abseil/types/any (= 0.20200225.0) + - abseil/types/bad_any_cast (= 0.20200225.0) + - abseil/types/bad_any_cast_impl (= 0.20200225.0) + - abseil/types/bad_optional_access (= 0.20200225.0) + - abseil/types/bad_variant_access (= 0.20200225.0) + - abseil/types/compare (= 0.20200225.0) + - abseil/types/optional (= 0.20200225.0) + - abseil/types/span (= 0.20200225.0) + - abseil/types/variant (= 0.20200225.0) + - abseil/types/any (0.20200225.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/types/bad_any_cast + - abseil/utility/utility + - abseil/types/bad_any_cast (0.20200225.0): + - abseil/base/config + - abseil/types/bad_any_cast_impl + - abseil/types/bad_any_cast_impl (0.20200225.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/bad_optional_access (0.20200225.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/bad_variant_access (0.20200225.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/compare (0.20200225.0): + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/types/optional (0.20200225.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/types/bad_optional_access + - abseil/utility/utility + - abseil/types/span (0.20200225.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/base/throw_delegate + - abseil/meta/type_traits + - abseil/types/variant (0.20200225.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/types/bad_variant_access + - abseil/utility/utility + - abseil/utility/utility (0.20200225.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/meta/type_traits + - BoringSSL-GRPC (0.0.7): + - BoringSSL-GRPC/Implementation (= 0.0.7) + - BoringSSL-GRPC/Interface (= 0.0.7) + - BoringSSL-GRPC/Implementation (0.0.7): + - BoringSSL-GRPC/Interface (= 0.0.7) + - BoringSSL-GRPC/Interface (0.0.7) + - cloud_firestore (3.1.5): + - Firebase/CoreOnly (~> 8.9.0) + - Firebase/Firestore (~> 8.9.0) + - firebase_core + - FlutterMacOS + - cloud_functions (3.2.4): + - Firebase/CoreOnly (~> 8.9.0) + - Firebase/Functions (~> 8.9.0) + - firebase_core + - FlutterMacOS + - device_info_plus_macos (0.0.1): + - FlutterMacOS + - Firebase/Auth (8.9.1): + - Firebase/CoreOnly + - FirebaseAuth (~> 8.9.0) + - Firebase/CoreOnly (8.9.1): + - FirebaseCore (= 8.9.1) + - Firebase/Crashlytics (8.9.1): + - Firebase/CoreOnly + - FirebaseCrashlytics (~> 8.9.0) + - Firebase/Firestore (8.9.1): + - Firebase/CoreOnly + - FirebaseFirestore (~> 8.9.1) + - Firebase/Functions (8.9.1): + - Firebase/CoreOnly + - FirebaseFunctions (~> 8.9.0) + - Firebase/Storage (8.9.1): + - Firebase/CoreOnly + - FirebaseStorage (~> 8.9.0) + - firebase_auth (3.3.4): + - Firebase/Auth (~> 8.9.0) + - Firebase/CoreOnly (~> 8.9.0) + - firebase_core + - FlutterMacOS + - firebase_core (1.10.6): + - Firebase/CoreOnly (~> 8.9.0) + - FlutterMacOS + - firebase_crashlytics (2.4.4): + - Firebase/CoreOnly (~> 8.9.0) + - Firebase/Crashlytics (~> 8.9.0) + - firebase_core + - FlutterMacOS + - firebase_storage (10.2.4): + - Firebase/CoreOnly (~> 8.9.0) + - Firebase/Storage (~> 8.9.0) + - firebase_core + - FlutterMacOS + - FirebaseAuth (8.9.0): + - FirebaseCore (~> 8.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.6) + - GoogleUtilities/Environment (~> 7.6) + - GTMSessionFetcher/Core (~> 1.5) + - FirebaseCore (8.9.1): + - FirebaseCoreDiagnostics (~> 8.0) + - GoogleUtilities/Environment (~> 7.6) + - GoogleUtilities/Logger (~> 7.6) + - FirebaseCoreDiagnostics (8.10.0): + - GoogleDataTransport (~> 9.1) + - GoogleUtilities/Environment (~> 7.6) + - GoogleUtilities/Logger (~> 7.6) + - nanopb (~> 2.30908.0) + - FirebaseCrashlytics (8.9.0): + - FirebaseCore (~> 8.0) + - FirebaseInstallations (~> 8.0) + - GoogleDataTransport (~> 9.1) + - GoogleUtilities/Environment (~> 7.6) + - nanopb (~> 2.30908.0) + - PromisesObjC (< 3.0, >= 1.2) + - FirebaseFirestore (8.9.1): + - abseil/algorithm (= 0.20200225.0) + - abseil/base (= 0.20200225.0) + - abseil/container/flat_hash_map (= 0.20200225.0) + - abseil/memory (= 0.20200225.0) + - abseil/meta (= 0.20200225.0) + - abseil/strings/strings (= 0.20200225.0) + - abseil/time (= 0.20200225.0) + - abseil/types (= 0.20200225.0) + - FirebaseCore (~> 8.0) + - "gRPC-C++ (~> 1.28.0)" + - leveldb-library (~> 1.22) + - nanopb (~> 2.30908.0) + - FirebaseFunctions (8.9.0): + - FirebaseCore (~> 8.0) + - GTMSessionFetcher/Core (~> 1.5) + - FirebaseInstallations (8.10.0): + - FirebaseCore (~> 8.0) + - GoogleUtilities/Environment (~> 7.6) + - GoogleUtilities/UserDefaults (~> 7.6) + - PromisesObjC (< 3.0, >= 1.2) + - FirebaseStorage (8.9.0): + - FirebaseCore (~> 8.0) + - GTMSessionFetcher/Core (~> 1.5) + - FlutterMacOS (1.0.0) + - FMDB (2.7.5): + - FMDB/standard (= 2.7.5) + - FMDB/standard (2.7.5) + - GoogleDataTransport (9.1.2): + - GoogleUtilities/Environment (~> 7.2) + - nanopb (~> 2.30908.0) + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/AppDelegateSwizzler (7.6.0): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (7.6.0): + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/Logger (7.6.0): + - GoogleUtilities/Environment + - GoogleUtilities/Network (7.6.0): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (7.6.0)" + - GoogleUtilities/Reachability (7.6.0): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (7.6.0): + - GoogleUtilities/Logger + - "gRPC-C++ (1.28.2)": + - "gRPC-C++/Implementation (= 1.28.2)" + - "gRPC-C++/Interface (= 1.28.2)" + - "gRPC-C++/Implementation (1.28.2)": + - abseil/container/inlined_vector (= 0.20200225.0) + - abseil/memory/memory (= 0.20200225.0) + - abseil/strings/str_format (= 0.20200225.0) + - abseil/strings/strings (= 0.20200225.0) + - abseil/types/optional (= 0.20200225.0) + - "gRPC-C++/Interface (= 1.28.2)" + - gRPC-Core (= 1.28.2) + - "gRPC-C++/Interface (1.28.2)" + - gRPC-Core (1.28.2): + - gRPC-Core/Implementation (= 1.28.2) + - gRPC-Core/Interface (= 1.28.2) + - gRPC-Core/Implementation (1.28.2): + - abseil/container/inlined_vector (= 0.20200225.0) + - abseil/memory/memory (= 0.20200225.0) + - abseil/strings/str_format (= 0.20200225.0) + - abseil/strings/strings (= 0.20200225.0) + - abseil/types/optional (= 0.20200225.0) + - BoringSSL-GRPC (= 0.0.7) + - gRPC-Core/Interface (= 1.28.2) + - gRPC-Core/Interface (1.28.2) + - GTMSessionFetcher/Core (1.7.0) + - in_app_review (0.2.0): + - FlutterMacOS + - leveldb-library (1.22.1) + - nanopb (2.30908.0): + - nanopb/decode (= 2.30908.0) + - nanopb/encode (= 2.30908.0) + - nanopb/decode (2.30908.0) + - nanopb/encode (2.30908.0) + - package_info_plus_macos (0.0.1): + - FlutterMacOS + - path_provider_macos (0.0.1): + - FlutterMacOS + - PromisesObjC (2.0.0) + - shared_preferences_macos (0.0.1): + - FlutterMacOS + - sqflite (0.0.2): + - FlutterMacOS + - FMDB (>= 2.7.5) + - url_launcher_macos (0.0.1): + - FlutterMacOS + +DEPENDENCIES: + - cloud_firestore (from `Flutter/ephemeral/.symlinks/plugins/cloud_firestore/macos`) + - cloud_functions (from `Flutter/ephemeral/.symlinks/plugins/cloud_functions/macos`) + - device_info_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus_macos/macos`) + - firebase_auth (from `Flutter/ephemeral/.symlinks/plugins/firebase_auth/macos`) + - firebase_core (from `Flutter/ephemeral/.symlinks/plugins/firebase_core/macos`) + - firebase_crashlytics (from `Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos`) + - firebase_storage (from `Flutter/ephemeral/.symlinks/plugins/firebase_storage/macos`) + - FlutterMacOS (from `Flutter/ephemeral`) + - in_app_review (from `Flutter/ephemeral/.symlinks/plugins/in_app_review/macos`) + - package_info_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos`) + - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) + - shared_preferences_macos (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos`) + - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`) + - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) + +SPEC REPOS: + trunk: + - abseil + - BoringSSL-GRPC + - Firebase + - FirebaseAuth + - FirebaseCore + - FirebaseCoreDiagnostics + - FirebaseCrashlytics + - FirebaseFirestore + - FirebaseFunctions + - FirebaseInstallations + - FirebaseStorage + - FMDB + - GoogleDataTransport + - GoogleUtilities + - "gRPC-C++" + - gRPC-Core + - GTMSessionFetcher + - leveldb-library + - nanopb + - PromisesObjC + +EXTERNAL SOURCES: + cloud_firestore: + :path: Flutter/ephemeral/.symlinks/plugins/cloud_firestore/macos + cloud_functions: + :path: Flutter/ephemeral/.symlinks/plugins/cloud_functions/macos + device_info_plus_macos: + :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus_macos/macos + firebase_auth: + :path: Flutter/ephemeral/.symlinks/plugins/firebase_auth/macos + firebase_core: + :path: Flutter/ephemeral/.symlinks/plugins/firebase_core/macos + firebase_crashlytics: + :path: Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos + firebase_storage: + :path: Flutter/ephemeral/.symlinks/plugins/firebase_storage/macos + FlutterMacOS: + :path: Flutter/ephemeral + in_app_review: + :path: Flutter/ephemeral/.symlinks/plugins/in_app_review/macos + package_info_plus_macos: + :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos + path_provider_macos: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos + shared_preferences_macos: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos + sqflite: + :path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos + url_launcher_macos: + :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos + +SPEC CHECKSUMS: + abseil: 6c8eb7892aefa08d929b39f9bb108e5367e3228f + BoringSSL-GRPC: 8edf627ee524575e2f8d19d56f068b448eea3879 + cloud_firestore: 3081be06968400a92d26f1143e794eb391c553c8 + cloud_functions: e80dce7d9a1db57fce018577fed2bdc6a5aa568e + device_info_plus_macos: 1ad388a1ef433505c4038e7dd9605aadd1e2e9c7 + Firebase: fb5114cd2bf96e2ff7bcb01d0d9a156cf5fd2f07 + firebase_auth: 93152664a5331c5363e2f5528a9bbaadcf4859ed + firebase_core: e0159870e86f57998fc9853a50d6309a3ab2eee6 + firebase_crashlytics: b15f38bdada513a6e89d3d31c3d53681394a77b0 + firebase_storage: 5d0a09f47ef925f20ca3bfa0e837aad77d72778b + FirebaseAuth: 2b78b2a32c07b3ecfa4970bdf1d3632b8304099b + FirebaseCore: c5aab092d9c4b8efea894946166b04c9d9ef0e68 + FirebaseCoreDiagnostics: 56fb7216d87e0e6ec2feddefa9d8a392fe8b2c18 + FirebaseCrashlytics: 40efbd81157dae307ec95612fa1328347284d2c2 + FirebaseFirestore: 15ae9648476436efed698a909e44c4737498f9b4 + FirebaseFunctions: c78ec2f93cd453f25fb5e4c694c830f7a31ab349 + FirebaseInstallations: 830327b45345ffc859eaa9c17bcd5ae893fd5425 + FirebaseStorage: 452c98c31ccb40b819764bf3039426c4388d9939 + FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 + FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + GoogleDataTransport: 629c20a4d363167143f30ea78320d5a7eb8bd940 + GoogleUtilities: 684ee790a24f73ebb2d1d966e9711c203f2a4237 + "gRPC-C++": 13d8ccef97d5c3c441b7e3c529ef28ebee86fad2 + gRPC-Core: 4afa11bfbedf7cdecd04de535a9e046893404ed5 + GTMSessionFetcher: 43748f93435c2aa068b1cbe39655aaf600652e91 + in_app_review: a850789fad746e89bce03d4aeee8078b45a53fd0 + leveldb-library: 50c7b45cbd7bf543c81a468fe557a16ae3db8729 + nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 + package_info_plus_macos: f010621b07802a241d96d01876d6705f15e77c1c + path_provider_macos: 160cab0d5461f0c0e02995469a98f24bdb9a3f1f + PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58 + shared_preferences_macos: 480ce071d0666e37cef23fe6c702293a3d21799e + sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea + url_launcher_macos: 45af3d61de06997666568a7149c1be98b41c95d4 + +PODFILE CHECKSUM: c7161fcf45d4fd9025dc0f48a76d6e64e52f8176 + +COCOAPODS: 1.11.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..960cc458 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,635 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 1F772350E7E8404C2D2D7F2B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D2D3571A551E78BFE9C176 /* Pods_Runner.framework */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + C99425BF277B963000C4A465 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C99425BE277B963000C4A465 /* GoogleService-Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 17AA53932FA130E5CF56C580 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 2F355751B50AE343523E49F9 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* hittick.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = hittick.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 6AA0C9B582A022A5B5D9A5A1 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + C99425BE277B963000C4A465 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + D9D2D3571A551E78BFE9C176 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F772350E7E8404C2D2D7F2B /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + A05ECD12BEDB5AE702EA4D5C /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* hittick.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + C99425BE277B963000C4A465 /* GoogleService-Info.plist */, + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + A05ECD12BEDB5AE702EA4D5C /* Pods */ = { + isa = PBXGroup; + children = ( + 6AA0C9B582A022A5B5D9A5A1 /* Pods-Runner.debug.xcconfig */, + 17AA53932FA130E5CF56C580 /* Pods-Runner.release.xcconfig */, + 2F355751B50AE343523E49F9 /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D9D2D3571A551E78BFE9C176 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 48087E8BB5DA9EBC30AD3880 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 7D48539622F9269F0778D08F /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* hittick.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + C99425BF277B963000C4A465 /* GoogleService-Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 48087E8BB5DA9EBC30AD3880 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 7D48539622F9269F0778D08F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..3a46e54f --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..21a3cc14 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000..d53ef643 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..a2ec33f1 --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..b1729ccbaa1b9199eb746a623c0732bc032f5eb0 GIT binary patch literal 37584 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..09749c2f62ce349524f0fa4cc2d55820edec45e9 GIT binary patch literal 4036 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2c48ffc9363eb06485517019bcc4d721eb5fdbee GIT binary patch literal 545 zcmV++0^a?JP)A4FCWD8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10j^0z zK~y-6rIXD|TTu|jfA{4j(8L6VVnHcYDT-hXiUj-vDkANs*n;9l@nf&xN~vxu2)YsM z#*K96qJm(HBJHAT7S%ZI{V#JwFqLT+2H+dd8(;8A(GC+BYdL(eHMkmgZ3l za~vEg99IS%zD2s~LX?*}2_Kq7<5v0csW?MpXSdy6f1@0E3$fb=0DSq-H_W@q7)vXc zls(qj-b>TooX49ccZLS?o&il0O@p4+JcNL)P@1Ab2d^3)*hLi2YV2ZG*8))B)9`w% z(4H1Ax-RS@isvsaA=iSI?XRM>a@fbrT&A6Hnh&!HzW+!8P*vgNb)%cg jr%t=b_YwRra^A*2w!_rBau7|a00000NkvXXu0mjffY|N2 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000000000000000000000000000000000000..b1202cb6b923d96c228a13a0de9c49fd1ba6367b GIT binary patch literal 8190 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 E4^2`?jsO4v literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c19f45251538b99735103885bdb0983afbd8d7 GIT binary patch literal 1039 zcmV+q1n~QbP)990y@e|L9wXEvKQ`;|7KHiGR#)fjB7vTbQVBECq8712f!)K(k&AXU@{ z(ddHUi%?S^`e3p6QYwVLNhMG;283n{O{|SIvAP5s+QdyZlig&$X2ypJo1M&lr9_M3 z|7C`==br!no^$S*yTULGgF6Vvoh1KXz?ualQwFa`X6ZimCs%&S{qq9Ge$6o+%QH8x z6ZtH`CA5Wm`>nxychl{(KoPe2)-cRS5Q>`rD45nGi7({=}a^se^ zz5*0k@X?z-{2R?>H)k|HIG!M#SvkphZRK6ls-N&RH(^twlgP0KWVZldJeKF|lQA|5qnF4`#~Di8!+_e#H8n`CL}||rEYiHm zxlRI>7BSAA#`tX<9S3jRI>hg}O;v-PJhMQ3ojs{Pjpz9K+a(^`tME{(yNUo^M?Z54 zV%Gtf)4UdPMdWCaW^gDnf9N5SDWiBPYSP*aYEmb1VxEPR&gHQzXZu2x1sEg41#*C( zbAcni0j^|P*ys6~y`F1GVwvR0Zbp=LPWLC7h}mZXz?bJzETl~TEt~BnvJ1F8Y;)?W zkJ42iwMQQrru|TuwjBXJ`CR3@i)qWx*C+FwA6x=J2sr#qy)A^jU^k~q?xZA^eI+Nn zb$A2Y?zZmdi~eNccy{hlxOcm&1_65Y=~aNX;wwpl7oW23Fg|CpdlbRTPuq82T0pR| zb^#%)Z+oj7uSeM2p4;yw;43|HY*umq&YJl}tJT-(z%~oEG&wo&xTkCkyMWyt;15=3 z_XiQ-4x3q9HIjR}Hy}y&tdtdiTgLIi5%2}dlluauk6X5wvpK`^1q?qZ^KhGc^=b=B zPr}B{IF7!JF?0cA^b)8E)861iwCzId>jY1oZP`#XLpEy;CYL057dn>M~SwLQc z$cY4#QyPzk6*~7QY;86>eLAl3eKbS=`9%`THzUaj@4VW8M=sxZ#i&|>*o{0r@6B3O zO9F>5o30oxN$~E`jqKi8Ib+4BdLh}`ED>H6FrPPUUHEtXGx|>o_zO;|PWd#~+P?q*002ov JPDHLkV1n39>udl3 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000000000000000000000000000000000000..79dd0da0722ac6e105482144290ec1355ba69f70 GIT binary patch literal 17332 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000..dac34074 --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = hittick + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.chaomao.hittick + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2021 com.chaomao. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000..36b0fd94 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000..dff4f495 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000..42bcbf47 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000..3ba6c126 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 00000000..4789daa6 --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000..2722837e --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 00000000..852fa1a4 --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/pubspec.lock b/pubspec.lock index 4c0c4309..417cba7f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -427,7 +427,7 @@ packages: name: flutter_hooks url: "https://pub.dartlang.org" source: hosted - version: "0.18.1" + version: "0.18.2" flutter_launcher_icons: dependency: "direct dev" description: diff --git a/resources/gen_macos-images.py b/resources/gen_macos-images.py new file mode 100644 index 00000000..bee9eeee --- /dev/null +++ b/resources/gen_macos-images.py @@ -0,0 +1,26 @@ +import os +import subprocess + +multipliers = { + 16: [1], + 32: [1], + 64: [1], + 128: [2], + 256: [1], + 512: [1], + 1024: [1] +} +inkscape_default_dpi = 96 + +svg_default_folder = 'ios-images' +root = '../macos/Runner/Assets.xcassets/AppIcon.appiconset' + +for size, scales in multipliers.items(): + for scale in scales: + png_file_path = os.path.join(root, f"app_icon_{size}" + '.png') + call_params = ["inkscape", + "--vacuum-defs", + "--export-dpi=%s" % int(size * 2), + "--export-filename=%s" % png_file_path, + os.path.join(svg_default_folder, 'ic_launcher.svg')] + subprocess.check_call(call_params, stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)