Compare commits

...

70 Commits

Author SHA1 Message Date
豌杂 197eae3079 ios 打包 2025-12-19 17:49:04 +08:00
豌杂 8fd0303427 添加Mac环境打包脚本 2025-12-19 16:44:27 +08:00
豌杂 122dfd6542 修复苹果登陆不能输入非数字,优化升级插件 2025-12-19 16:29:55 +08:00
豌杂 d125a2b470 处理IOS密码不能输入非数字的内容 2025-12-18 13:57:19 +08:00
DESKTOP-I3JPKHK\wy 7f3961c8ea 1 2025-10-10 15:18:26 +08:00
DESKTOP-I3JPKHK\wy 2545e4e314 windows 更新 2025-10-10 14:46:06 +08:00
豌杂 1a157ffc6f IOS版本号升级 2025-09-30 11:18:48 +08:00
DESKTOP-I3JPKHK\wy 4161a9fcc8 优化顶部打分bar 和 number 打分栏的rebuild 性能优化 2025-09-30 11:11:51 +08:00
DESKTOP-I3JPKHK\wy 2ac88000cc 移除高频 print 日志 2025-09-29 17:30:47 +08:00
DESKTOP-I3JPKHK\wy c7afafc3aa feat(homework_review): 优化批注绘制与坐标换算,提升交互流畅度
- 批注绘制改为 Path 聚合一次性绘制
- 移除高频 print,开启 CustomPaint isComplex/willChange
- 无变换时跳过逆矩阵
- 回滚不必要的 RepaintBoundary/低过滤
- 调整 Path 判空判断写法
2025-09-29 17:22:54 +08:00
DESKTOP-I3JPKHK\wy 1fc54d7526 补充提交 2025-09-29 13:39:37 +08:00
DESKTOP-I3JPKHK\wy e96429fe05 11111 2025-09-29 09:29:28 +08:00
DESKTOP-I3JPKHK\wy f050263ddf 终于解决了这个切换试题放大的内容乱跑的问题(更新视图zoomController位置重置时机应在key重新后,不该在前,被覆盖) 2025-09-28 18:07:50 +08:00
DESKTOP-I3JPKHK\wy bac6a7410a 版本更新 1.0.6+7 2025-09-23 16:31:24 +08:00
DESKTOP-I3JPKHK\wy 10025b49ee 修复部分代码 2025-09-23 16:16:59 +08:00
DESKTOP-I3JPKHK\wy c6409b095c 修复BUG和使用更新APP插件 2025-09-22 16:44:53 +08:00
DESKTOP-I3JPKHK\wy f638ef23de 补充提交,修复留白区域笔迹问题 2025-09-15 15:31:46 +08:00
DESKTOP-I3JPKHK\wy 8fd6c57874 Merge branch 'mcy_new' 2025-09-12 14:00:16 +08:00
DESKTOP-I3JPKHK\wy db04323e36 修复升级后的BUG 2025-09-11 17:23:14 +08:00
DESKTOP-I3JPKHK\wy e34234da09 补充提交处理BUG 2025-09-11 17:15:15 +08:00
DESKTOP-I3JPKHK\wy 8209b12459 补充提交 2025-09-11 14:38:22 +08:00
DESKTOP-I3JPKHK\wy b7478fd785 修复全部BUG 2025-09-11 14:25:23 +08:00
DESKTOP-I3JPKHK\wy b6af1f57a4 修复优化页面,修复部分问题。暂时提交 2025-09-10 16:49:25 +08:00
DESKTOP-I3JPKHK\wy 70f658f87d 优化完成批阅试图和视图视图滚动条联动 2025-09-09 15:58:30 +08:00
wangyang 5f4c9237c1 Merge pull request 'mcy_new' (#1) from mcy_new into master
Reviewed-on: #1
2025-08-28 10:10:44 +08:00
DESKTOP-I3JPKHK\wy 6252f930e1 111 2025-04-30 16:47:08 +08:00
DESKTOP-I3JPKHK\wy 951175a5cc 添加继续批阅按钮的 顺序批阅逻辑 2025-04-30 16:27:22 +08:00
DESKTOP-I3JPKHK\wy 4919e72008 处理启动图和批阅流程无法选择打分问题 2025-04-30 14:14:30 +08:00
DESKTOP-I3JPKHK\wy 0d2b3d6934 空试题 检验 2025-04-28 17:50:09 +08:00
DESKTOP-I3JPKHK\wy ef2684ca5d 优化批阅升级流程 2025-04-28 15:11:57 +08:00
豌杂 57ec197956 更改IOS APP 图标 2025-04-27 16:57:58 +08:00
豌杂 ba2a5bad2e 更改IOS APP 图标 2025-04-27 16:57:27 +08:00
豌杂 55692c2686 跟随IOS版本 2025-04-27 15:07:40 +08:00
豌杂 1ebdbf101a 安卓才判断双指校验 2025-04-25 17:49:38 +08:00
DESKTOP-I3JPKHK\wy 4d42562508 Merge branch 'mcy_new' of https://gitea.23544.com/marking/Making.School.Asignment.app into mcy_new 2025-04-25 17:00:15 +08:00
DESKTOP-I3JPKHK\wy 05b308b612 1111 2025-04-25 17:00:07 +08:00
machuanyu 5bf70505ed Merge remote-tracking branch 'origin/mcy_new' into mcy_new 2025-04-25 15:59:01 +08:00
machuanyu c2dd9171b9 班级排名修改 2025-04-25 15:58:52 +08:00
DESKTOP-I3JPKHK\wy d904eb33c4 补充提交 2025-04-25 15:36:35 +08:00
DESKTOP-I3JPKHK\wy 3a3458f34e 补充提交 2025-04-25 15:32:32 +08:00
DESKTOP-I3JPKHK\wy 0902c0cd0d 解决多指批注问题 2025-04-25 15:31:23 +08:00
豌杂 4b65ef1e88 123 2025-04-25 10:34:41 +08:00
豌杂 3171ba215f 苹果测试员账号跳过更新 2025-04-25 10:34:01 +08:00
DESKTOP-I3JPKHK\wy f79baf3a5e 123 2025-04-24 17:39:26 +08:00
DESKTOP-I3JPKHK\wy 4a03e92468 Merge branch 'mcy_new' of https://gitea.23544.com/marking/Making.School.Asignment.app into mcy_new 2025-04-24 15:11:21 +08:00
DESKTOP-I3JPKHK\wy a35f8f5572 111 2025-04-24 15:11:12 +08:00
machuanyu 7c5ef98014 答题时长修改 2025-04-24 14:59:33 +08:00
DESKTOP-I3JPKHK\wy f677fa4032 记住密码无效问题 2025-04-24 13:48:10 +08:00
DESKTOP-I3JPKHK\wy 6c3669350b 111 2025-04-24 11:52:07 +08:00
DESKTOP-I3JPKHK\wy 33996285f4 处理BUG 2025-04-24 11:43:07 +08:00
machuanyu 158fbc355f bug修改 2025-04-23 17:51:17 +08:00
DESKTOP-I3JPKHK\wy 9d2f15c80c 批阅页面修改 2025-04-23 15:27:27 +08:00
machuanyu a8d0e80555 -- 2025-04-23 14:49:07 +08:00
machuanyu bd8ef8bb57 Merge remote-tracking branch 'origin/mcy_new' into mcy_new 2025-04-23 14:48:22 +08:00
machuanyu 87bc2931c3 作业报告客观题增加作答率弹框 2025-04-23 14:48:14 +08:00
DESKTOP-I3JPKHK\wy 393b2ee578 补充提交 2025-04-22 18:38:11 +08:00
DESKTOP-I3JPKHK\wy 08cf62a845 打分BUG处理 2025-04-22 18:01:28 +08:00
DESKTOP-I3JPKHK\wy 6011f52a19 完成登陆页面添加协议引导,和批阅页面添加空白图上传 2025-04-22 14:45:58 +08:00
machuanyu 9d760da027 待批阅分页 2025-04-22 11:00:48 +08:00
DESKTOP-I3JPKHK\wy 094f0385dc 111 2025-04-21 17:43:33 +08:00
DESKTOP-I3JPKHK\wy 344fe4757d 111 2025-04-21 17:20:18 +08:00
DESKTOP-I3JPKHK\wy dfcb9adcbc 111 2025-04-21 17:13:55 +08:00
DESKTOP-I3JPKHK\wy a1a2389411 无法联动 滑动 2025-04-21 16:46:48 +08:00
DESKTOP-I3JPKHK\wy 00af849b1f 解决三键导航 阻挡全屏批阅问题 2025-04-21 16:30:41 +08:00
DESKTOP-I3JPKHK\wy 9e24bf5747 1111 2025-04-21 16:05:00 +08:00
DESKTOP-I3JPKHK\wy 7d6190040a 处理全部弹窗没有弹出 2025-04-21 15:28:36 +08:00
DESKTOP-I3JPKHK\wy 3f9661436d 处理图片尺寸并且完成批阅部分优化 2025-04-21 11:49:24 +08:00
1147192855@qq.com 138b4bb767 处理上传图片的问题 2025-04-19 21:46:37 +08:00
1147192855@qq.com ed30fc6240 完善X轴 缩小倍数问题 2025-04-19 21:20:35 +08:00
1147192855@qq.com 25029477cd 完成dy部分问题 2025-04-19 17:20:47 +08:00
192 changed files with 5928 additions and 4069 deletions

View File

@ -0,0 +1,3 @@
{
"flutter": "3.32.0"
}

View File

@ -5,9 +5,11 @@
*.swp
.DS_Store
.atom/
.build/
.buildlog/
.history
.svn/
.swiftpm/
migrate_working_dir/
# IntelliJ related
@ -42,3 +44,6 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release
# FVM Version Cache
.fvm/

View File

@ -0,0 +1,3 @@
{
"dart.flutterSdkPath": ".fvm/versions/3.32.0"
}

View File

@ -35,6 +35,11 @@ android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
coreLibraryDesugaringEnabled true
}
kotlinOptions {
jvmTarget = "1.8"
}
signingConfigs {
@ -80,8 +85,14 @@ android {
shrinkResources false //
}
}
}
flutter {
source = "../.."
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' //
}

View File

@ -4,6 +4,7 @@
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:enableOnBackInvokedCallback="true">
<!-- windowTranslucentStatus 设置顶部状态栏使用-->
<activity
android:name=".MainActivity"
android:exported="true"
@ -12,6 +13,7 @@
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowTranslucentStatus="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
@ -38,7 +40,7 @@
android:name="flutterEmbedding"
android:value="2"/>
<!-- Provider -->
<provider
<!-- <provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileProvider"
android:exported="false"
@ -46,6 +48,16 @@
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider> -->
<!-- ✅ FileProvider 配置 - 这是必需的! -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
<!-- 访问电话状态 -->
@ -75,25 +87,21 @@
<!-- 屏幕常亮权限 -->
<uses-permission
android:name="android.permission.WAKE_LOCK"/>
<uses-permission
android:name="android.permission.CAMERA"/>
<!-- <uses-permission
android:name="android.permission.CAMERA"/> -->
<!-- Permissions options for the `access notification policy` group -->
<uses-permission
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
<!-- Permissions options for the `notification` group -->
<uses-permission
android:name="android.permission.POST_NOTIFICATIONS"/>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<!-- 注释掉文本处理权限,避免不必要的剪切板访问 -->
<!-- <queries>
<intent>
<action
android:name="android.intent.action.PROCESS_TEXT"/>
<data
android:mimeType="text/plain"/>
</intent>
</queries>
</queries> -->
</manifest>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 B

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 B

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -3,8 +3,8 @@
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:windowSplashScreenBackground">#FFFFFF</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>

View File

@ -6,8 +6,8 @@
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.

View File

@ -3,8 +3,8 @@
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:windowSplashScreenBackground">#FFFFFF</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>

View File

@ -6,8 +6,8 @@
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.

View File

@ -1,5 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 外部存储 -->
<external-path name="external_files" path="." />
<!-- 应用内部存储 -->
<files-path name="files" path="." />
<!-- 缓存目录 -->
<cache-path name="cache" path="." />
<!-- 外部缓存 -->
<external-cache-path name="external_cache" path="." />
<!-- 下载目录 -->
<external-path name="downloads" path="Download/" />
<!-- 如果你已有其他配置,请保留它们 -->
<external-path path="Android/data/com.yuanxuan.making_school_asignment_app/" name="files_root" />
<external-path path="." name="external_storage_root" />
</paths>

View File

@ -30,8 +30,8 @@
<!-- 屏幕常亮权限 -->
<uses-permission
android:name="android.permission.WAKE_LOCK"/>
<uses-permission
android:name="android.permission.CAMERA"/>
<!-- <uses-permission
android:name="android.permission.CAMERA"/> -->
<!-- Permissions options for the `access notification policy` group -->
<uses-permission
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>

View File

@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.6.3-all.zip
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.10.2-all.zip

View File

@ -18,8 +18,8 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
id "com.android.application" version "8.8.0" apply false
id "org.jetbrains.kotlin.android" version "1.8.22" apply false
}
include ":app"

View File

@ -29,7 +29,7 @@
type="application/octet-stream" />
</item> -->
<item>
<title>Version 1.0.3+4</title>
<title>Version 1.0.7+8</title>
#发行说明-读取html方式(2选1)
<!-- <sparkle:releaseNotesLink>
https://your_domain/your_path/release_notes.html
@ -39,16 +39,15 @@
<![CDATA[
<ul>
<li>1、修复已知BUG</li>
<li>2、优化操作布局</li>
<li>2、添加缩放布局和批阅书写</li>
</ul>
]]>
</description>
<pubDate>Fri, 14 Mar 2025 12:00:00 +0800</pubDate>
<pubDate>Tue, 30 Sep 2025 14:09:13 +0800</pubDate>
#你更新程序的地址
<enclosure url="https://dpc-job-oss.23544.com/infra-app/making_school_asignment_app/1.0.3/3/making_school_asignment_app-1.0.3+4-windows-setup.exe"
sparkle:dsaSignature="MEYCIQCuU0BodcdWrF+WoJrWRpY8P1pfK+dKkvrl3ZJ5KxnDdAIhAIWqp7VBNO9IaKFj2ypQ+s7DWurBUSaf6MTvexMmuvX+"
length="0"
sparkle:version="1.0.3+4"
<enclosure url="https://dpc-job-oss.23544.com/infra-app/making_school_asignment_app/1.0.7/3/making_school_asignment_app-1.0.7+8-windows-setup.exe"
sparkle:dsaSignature="MEUCIQCwWC4fKrn/dfdH6uzX4Sssv7G6XVgvwjQLklrTM6+cBQIgZDY4INHcwuxrsIREuPQeTvQL4j0mvF9qPQfppjRSgsg=" length="0"
sparkle:version="1.0.7+8"
sparkle:os="windows"
type="application/octet-stream" />
</item>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 KiB

View File

@ -0,0 +1,109 @@
@echo off
SETLOCAL EnableDelayedExpansion
:: 设置 UTF-8 代码页以支持中文显示
chcp 65001 > nul
:: 获取项目根目录
for %%I in ("%~dp0.") do set "PROJECT_DIR=%%~fI"
:: 1. 强制终止所有Java进程Gradle相关
echo Terminating processes...
taskkill /f /im java.exe 2>nul
taskkill /f /im gradlew.exe 2>nul
timeout /t 2 /nobreak >nul
:: 修复后的Flutter构建脚本
echo Running flutter clean...
call flutter clean
if !ERRORLEVEL! neq 0 (
echo flutter clean failed with error: !ERRORLEVEL!
pause
exit /b 1
)
:: 3. 强制删除构建目录(带重试机制)
echo Removing residual files
call :ForceDelete "build"
call :ForceDelete ".dart_tool"
call :ForceDelete "pubspec.lock"
echo Running flutter pub get...
call flutter pub get
if !ERRORLEVEL! neq 0 (
echo flutter pub get failed with error: !ERRORLEVEL!
pause
exit /b 1
)
echo Running build_runner...
call flutter packages pub run build_runner build --delete-conflicting-outputs
if !ERRORLEVEL! neq 0 (
echo build_runner failed with error: !ERRORLEVEL!
pause
exit /b 1
)
echo Building release APK...
call flutter build apk --release
if !ERRORLEVEL! neq 0 (
echo APK build failed with error: !ERRORLEVEL!
pause
exit /b 1
)
:: 新增打开APK所在文件夹
echo Opening APK directory
if exist "build\app\outputs\flutter-apk\" (
explorer "build\app\outputs\flutter-apk\"
) else (
echo APK directory does not exist
)
echo.
echo All steps completed successfully!
echo APK file generated at: %PROJECT_DIR%\build\app\outputs\flutter-apk\
echo.
timeout /t 3 /nobreak >nul
exit /b 0
:: 函数区 -------------------------------------------------
:ForceDelete
setlocal
set "target=%~1"
set "max_retries=3"
set "retry_delay=1"
:: 检查目标是否存在
if not exist "%target%" (
endlocal
goto :eof
)
:: 尝试多次删除
for /l %%i in (1,1,%max_retries%) do (
echo Attempting to delete %target% (try %%i of %max_retries%)
:: 先尝试删除文件
del /f /q /s "%target%\*" 2>nul
:: 再尝试删除目录
rmdir /s /q "%target%" 2>nul
:: 检查是否删除成功
if not exist "%target%" (
echo Successfully deleted %target%
endlocal
goto :eof
)
:: 如果未成功,等待后重试
if %%i lss %max_retries% (
timeout /t %retry_delay% /nobreak >nul
set /a retry_delay*=2 :: 指数退避策略
)
)
:: 如果所有尝试都失败
echo Warning: Could not completely delete %target%, some files may be in use
endlocal
goto :eof

View File

@ -0,0 +1,159 @@
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
# Ensure UTF-8 locale for macOS terminals
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# Resolve project directory (script location)
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "Project dir: $PROJECT_DIR"
# To save credentials in macOS Keychain for non-interactive uploads, run:
# security add-generic-password -s "TransporterCredentials" -w "you@example.com:app-specific-password" -a transporter -U
# The script will read that item and expect the stored password string in the form: "APPLE_ID:APPLE_PASSWORD"
force_delete() {
local target="$1"
local max_retries=3
local retry_delay=1
if [ ! -e "$PROJECT_DIR/$target" ]; then
return 0
fi
for i in $(seq 1 $max_retries); do
echo "Attempting to delete $target (try $i of $max_retries)"
rm -rf "$PROJECT_DIR/$target" 2>/dev/null || true
if [ ! -e "$PROJECT_DIR/$target" ]; then
echo "Successfully deleted $target"
return 0
fi
if [ "$i" -lt "$max_retries" ]; then
sleep $retry_delay
retry_delay=$((retry_delay * 2))
fi
done
echo "Warning: Could not completely delete $target, some files may be in use"
return 1
}
cd "$PROJECT_DIR"
echo "Running flutter clean..."
if ! flutter clean; then
echo "flutter clean failed"
exit 1
fi
echo "Removing residual files"
force_delete build || true
force_delete .dart_tool || true
force_delete pubspec.lock || true
echo "Running flutter pub get..."
if ! flutter pub get; then
echo "flutter pub get failed"
exit 1
fi
echo "Running build_runner (if present)..."
if ! flutter packages pub run build_runner build --delete-conflicting-outputs; then
echo "build_runner failed or not present — continuing"
fi
echo "Building iOS IPA (verbose)..."
if ! flutter build ipa --release --verbose; then
echo "IPA build failed"
exit 1
fi
# Try to find the generated .ipa (searching under build/)
IPA_PATH="$(find "$PROJECT_DIR/build" -type f -name '*.ipa' -print -quit || true)"
if [ -z "$IPA_PATH" ]; then
echo "No .ipa found in build output"
echo "Build finished but no IPA to upload. Exiting."
exit 0
fi
echo "Found IPA: $IPA_PATH"
# Upload via Transporter (if installed). Prefer environment vars APPLE_ID and APPLE_PASSWORD (app-specific password).
ITMS_TRANSPORTER="/Applications/Transporter.app/Contents/itms/bin/iTMSTransporter"
if [ -x "$ITMS_TRANSPORTER" ]; then
echo "Using Transporter at $ITMS_TRANSPORTER"
# Read credentials from env, then try macOS Keychain, otherwise prompt
if [ -z "${APPLE_ID:-}" ] || [ -z "${APPLE_PASSWORD:-}" ]; then
# Try to read combined credentials from Keychain (service: TransporterCredentials)
if command -v security >/dev/null 2>&1; then
KC_PAIR="$(security find-generic-password -s "TransporterCredentials" -w 2>/dev/null || true)"
if [ -n "$KC_PAIR" ]; then
# Expect stored value in form: appleid:app-specific-password
APPLE_ID="${KC_PAIR%%:*}"
APPLE_PASSWORD="${KC_PAIR#*:}"
if [ -n "${APPLE_ID}" ] && [ -n "${APPLE_PASSWORD}" ]; then
echo "Credentials loaded from Keychain (service: TransporterCredentials)."
else
# clear if parsing failed
APPLE_ID=""
APPLE_PASSWORD=""
fi
fi
fi
if [ -z "${APPLE_ID:-}" ] || [ -z "${APPLE_PASSWORD:-}" ]; then
echo "Provide App Store Connect credentials for upload. You can set APPLE_ID and APPLE_PASSWORD (app-specific password) in the environment or save a keychain item named 'TransporterCredentials' to avoid prompts."
read -p "Apple ID (email): " APPLE_ID
read -s -p "App-specific password (will not echo): " APPLE_PASSWORD
echo
fi
fi
echo "Uploading $IPA_PATH to App Store Connect (this may take a while)..."
# Try transporter with a small retry loop
UPLOAD_EXIT=0
MAX_UPLOAD_TRIES=2
for try in $(seq 1 $MAX_UPLOAD_TRIES); do
echo "Transporter upload attempt $try of $MAX_UPLOAD_TRIES..."
if "$ITMS_TRANSPORTER" -m upload -u "$APPLE_ID" -p "$APPLE_PASSWORD" -f "$IPA_PATH"; then
echo "Upload succeeded"
UPLOAD_EXIT=0
break
else
UPLOAD_EXIT=$?
echo "Transporter upload attempt $try failed (exit $UPLOAD_EXIT)"
# small delay before retry
sleep $((try * 2))
fi
done
if [ $UPLOAD_EXIT -ne 0 ]; then
echo "Transporter upload failed after $MAX_UPLOAD_TRIES attempts (exit $UPLOAD_EXIT)."
echo "Opening Transporter app so you can upload the IPA manually..."
# Try to open Transporter GUI with the IPA as argument (may import the file)
if command -v open >/dev/null 2>&1; then
if open -a Transporter "$IPA_PATH" 2>/dev/null; then
echo "Transporter app opened. Please complete the upload there."
else
echo "Failed to open Transporter with the IPA. Opening Transporter app without file..."
open -a Transporter || true
echo "Transporter opened. Please drag the IPA ($IPA_PATH) into the app to upload."
fi
else
echo "Cannot open Transporter GUI: 'open' command not found. Please upload IPA manually: $IPA_PATH"
fi
# Do not exit with error here so the script can finish and user can manually complete upload
fi
else
echo "Transporter not found at $ITMS_TRANSPORTER. Please install Transporter app from the Mac App Store or upload the IPA manually."
echo "IPA path: $IPA_PATH"
fi
echo "All steps completed successfully!"
echo "IPA: $IPA_PATH"
exit 0

View File

@ -5,12 +5,15 @@ flutter_native_splash:
# 如需恢复默认的白屏,执行如下命令
# flutter pub run flutter_native_splash:remove
# 设置闪屏页的默认态logo或背景图片路径
color: "#FFFFFF"
image_ios: assets/images/splash_native.png
background_image_android: assets/images/splash_native.png
background_image: assets/images/splash_native.png
# 全屏模式
fullscreen: true
android_12:
image: assets/images/splash2.png
color: "#FFFFFF"
image: assets/images/logo_splash.png
android: true
ios: true
android_gravity: fill
ios_content_mode: scaleToFill
# android_gravity: clip_vertical
# ios_content_mode: scaleToFill

View File

@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
<string>13.0</string>
</dict>
</plist>

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '12.0'
# platform :ios, '13.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

@ -477,9 +477,10 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
@ -495,7 +496,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@ -503,7 +504,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 3;
MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = "com.yuanxuan.makingS--buneng--choolAsignmentApp";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -524,7 +525,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp.RunnerTests;
@ -542,7 +543,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
@ -559,7 +560,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp.RunnerTests;
@ -619,10 +620,11 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
@ -671,9 +673,10 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
@ -689,7 +692,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@ -697,7 +700,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 3;
MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@ -719,7 +722,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements;
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@ -727,7 +730,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 3;
MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

View File

@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
@ -54,11 +55,13 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">

View File

@ -1,7 +1,7 @@
import Flutter
import UIKit
@UIApplicationMain
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,

View File

@ -1,122 +1,158 @@
{
"images": [
{
"filename": "Icon-App-20x20@2x.png",
"idiom": "iphone",
"scale": "2x",
"size": "20x20"
},
{
"filename": "Icon-App-20x20@3x.png",
"idiom": "iphone",
"scale": "3x",
"size": "20x20"
},
{
"filename": "Icon-App-29x29@1x.png",
"idiom": "iphone",
"scale": "1x",
"size": "29x29"
},
{
"filename": "Icon-App-29x29@2x.png",
"idiom": "iphone",
"scale": "2x",
"size": "29x29"
},
{
"filename": "Icon-App-29x29@3x.png",
"idiom": "iphone",
"scale": "3x",
"size": "29x29"
},
{
"filename": "Icon-App-40x40@2x.png",
"idiom": "iphone",
"scale": "2x",
"size": "40x40"
},
{
"filename": "Icon-App-40x40@3x.png",
"idiom": "iphone",
"scale": "3x",
"size": "40x40"
},
{
"filename": "Icon-App-60x60@2x.png",
"idiom": "iphone",
"scale": "2x",
"size": "60x60"
},
{
"filename": "Icon-App-60x60@3x.png",
"idiom": "iphone",
"scale": "3x",
"size": "60x60"
},
{
"filename": "Icon-App-20x20@1x.png",
"idiom": "ipad",
"scale": "1x",
"size": "20x20"
},
{
"filename": "Icon-App-20x20@2x.png",
"idiom": "ipad",
"scale": "2x",
"size": "20x20"
},
{
"filename": "Icon-App-29x29@1x.png",
"idiom": "ipad",
"scale": "1x",
"size": "29x29"
},
{
"filename": "Icon-App-29x29@2x.png",
"idiom": "ipad",
"scale": "2x",
"size": "29x29"
},
{
"filename": "Icon-App-40x40@1x.png",
"idiom": "ipad",
"scale": "1x",
"size": "40x40"
},
{
"filename": "Icon-App-40x40@2x.png",
"idiom": "ipad",
"scale": "2x",
"size": "40x40"
},
{
"filename": "Icon-App-76x76@1x.png",
"idiom": "ipad",
"scale": "1x",
"size": "76x76"
},
{
"filename": "Icon-App-76x76@2x.png",
"idiom": "ipad",
"scale": "2x",
"size": "76x76"
},
{
"filename": "Icon-App-83.5x83.5@2x.png",
"idiom": "ipad",
"scale": "2x",
"size": "83.5x83.5"
},
{
"filename": "Icon-App-1024x1024@1x.png",
"idiom": "ios-marketing",
"scale": "1x",
"size": "1024x1024"
"images": [
{
"size": "20x20",
"idiom": "iphone",
"filename": "icon-20@2x.png",
"scale": "2x"
},
{
"size": "20x20",
"idiom": "iphone",
"filename": "icon-20@3x.png",
"scale": "3x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-29.png",
"scale": "1x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-29@2x.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-29@3x.png",
"scale": "3x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-40@2x.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-40@3x.png",
"scale": "3x"
},
{
"size": "57x57",
"idiom": "iphone",
"filename": "icon-57.png",
"scale": "1x"
},
{
"size": "57x57",
"idiom": "iphone",
"filename": "icon-57@2x.png",
"scale": "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-60@2x.png",
"scale": "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-60@3x.png",
"scale": "3x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "icon-20-ipad.png",
"scale": "1x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "icon-20@2x-ipad.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "icon-29-ipad.png",
"scale": "1x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "icon-29@2x-ipad.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "icon-40.png",
"scale": "1x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "icon-40@2x.png",
"scale": "2x"
},
{
"size": "50x50",
"idiom": "ipad",
"filename": "icon-50.png",
"scale": "1x"
},
{
"size": "50x50",
"idiom": "ipad",
"filename": "icon-50@2x.png",
"scale": "2x"
},
{
"size": "72x72",
"idiom": "ipad",
"filename": "icon-72.png",
"scale": "1x"
},
{
"size": "72x72",
"idiom": "ipad",
"filename": "icon-72@2x.png",
"scale": "2x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-76.png",
"scale": "1x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-76@2x.png",
"scale": "2x"
},
{
"size": "83.5x83.5",
"idiom": "ipad",
"filename": "icon-83.5@2x.png",
"scale": "2x"
},
{
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "icon-1024.png",
"scale": "1x"
}
],
"info": {
"version": 1,
"author": "icon.wuruihong.com"
}
],
"info": {
"author": "icons_launcher",
"version": 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Some files were not shown because too many files have changed in this diff Show More