From d07f84e02803aaaf9d359ab70c3a26e9c4c27ad4 Mon Sep 17 00:00:00 2001
From: Ray Li
Date: Sun, 19 Nov 2023 23:47:26 -0600
Subject: [PATCH 1/4] Upgrade Flutter v3.16
- Upgrade from Flutter v1.13.8 to v3.16.
---
.gitignore | 41 +-
.metadata | 41 +-
analysis_options.yaml | 28 +
android/.gitignore | 20 +-
android/app/build.gradle | 78 +-
android/app/src/debug/AndroidManifest.xml | 6 +-
android/app/src/main/AndroidManifest.xml | 29 +-
.../main/java/flutter/games/MainActivity.java | 14 -
.../flutter_games/MainActivity.kt | 6 +
.../main/kotlin/flutter/games/MainActivity.kt | 12 -
.../drawable-hdpi/ic_launcher_foreground.png | Bin 6204 -> 6241 bytes
.../drawable-mdpi/ic_launcher_foreground.png | Bin 3710 -> 3747 bytes
.../res/drawable-v21/launch_background.xml | 12 +
.../drawable-xhdpi/ic_launcher_foreground.png | Bin 9322 -> 9359 bytes
.../ic_launcher_foreground.png | Bin 16290 -> 16327 bytes
.../ic_launcher_foreground.png | Bin 24860 -> 24897 bytes
.../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 4308 -> 4345 bytes
.../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2605 -> 2642 bytes
.../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 6149 -> 6186 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 9958 -> 9995 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 14343 -> 14380 bytes
.../app/src/main/res/values-night/styles.xml | 18 +
android/app/src/main/res/values/styles.xml | 14 +-
android/app/src/profile/AndroidManifest.xml | 6 +-
android/build.gradle | 9 +-
android/gradle.properties | 3 +-
.../gradle/wrapper/gradle-wrapper.properties | 3 +-
android/settings.gradle | 34 +-
ios/.gitignore | 66 +-
ios/Flutter/AppFrameworkInfo.plist | 6 +-
ios/Runner.xcodeproj/project.pbxproj | 296 ++++++--
.../contents.xcworkspacedata | 2 +-
.../xcshareddata/xcschemes/Runner.xcscheme | 25 +-
ios/Runner/AppDelegate.swift | 2 +-
.../Icon-App-1024x1024@1x.png | Bin 92924 -> 92938 bytes
.../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 622 -> 659 bytes
.../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1402 -> 1439 bytes
.../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 2290 -> 2327 bytes
.../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 977 -> 1014 bytes
.../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 2214 -> 2251 bytes
.../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 3684 -> 3721 bytes
.../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1402 -> 1439 bytes
.../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 3276 -> 3313 bytes
.../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 5610 -> 5647 bytes
.../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 1862 -> 1899 bytes
.../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 4316 -> 4353 bytes
.../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 2152 -> 2189 bytes
.../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 5142 -> 5179 bytes
.../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 5610 -> 5647 bytes
.../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 9705 -> 9742 bytes
.../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 2861 -> 2898 bytes
.../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 7024 -> 7061 bytes
.../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 3078 -> 3115 bytes
.../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 7552 -> 7589 bytes
.../Icon-App-83.5x83.5@2x.png | Bin 8403 -> 8440 bytes
ios/Runner/Info.plist | 18 +-
ios/Runner/Runner-Bridging-Header.h | 2 +-
ios/RunnerTests/RunnerTests.swift | 12 +
lib/bottom_menu_items.dart | 15 +-
lib/component/item_description.dart | 9 +-
lib/component/item_game_container.dart | 4 +-
lib/component/item_header_game.dart | 88 ++-
lib/main.dart | 23 +-
lib/model/game.dart | 22 +-
lib/page/page_coming_soon.dart | 7 +-
lib/page/page_game_details.dart | 70 +-
lib/page/page_games.dart | 10 +-
lib/page/page_main.dart | 50 +-
lib/page/page_movies.dart | 4 +-
lib/themes.dart | 69 +-
lib/ui/item_header_diagonal.dart | 5 +-
lib/ui/item_image_height.dart | 13 +-
lib/ui/item_image_width.dart | 7 +-
lib/ui/item_rating.dart | 10 +-
linux/.gitignore | 1 +
linux/CMakeLists.txt | 145 ++++
linux/flutter/CMakeLists.txt | 88 +++
linux/flutter/generated_plugin_registrant.cc | 11 +
linux/flutter/generated_plugin_registrant.h | 15 +
linux/flutter/generated_plugins.cmake | 23 +
linux/main.cc | 6 +
linux/my_application.cc | 104 +++
linux/my_application.h | 18 +
macos/.gitignore | 7 +
macos/Flutter/Flutter-Debug.xcconfig | 1 +
macos/Flutter/Flutter-Release.xcconfig | 1 +
macos/Flutter/GeneratedPluginRegistrant.swift | 10 +
macos/Runner.xcodeproj/project.pbxproj | 695 ++++++++++++++++++
.../xcshareddata/IDEWorkspaceChecks.plist | 8 +
.../xcshareddata/xcschemes/Runner.xcscheme | 98 +++
.../contents.xcworkspacedata | 7 +
.../xcshareddata/IDEWorkspaceChecks.plist | 8 +
macos/Runner/AppDelegate.swift | 9 +
.../AppIcon.appiconset/Contents.json | 68 ++
.../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes
.../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes
.../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes
.../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes
.../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes
.../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes
.../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes
macos/Runner/Base.lproj/MainMenu.xib | 343 +++++++++
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 | 12 +
macos/Runner/Info.plist | 32 +
macos/Runner/MainFlutterWindow.swift | 15 +
macos/Runner/Release.entitlements | 8 +
macos/RunnerTests/RunnerTests.swift | 12 +
pubspec.lock | 204 +++--
pubspec.yaml | 16 +-
web/Game-Controller-Favicon.png | Bin 44031 -> 0 bytes
web/favicon.png | Bin 3380 -> 917 bytes
web/icons/Icon-192.png | Bin 11727 -> 5292 bytes
web/icons/Icon-512.png | Bin 34716 -> 8252 bytes
web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes
web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes
web/index.html | 46 +-
web/manifest.json | 16 +-
windows/.gitignore | 17 +
windows/CMakeLists.txt | 108 +++
windows/flutter/CMakeLists.txt | 109 +++
.../flutter/generated_plugin_registrant.cc | 11 +
windows/flutter/generated_plugin_registrant.h | 15 +
windows/flutter/generated_plugins.cmake | 23 +
windows/runner/CMakeLists.txt | 40 +
windows/runner/Runner.rc | 121 +++
windows/runner/flutter_window.cpp | 71 ++
windows/runner/flutter_window.h | 33 +
windows/runner/main.cpp | 43 ++
windows/runner/resource.h | 16 +
windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes
windows/runner/runner.exe.manifest | 20 +
windows/runner/utils.cpp | 65 ++
windows/runner/utils.h | 19 +
windows/runner/win32_window.cpp | 288 ++++++++
windows/runner/win32_window.h | 102 +++
139 files changed, 3860 insertions(+), 508 deletions(-)
create mode 100644 analysis_options.yaml
delete mode 100644 android/app/src/main/java/flutter/games/MainActivity.java
create mode 100644 android/app/src/main/kotlin/com/fluttergames/flutter_games/MainActivity.kt
delete mode 100644 android/app/src/main/kotlin/flutter/games/MainActivity.kt
create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml
create mode 100644 android/app/src/main/res/values-night/styles.xml
create mode 100644 ios/RunnerTests/RunnerTests.swift
create mode 100644 linux/.gitignore
create mode 100644 linux/CMakeLists.txt
create mode 100644 linux/flutter/CMakeLists.txt
create mode 100644 linux/flutter/generated_plugin_registrant.cc
create mode 100644 linux/flutter/generated_plugin_registrant.h
create mode 100644 linux/flutter/generated_plugins.cmake
create mode 100644 linux/main.cc
create mode 100644 linux/my_application.cc
create mode 100644 linux/my_application.h
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/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 macos/RunnerTests/RunnerTests.swift
delete mode 100644 web/Game-Controller-Favicon.png
create mode 100644 web/icons/Icon-maskable-192.png
create mode 100644 web/icons/Icon-maskable-512.png
create mode 100644 windows/.gitignore
create mode 100644 windows/CMakeLists.txt
create mode 100644 windows/flutter/CMakeLists.txt
create mode 100644 windows/flutter/generated_plugin_registrant.cc
create mode 100644 windows/flutter/generated_plugin_registrant.h
create mode 100644 windows/flutter/generated_plugins.cmake
create mode 100644 windows/runner/CMakeLists.txt
create mode 100644 windows/runner/Runner.rc
create mode 100644 windows/runner/flutter_window.cpp
create mode 100644 windows/runner/flutter_window.h
create mode 100644 windows/runner/main.cpp
create mode 100644 windows/runner/resource.h
create mode 100644 windows/runner/resources/app_icon.ico
create mode 100644 windows/runner/runner.exe.manifest
create mode 100644 windows/runner/utils.cpp
create mode 100644 windows/runner/utils.h
create mode 100644 windows/runner/win32_window.cpp
create mode 100644 windows/runner/win32_window.h
diff --git a/.gitignore b/.gitignore
index 925bebb..29a3a50 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,43 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
.DS_Store
-.dart_tool/
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
-.packages
-.pub/
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
-build/
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
+.pub-cache/
+.pub/
+/build/
-.idea/
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
-ios/Flutter/flutter_export_environment.sh
\ No newline at end of file
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/.metadata b/.metadata
index 8cab361..d22992e 100644
--- a/.metadata
+++ b/.metadata
@@ -4,5 +4,42 @@
# This file should be version controlled and should not be manually edited.
version:
- revision: 44b7e7d3f42f050a79712daab253af06e9daf530
- channel: beta
+ revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a"
+ channel: "stable"
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+ platforms:
+ - platform: root
+ create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ - platform: android
+ create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ - platform: ios
+ create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ - platform: linux
+ create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ - platform: macos
+ create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ - platform: web
+ create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ - platform: windows
+ create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+ base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
+
+ # 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/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..0d29021
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,28 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at https://dart.dev/lints.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/android/.gitignore b/android/.gitignore
index 9229fc4..6f56801 100644
--- a/android/.gitignore
+++ b/android/.gitignore
@@ -1,11 +1,13 @@
-*.iml
-*.class
-.gradle
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
/local.properties
-/.idea/workspace.xml
-/.idea/libraries
-.DS_Store
-/build
-/captures
GeneratedPluginRegistrant.java
-key.properties
\ No newline at end of file
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 2a65063..63cee9b 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,3 +1,9 @@
+plugins {
+ id "com.android.application"
+ id "kotlin-android"
+ id "dev.flutter.flutter-gradle-plugin"
+}
+
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
@@ -6,60 +12,56 @@ if (localPropertiesFile.exists()) {
}
}
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
- throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
}
-apply plugin: 'com.android.application'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
-/*
-def keystorePropertiesFile = rootProject.file("key.properties")
-def keystoreProperties = new Properties()
-keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
-*/
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
android {
- compileSdkVersion 28
+ namespace "com.fluttergames.flutter_games"
+ compileSdkVersion flutter.compileSdkVersion
+ ndkVersion flutter.ndkVersion
- lintOptions {
- disable 'InvalidPackage'
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
}
- defaultConfig {
- applicationId "flutter.games"
- minSdkVersion 16
- targetSdkVersion 28
- versionCode 1
- versionName "1.0"
+ kotlinOptions {
+ jvmTarget = '1.8'
}
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
- signingConfigs {
- release {
- /*
- keyAlias keystoreProperties['keyAlias']
- keyPassword keystoreProperties['keyPassword']
- storeFile file(keystoreProperties['storeFile'])
- storePassword keystoreProperties['storePassword']
- */
- }
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.fluttergames.flutter_games"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
+ minSdkVersion flutter.minSdkVersion
+ targetSdkVersion flutter.targetSdkVersion
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
}
buildTypes {
release {
- signingConfig signingConfigs.release
- }
- debug {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
+}
- flutter {
- source '../..'
- }
+flutter {
+ source '../..'
+}
- dependencies {
- }
-}
\ No newline at end of file
+dependencies {}
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index 35321c5..399f698 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -1,6 +1,6 @@
-
-
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 89d3f51..103a34d 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,28 +1,33 @@
-
-
+
-
+
+ android:name="io.flutter.embedding.android.NormalTheme"
+ android:resource="@style/NormalTheme"
+ />
+
+
-
\ No newline at end of file
+
diff --git a/android/app/src/main/java/flutter/games/MainActivity.java b/android/app/src/main/java/flutter/games/MainActivity.java
deleted file mode 100644
index fa053a9..0000000
--- a/android/app/src/main/java/flutter/games/MainActivity.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package flutter.games;
-
-import android.os.Bundle;
-
-import io.flutter.app.FlutterActivity;
-import io.flutter.plugins.GeneratedPluginRegistrant;
-
-public class MainActivity extends FlutterActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- GeneratedPluginRegistrant.registerWith(this);
- }
-}
diff --git a/android/app/src/main/kotlin/com/fluttergames/flutter_games/MainActivity.kt b/android/app/src/main/kotlin/com/fluttergames/flutter_games/MainActivity.kt
new file mode 100644
index 0000000..c2ba651
--- /dev/null
+++ b/android/app/src/main/kotlin/com/fluttergames/flutter_games/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.fluttergames.flutter_games
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/android/app/src/main/kotlin/flutter/games/MainActivity.kt b/android/app/src/main/kotlin/flutter/games/MainActivity.kt
deleted file mode 100644
index 0202c26..0000000
--- a/android/app/src/main/kotlin/flutter/games/MainActivity.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package flutter.games
-
-import android.os.Bundle
-import io.flutter.app.FlutterActivity
-import io.flutter.plugins.GeneratedPluginRegistrant
-
-class MainActivity: FlutterActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- GeneratedPluginRegistrant.registerWith(this)
- }
-}
diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
index 7b48fad2aa231bbe80c539cac99c3c16a5d8a995..ca8f6fb6501b80877c4519c40872183ca2171244 100644
GIT binary patch
delta 46
zcmdmE@X%m_vND5YiEBhjaDG}zd16s2gJVj5QmTSyZen_BP-=<
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..f74085f
--- /dev/null
+++ b/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
index 0fb58ffbd9100ea577420d933b690bdc5a67c2cd..6452e37f34497c20c9b1084d53a4500df676266c 100644
GIT binary patch
delta 46
zcmaFm(eF7yS(!ny#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8%|=B}6#$2i
B5VrsT
delta 10
RcmeD8eC07gd83EB3IG|_1R?+c
diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
index 97f1778e4822100cc338eec9134df09bd399ad47..bab5be98f6c86ac7b7c4ac4ab0102155139610f1 100644
GIT binary patch
delta 46
zcmZ2ff4qKzvND5YiEBhjaDG}zd16s2gJVj5QmTSyZen_BP-qK@8U}fi7AzZCsS=UD*jFY
E0J0(yegFUf
delta 12
UcmX?jh;hy##tF(BJ$@zt04E3q=>Px#
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 6bf063e289054531b1d941c35273812a4bf3c83b..751b7913c0ace4ba1cd6459eca407c80bd98c1fd 100644
GIT binary patch
delta 46
zcmcbj_)~F$vND5YiEBhjaDG}zd16s2gJVj5QmTSyZen_BP-<184vM
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 1d8579c51f41e4a0921e94f6253421e6ecb31116..a95c255debf1f12e8d438851e415fb92ba5a4322 100644
GIT binary patch
delta 46
zcmZoQSY<7Y
B5jOw;
delta 10
RcmeD7d*(Yqd85Z+H2@me1fl={
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 04d904e743380a9d5b2707af955aa035bbaf2219..e2eeb26ac1e6c5eb2d125ed205061f65cae67c2f 100644
GIT binary patch
delta 46
zcmZoKSW_@TS(!ny#5JNMI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8%|^v%<^YMK
B5pVzi
delta 10
RcmZ2e&|WY>d85Y@a{wEp1ls@r
diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..06952be
--- /dev/null
+++ b/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
index 00fa441..cb1ef88 100644
--- a/android/app/src/main/res/values/styles.xml
+++ b/android/app/src/main/res/values/styles.xml
@@ -1,8 +1,18 @@
-
+
+
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
index 35321c5..399f698 100644
--- a/android/app/src/profile/AndroidManifest.xml
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -1,6 +1,6 @@
-
-
diff --git a/android/build.gradle b/android/build.gradle
index 8c7cf3b..e83fb5d 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,18 +1,19 @@
buildscript {
+ ext.kotlin_version = '1.7.10'
repositories {
google()
- jcenter()
+ mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.1'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
- jcenter()
+ mavenCentral()
}
}
@@ -24,6 +25,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
delete rootProject.buildDir
}
diff --git a/android/gradle.properties b/android/gradle.properties
index a673820..598d13f 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,4 +1,3 @@
-org.gradle.jvmargs=-Xmx1536M
+org.gradle.jvmargs=-Xmx4G
android.useAndroidX=true
android.enableJetifier=true
-android.enableR8=true
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index ee22f78..3c472b9 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Thu Oct 31 00:14:18 CDT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
diff --git a/android/settings.gradle b/android/settings.gradle
index 5a2f14f..7cd7128 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,15 +1,29 @@
-include ':app'
+pluginManagement {
+ def flutterSdkPath = {
+ def properties = new Properties()
+ file("local.properties").withInputStream { properties.load(it) }
+ def flutterSdkPath = properties.getProperty("flutter.sdk")
+ assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+ return flutterSdkPath
+ }
+ settings.ext.flutterSdkPath = flutterSdkPath()
-def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
+ includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
-def plugins = new Properties()
-def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
-if (pluginsFile.exists()) {
- pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+
+ plugins {
+ id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
+ }
}
-plugins.each { name, path ->
- def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
- include ":$name"
- project(":$name").projectDir = pluginDirectory
+plugins {
+ id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+ id "com.android.application" version "7.3.0" apply false
}
+
+include ":app"
diff --git a/ios/.gitignore b/ios/.gitignore
index 2a8c8b6..7a7f987 100644
--- a/ios/.gitignore
+++ b/ios/.gitignore
@@ -1,44 +1,34 @@
-.idea/
-.vagrant/
-.sconsign.dblite
-.svn/
-
-.DS_Store
-*.swp
-profile
-
-DerivedData/
-build/
-GeneratedPluginRegistrant.h
-GeneratedPluginRegistrant.m
-
-.generated/
-
-*.pbxuser
+**/dgph
*.mode1v3
*.mode2v3
+*.moved-aside
+*.pbxuser
*.perspectivev3
-
-!default.pbxuser
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/ephemeral/
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
+!default.pbxuser
!default.perspectivev3
-
-xcuserdata
-
-*.moved-aside
-
-*.pyc
-*sync/
-Icon?
-.tags*
-
-/Flutter/app.flx
-/Flutter/app.zip
-/Flutter/flutter_assets/
-/Flutter/App.framework
-/Flutter/Flutter.framework
-/Flutter/Generated.xcconfig
-/ServiceDefinitions.json
-
-Pods/
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 6c2de80..9625e10 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -20,11 +20,7 @@
????
CFBundleVersion
1.0
- UIRequiredDeviceCapabilities
-
- arm64
-
MinimumOSVersion
- 8.0
+ 11.0
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 5fc05d7..1caf12b 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -3,25 +3,29 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
- 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
- 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
- 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
- 9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB31CF90195004384FC /* Generated.xcconfig */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 97C146ED1CF9000F007C117D;
+ remoteInfo = Runner;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
@@ -29,8 +33,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
- 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
- 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -40,20 +42,19 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
- 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -61,8 +62,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
- 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -72,10 +71,7 @@
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
- 2D5378251FAA1A9400D5DBA9 /* flutter_assets */,
- 3B80C3931E831B6300D905FE /* App.framework */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
- 9740EEBA1CF902C7004384FC /* Flutter.framework */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
@@ -83,12 +79,21 @@
name = Flutter;
sourceTree = "";
};
+ 331C8082294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXGroup;
+ children = (
+ 331C807B294A618700263BE5 /* RunnerTests.swift */,
+ );
+ path = RunnerTests;
+ sourceTree = "";
+ };
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
+ 331C8082294A63A400263BE5 /* RunnerTests */,
);
sourceTree = "";
};
@@ -96,6 +101,7 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "";
@@ -107,7 +113,6 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
- 97C146F11CF9000F007C117D /* Supporting Files */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
@@ -116,16 +121,27 @@
path = Runner;
sourceTree = "";
};
- 97C146F11CF9000F007C117D /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- );
- name = "Supporting Files";
- sourceTree = "";
- };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
+ 331C8080294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+ buildPhases = (
+ 331C807D294A63A400263BE5 /* Sources */,
+ 331C807E294A63A400263BE5 /* Frameworks */,
+ 331C807F294A63A400263BE5 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */,
+ );
+ name = RunnerTests;
+ productName = RunnerTests;
+ productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
@@ -152,18 +168,23 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0910;
- ORGANIZATIONNAME = "The Chromium Authors";
+ BuildIndependentTargetsInParallel = YES;
+ LastUpgradeCheck = 1430;
+ ORGANIZATIONNAME = "";
TargetAttributes = {
+ 331C8080294A63A400263BE5 = {
+ CreatedOnToolsVersion = 14.0;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
- LastSwiftMigration = 0910;
+ LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
@@ -175,21 +196,26 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
+ 331C8080294A63A400263BE5 /* RunnerTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 331C807F294A63A400263BE5 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
- 9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
- 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
- 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -199,20 +225,23 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -228,6 +257,14 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 331C807D294A63A400263BE5 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -239,6 +276,14 @@
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 97C146ED1CF9000F007C117D /* Runner */;
+ targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -259,9 +304,129 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ 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_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ 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_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.fluttergames.flutterGames2;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 331C8088294A63A400263BE5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = AE0B7B92F70575B8D7E0D07E /* Pods-RunnerTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.fluttergames.flutterGames2.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Debug;
+ };
+ 331C8089294A63A400263BE5 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 89B67EB44CE7B6631473024E /* Pods-RunnerTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.fluttergames.flutterGames2.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Release;
+ };
+ 331C808A294A63A400263BE5 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 640959BDD8F10B91D80A66BE /* Pods-RunnerTests.profile.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.fluttergames.flutterGames2.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Profile;
+ };
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
@@ -273,12 +438,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
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_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@@ -305,7 +472,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -315,7 +482,6 @@
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
@@ -327,12 +493,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
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_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@@ -353,10 +521,12 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
@@ -366,27 +536,20 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
- ARCHS = arm64;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
+ LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
- "$(PROJECT_DIR)/Flutter",
+ "@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = flutter.games;
+ PRODUCT_BUNDLE_IDENTIFIER = com.fluttergames.flutterGames2;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_SWIFT3_OBJC_INFERENCE = On;
- SWIFT_VERSION = 4.0;
+ SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@@ -395,26 +558,19 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
- ARCHS = arm64;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
+ LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
- "$(PROJECT_DIR)/Flutter",
+ "@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = flutter.games;
+ PRODUCT_BUNDLE_IDENTIFIER = com.fluttergames.flutterGames2;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_SWIFT3_OBJC_INFERENCE = On;
- SWIFT_VERSION = 4.0;
+ SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
@@ -422,11 +578,22 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 331C8088294A63A400263BE5 /* Debug */,
+ 331C8089294A63A400263BE5 /* Release */,
+ 331C808A294A63A400263BE5 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
@@ -436,6 +603,7 @@
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a1..919434a 100644
--- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 1263ac8..87131a0 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,6 +1,6 @@
-
-
-
-
+
+
+
+
+
+
-
-
Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
index 4b7e9d5c0cf6e53642fb41f02854138658d8a326..cc4c1b612c398ac2c2f48f104db4da78d4582770 100644
GIT binary patch
literal 92938
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