提交 70946588 authored 作者: 王鹏飞's avatar 王鹏飞

feat: update iOS publish script with enhanced options and error handling

- Bump version in pubspec.yaml from 1.0.1+4 to 1.0.1+5. - Refactor ios_publish.sh to improve usability and error handling. - Add options for skipping build, submitting only, and setting a timeout. - Implement checks for required commands and configuration files. - Enhance version and build number extraction from pubspec.yaml. - Improve output messages for better clarity during the publishing process.
上级 5345b482
......@@ -64,11 +64,11 @@
<true/>
</dict>
<key>NSCameraUsageDescription</key>
<string>清控紫荆数智学堂需要访问相机</string>
<string>用于拍摄并上传用户头像图片,例如在个人资料页面拍照设置头像。</string>
<key>NSMicrophoneUsageDescription</key>
<string>清控紫荆数智学堂需要访问麦克风</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>清控紫荆数智学堂需要访问照片</string>
<string>用于从相册选择并上传图片,例如设置用户头像、在笔记或讨论中添加图片内容。</string>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
......
......@@ -58,11 +58,11 @@ class MineController extends GetxController {
value: userInfo.integralNums.toString(),
link: Routes.point,
icon: 'assets/images/point.png'),
// ReadModel(
// name: '紫荆币',
// value: userInfo.beanNums.toString(),
// link: Routes.coin,
// icon: 'assets/images/coin.png'),
ReadModel(
name: '紫荆币',
value: userInfo.beanNums.toString(),
link: Routes.coin,
icon: 'assets/images/coin.png'),
ReadModel(
name: '订单',
value: userInfo.ordersNums.toString(),
......
......@@ -68,12 +68,15 @@ abstract class Access {
}
if (showExplanation && context != null && purpose.isNotEmpty) {
final bool? shouldRequest = await _showPermissionExplanationDialog(
if (!context.mounted) {
return false;
}
await _showPermissionExplanationDialog(
context: context,
permissionName: permissionName,
purpose: purpose,
);
if (shouldRequest != true) {
if (!context.mounted) {
return false;
}
}
......@@ -96,12 +99,12 @@ abstract class Access {
/// 显示权限使用目的说明对话框
/// 对话框不会自动消失,需要用户主动确认
static Future<bool?> _showPermissionExplanationDialog({
static Future<void> _showPermissionExplanationDialog({
required BuildContext context,
required String permissionName,
required String purpose,
}) async {
return await showDialog<bool>(
await showDialog<void>(
context: context,
barrierDismissible: false, // 不允许点击外部关闭
builder: (BuildContext dialogContext) {
......@@ -162,35 +165,14 @@ abstract class Access {
],
),
actions: <Widget>[
Row(
children: [
Expanded(
child: TextButton(
onPressed: () {
Navigator.of(dialogContext).pop(false);
},
child: Text(
'取消',
style: TextStyle(
fontSize: 16.w,
color: Colours.c6,
fontWeight: Fonts.medium,
),
),
),
),
Container(
width: 1,
height: 40.w,
color: Colours.cLine,
),
Expanded(
SizedBox(
width: double.infinity,
child: TextButton(
onPressed: () {
Navigator.of(dialogContext).pop(true);
Navigator.of(dialogContext).pop();
},
child: Text(
'确定',
'继续',
style: TextStyle(
fontSize: 16.w,
color: Colours.cAB1941,
......@@ -201,8 +183,6 @@ abstract class Access {
),
],
),
],
),
);
},
);
......
......@@ -6,7 +6,7 @@ packages:
description:
name: archive
sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.6.1"
args:
......@@ -14,7 +14,7 @@ packages:
description:
name: args
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.7.0"
asn1lib:
......@@ -22,7 +22,7 @@ packages:
description:
name: asn1lib
sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.6.5"
async:
......@@ -30,7 +30,7 @@ packages:
description:
name: async
sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.13.1"
audio_session:
......@@ -38,7 +38,7 @@ packages:
description:
name: audio_session
sha256: "2b7fff16a552486d078bfc09a8cde19f426dc6d6329262b684182597bec5b1ac"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.1.25"
badges:
......@@ -46,7 +46,7 @@ packages:
description:
name: badges
sha256: cf1c88fb3777df69ccd630b80de5267f54efa4a39381b0404a7c03d56cb7c041
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.2.0"
boolean_selector:
......@@ -54,7 +54,7 @@ packages:
description:
name: boolean_selector
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.2"
carousel_slider:
......@@ -62,7 +62,7 @@ packages:
description:
name: carousel_slider
sha256: febf4b0163e0242adc13d7a863b04965351f59e7dfea56675c7c2caa7bcd7476
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.1.2"
characters:
......@@ -70,7 +70,7 @@ packages:
description:
name: characters
sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.1"
clock:
......@@ -78,7 +78,7 @@ packages:
description:
name: clock
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
code_assets:
......@@ -86,7 +86,7 @@ packages:
description:
name: code_assets
sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.0"
collection:
......@@ -94,7 +94,7 @@ packages:
description:
name: collection
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.19.1"
connectivity_plus:
......@@ -102,7 +102,7 @@ packages:
description:
name: connectivity_plus
sha256: "224a77051d52a11fbad53dd57827594d3bd24f945af28bd70bab376d68d437f0"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.0.2"
connectivity_plus_platform_interface:
......@@ -110,7 +110,7 @@ packages:
description:
name: connectivity_plus_platform_interface
sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.4"
convert:
......@@ -118,7 +118,7 @@ packages:
description:
name: convert
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.2"
cross_file:
......@@ -126,7 +126,7 @@ packages:
description:
name: cross_file
sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.5+2"
crypto:
......@@ -134,7 +134,7 @@ packages:
description:
name: crypto
sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.7"
cupertino_icons:
......@@ -142,7 +142,7 @@ packages:
description:
name: cupertino_icons
sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.9"
dbus:
......@@ -150,7 +150,7 @@ packages:
description:
name: dbus
sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.7.12"
decimal:
......@@ -158,7 +158,7 @@ packages:
description:
name: decimal
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.3"
dio:
......@@ -166,7 +166,7 @@ packages:
description:
name: dio
sha256: aff32c08f92787a557dd5c0145ac91536481831a01b4648136373cddb0e64f8c
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.9.2"
dio_web_adapter:
......@@ -174,7 +174,7 @@ packages:
description:
name: dio_web_adapter
sha256: "2f9e64323a7c3c7ef69567d5c800424a11f8337b8b228bad02524c9fb3c1f340"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.2"
easy_refresh:
......@@ -182,7 +182,7 @@ packages:
description:
name: easy_refresh
sha256: "73eb6119f7275270cedc764fa22e724b62a2f110265945699c9bc3290681ee70"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.5.0"
encrypt:
......@@ -190,7 +190,7 @@ packages:
description:
name: encrypt
sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.0.3"
extended_image:
......@@ -198,7 +198,7 @@ packages:
description:
name: extended_image
sha256: "69d4299043334ecece679996e47d0b0891cd8c29d8da0034868443506f1d9a78"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "8.3.1"
extended_image_library:
......@@ -206,7 +206,7 @@ packages:
description:
name: extended_image_library
sha256: e61dafd94400fff6ef7ed1523d445ff3af137f198f3228e4a3107bc5b4bec5d1
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.6"
fake_async:
......@@ -214,7 +214,7 @@ packages:
description:
name: fake_async
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.3"
ffi:
......@@ -222,7 +222,7 @@ packages:
description:
name: ffi
sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
file:
......@@ -230,7 +230,7 @@ packages:
description:
name: file
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.0.1"
file_selector_linux:
......@@ -238,7 +238,7 @@ packages:
description:
name: file_selector_linux
sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.9.4"
file_selector_macos:
......@@ -246,7 +246,7 @@ packages:
description:
name: file_selector_macos
sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.9.5"
file_selector_platform_interface:
......@@ -254,7 +254,7 @@ packages:
description:
name: file_selector_platform_interface
sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.7.0"
file_selector_windows:
......@@ -262,7 +262,7 @@ packages:
description:
name: file_selector_windows
sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.9.3+5"
fixnum:
......@@ -270,7 +270,7 @@ packages:
description:
name: fixnum
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.1"
flutter:
......@@ -282,16 +282,16 @@ packages:
dependency: "direct main"
description:
name: flutter_app_update
sha256: "09290240949c4651581cd6fc535e52d019e189e694d6019c56b5a56c2e69ba65"
url: "https://pub.dev"
sha256: cb373a9d011c7c7d7e3d027e71d3fa3c4049d41e4be7364124bd93a95fe311a7
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.2.2"
version: "3.2.3"
flutter_cache_manager:
dependency: "direct main"
description:
name: flutter_cache_manager
sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.4.1"
flutter_easyloading:
......@@ -299,7 +299,7 @@ packages:
description:
name: flutter_easyloading
sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.5"
flutter_inapp_purchase:
......@@ -307,7 +307,7 @@ packages:
description:
name: flutter_inapp_purchase
sha256: "748757271506a3cc7745aa501019c7ce8051d8738b8a36aee12a617d8e9df8d3"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.6.2"
flutter_inappwebview:
......@@ -315,7 +315,7 @@ packages:
description:
name: flutter_inappwebview
sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.1.5"
flutter_inappwebview_android:
......@@ -323,7 +323,7 @@ packages:
description:
name: flutter_inappwebview_android
sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.3"
flutter_inappwebview_internal_annotations:
......@@ -331,7 +331,7 @@ packages:
description:
name: flutter_inappwebview_internal_annotations
sha256: e30fba942e3debea7b7e6cdd4f0f59ce89dd403a9865193e3221293b6d1544c6
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
flutter_inappwebview_ios:
......@@ -339,7 +339,7 @@ packages:
description:
name: flutter_inappwebview_ios
sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
flutter_inappwebview_macos:
......@@ -347,7 +347,7 @@ packages:
description:
name: flutter_inappwebview_macos
sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
flutter_inappwebview_platform_interface:
......@@ -355,7 +355,7 @@ packages:
description:
name: flutter_inappwebview_platform_interface
sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0+1"
flutter_inappwebview_web:
......@@ -363,7 +363,7 @@ packages:
description:
name: flutter_inappwebview_web
sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
flutter_inappwebview_windows:
......@@ -371,7 +371,7 @@ packages:
description:
name: flutter_inappwebview_windows
sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.0"
flutter_lints:
......@@ -379,7 +379,7 @@ packages:
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.3"
flutter_localizations:
......@@ -392,7 +392,7 @@ packages:
description:
name: flutter_oss_aliyun
sha256: "8280c1e8dfb792dec6449d1e6052e1d3492b3b3a1dfee456cc41d3f31b4cbc26"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.4.2"
flutter_plugin_android_lifecycle:
......@@ -400,7 +400,7 @@ packages:
description:
name: flutter_plugin_android_lifecycle
sha256: "38d1c268de9097ff59cf0e844ac38759fc78f76836d37edad06fa21e182055a0"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.34"
flutter_screenutil:
......@@ -408,7 +408,7 @@ packages:
description:
name: flutter_screenutil
sha256: "8239210dd68bee6b0577aa4a090890342d04a136ce1c81f98ee513fc0ce891de"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.9.3"
flutter_slidable:
......@@ -416,7 +416,7 @@ packages:
description:
name: flutter_slidable
sha256: a857de7ea701f276fd6a6c4c67ae885b60729a3449e42766bb0e655171042801
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.2"
flutter_sound:
......@@ -424,7 +424,7 @@ packages:
description:
name: flutter_sound
sha256: "77f0252a2f08449d621f68b8fd617c3b391e7f862eaa94bb32f53cc2dc3bbe85"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.30.0"
flutter_sound_platform_interface:
......@@ -432,7 +432,7 @@ packages:
description:
name: flutter_sound_platform_interface
sha256: "5ffc858fd96c6fa277e3bb25eecc100849d75a8792b1f9674d1ba817aea9f861"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.30.0"
flutter_sound_web:
......@@ -440,7 +440,7 @@ packages:
description:
name: flutter_sound_web
sha256: "3af46f45f44768c01c83ba260855c956d0963673664947926d942aa6fbf6f6fb"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.30.0"
flutter_spinkit:
......@@ -448,7 +448,7 @@ packages:
description:
name: flutter_spinkit
sha256: "77850df57c00dc218bfe96071d576a8babec24cf58b2ed121c83cca4a2fdce7f"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.2.2"
flutter_star:
......@@ -456,7 +456,7 @@ packages:
description:
name: flutter_star
sha256: "7dc10b8b3667ace2aa575a37ea0c00558a7514019cfe7e76322573d85b72a472"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
flutter_test:
......@@ -469,7 +469,7 @@ packages:
description:
name: flutter_tts
sha256: cbb3fd43b946e62398560235469e6113e4fe26c40eab1b7cb5e7c417503fb3a8
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.8.5"
flutter_web_plugins:
......@@ -482,7 +482,7 @@ packages:
description:
name: fluwx
sha256: d25c26a12a1fa280833105869ea255a5877695e03dc1190f0d2c027a7c989ef3
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.6.3"
get:
......@@ -490,7 +490,7 @@ packages:
description:
name: get
sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.7.3"
glob:
......@@ -498,7 +498,7 @@ packages:
description:
name: glob
sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.3"
go_router:
......@@ -506,7 +506,7 @@ packages:
description:
name: go_router
sha256: e1a30a66d734f9e498b1b6522d6a75ded28242bad2359a9158df38a1c30bcf1f
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "10.2.0"
hooks:
......@@ -514,7 +514,7 @@ packages:
description:
name: hooks
sha256: "025f060e86d2d4c3c47b56e33caf7f93bf9283340f26d23424ebcfccf34f621e"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.3"
http:
......@@ -522,7 +522,7 @@ packages:
description:
name: http
sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.6.0"
http_client_helper:
......@@ -530,7 +530,7 @@ packages:
description:
name: http_client_helper
sha256: "8a9127650734da86b5c73760de2b404494c968a3fd55602045ffec789dac3cb1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.0"
http_parser:
......@@ -538,7 +538,7 @@ packages:
description:
name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.1.2"
image_picker:
......@@ -546,7 +546,7 @@ packages:
description:
name: image_picker
sha256: "91c025426c2881c551100bce834e201c835a170151545f58d17da5180ca7d9ac"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.2"
image_picker_android:
......@@ -554,7 +554,7 @@ packages:
description:
name: image_picker_android
sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.8.13+17"
image_picker_for_web:
......@@ -562,7 +562,7 @@ packages:
description:
name: image_picker_for_web
sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.1"
image_picker_ios:
......@@ -570,7 +570,7 @@ packages:
description:
name: image_picker_ios
sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.8.13+6"
image_picker_linux:
......@@ -578,7 +578,7 @@ packages:
description:
name: image_picker_linux
sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.2"
image_picker_macos:
......@@ -586,7 +586,7 @@ packages:
description:
name: image_picker_macos
sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.2+1"
image_picker_platform_interface:
......@@ -594,7 +594,7 @@ packages:
description:
name: image_picker_platform_interface
sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.11.1"
image_picker_windows:
......@@ -602,7 +602,7 @@ packages:
description:
name: image_picker_windows
sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.2"
intl:
......@@ -610,7 +610,7 @@ packages:
description:
name: intl
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.20.2"
jni:
......@@ -618,7 +618,7 @@ packages:
description:
name: jni
sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.0"
jni_flutter:
......@@ -626,7 +626,7 @@ packages:
description:
name: jni_flutter
sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.1"
js:
......@@ -634,7 +634,7 @@ packages:
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.7"
just_audio:
......@@ -642,7 +642,7 @@ packages:
description:
name: just_audio
sha256: f978d5b4ccea08f267dae0232ec5405c1b05d3f3cd63f82097ea46c015d5c09e
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.9.46"
just_audio_platform_interface:
......@@ -650,7 +650,7 @@ packages:
description:
name: just_audio_platform_interface
sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.6.0"
just_audio_web:
......@@ -658,7 +658,7 @@ packages:
description:
name: just_audio_web
sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.4.16"
leak_tracker:
......@@ -666,7 +666,7 @@ packages:
description:
name: leak_tracker
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "11.0.2"
leak_tracker_flutter_testing:
......@@ -674,7 +674,7 @@ packages:
description:
name: leak_tracker_flutter_testing
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.10"
leak_tracker_testing:
......@@ -682,7 +682,7 @@ packages:
description:
name: leak_tracker_testing
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.2"
lints:
......@@ -690,7 +690,7 @@ packages:
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.1"
logger:
......@@ -698,7 +698,7 @@ packages:
description:
name: logger
sha256: "25aee487596a6257655a1e091ec2ae66bc30e7af663592cc3a27e6591e05035c"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.7.0"
logging:
......@@ -706,7 +706,7 @@ packages:
description:
name: logging
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
matcher:
......@@ -714,7 +714,7 @@ packages:
description:
name: matcher
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.12.19"
material_color_utilities:
......@@ -722,7 +722,7 @@ packages:
description:
name: material_color_utilities
sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.13.0"
meta:
......@@ -730,7 +730,7 @@ packages:
description:
name: meta
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.17.0"
mime:
......@@ -738,7 +738,7 @@ packages:
description:
name: mime
sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.6"
native_toolchain_c:
......@@ -746,7 +746,7 @@ packages:
description:
name: native_toolchain_c
sha256: "6ba77bb18063eebe9de401f5e6437e95e1438af0a87a3a39084fbd37c90df572"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.17.6"
nm:
......@@ -754,7 +754,7 @@ packages:
description:
name: nm
sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.5.0"
objective_c:
......@@ -762,7 +762,7 @@ packages:
description:
name: objective_c
sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.3.0"
oktoast:
......@@ -770,7 +770,7 @@ packages:
description:
name: oktoast
sha256: f1366c5c793ddfb8f55bc6fc3e45db43c45debf173b765fb4c5ec096cbdeb84a
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.4.0"
package_config:
......@@ -778,7 +778,7 @@ packages:
description:
name: package_config
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
package_info_plus:
......@@ -786,7 +786,7 @@ packages:
description:
name: package_info_plus
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.2.0"
package_info_plus_platform_interface:
......@@ -794,7 +794,7 @@ packages:
description:
name: package_info_plus_platform_interface
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.1"
path:
......@@ -802,7 +802,7 @@ packages:
description:
name: path
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.9.1"
path_drawing:
......@@ -810,7 +810,7 @@ packages:
description:
name: path_drawing
sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.1"
path_parsing:
......@@ -818,7 +818,7 @@ packages:
description:
name: path_parsing
sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
path_provider:
......@@ -826,7 +826,7 @@ packages:
description:
name: path_provider
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.5"
path_provider_android:
......@@ -834,7 +834,7 @@ packages:
description:
name: path_provider_android
sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.1"
path_provider_foundation:
......@@ -842,7 +842,7 @@ packages:
description:
name: path_provider_foundation
sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.6.0"
path_provider_linux:
......@@ -850,7 +850,7 @@ packages:
description:
name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.1"
path_provider_platform_interface:
......@@ -858,7 +858,7 @@ packages:
description:
name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.2"
path_provider_windows:
......@@ -866,7 +866,7 @@ packages:
description:
name: path_provider_windows
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.0"
permission_handler:
......@@ -874,7 +874,7 @@ packages:
description:
name: permission_handler
sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "12.0.1"
permission_handler_android:
......@@ -882,7 +882,7 @@ packages:
description:
name: permission_handler_android
sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "13.0.1"
permission_handler_apple:
......@@ -890,7 +890,7 @@ packages:
description:
name: permission_handler_apple
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.4.7"
permission_handler_html:
......@@ -898,7 +898,7 @@ packages:
description:
name: permission_handler_html
sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.1.3+5"
permission_handler_platform_interface:
......@@ -906,7 +906,7 @@ packages:
description:
name: permission_handler_platform_interface
sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.3.0"
permission_handler_windows:
......@@ -914,7 +914,7 @@ packages:
description:
name: permission_handler_windows
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.1"
petitparser:
......@@ -922,7 +922,7 @@ packages:
description:
name: petitparser
sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.0.2"
platform:
......@@ -930,7 +930,7 @@ packages:
description:
name: platform
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.6"
plugin_platform_interface:
......@@ -938,7 +938,7 @@ packages:
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.8"
pointycastle:
......@@ -946,7 +946,7 @@ packages:
description:
name: pointycastle
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.9.1"
pub_semver:
......@@ -954,7 +954,7 @@ packages:
description:
name: pub_semver
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
rational:
......@@ -962,7 +962,7 @@ packages:
description:
name: rational
sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.3"
record_use:
......@@ -970,7 +970,7 @@ packages:
description:
name: record_use
sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.0"
rxdart:
......@@ -978,7 +978,7 @@ packages:
description:
name: rxdart
sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.28.0"
shared_preferences:
......@@ -986,7 +986,7 @@ packages:
description:
name: shared_preferences
sha256: c3025c5534b01739267eb7d76959bbc25a6d10f6988e1c2a3036940133dd10bf
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.5.5"
shared_preferences_android:
......@@ -994,7 +994,7 @@ packages:
description:
name: shared_preferences_android
sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.23"
shared_preferences_foundation:
......@@ -1002,7 +1002,7 @@ packages:
description:
name: shared_preferences_foundation
sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.5.6"
shared_preferences_linux:
......@@ -1010,7 +1010,7 @@ packages:
description:
name: shared_preferences_linux
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.1"
shared_preferences_platform_interface:
......@@ -1018,7 +1018,7 @@ packages:
description:
name: shared_preferences_platform_interface
sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.2"
shared_preferences_web:
......@@ -1026,7 +1026,7 @@ packages:
description:
name: shared_preferences_web
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.3"
shared_preferences_windows:
......@@ -1034,7 +1034,7 @@ packages:
description:
name: shared_preferences_windows
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.1"
sky_engine:
......@@ -1047,7 +1047,7 @@ packages:
description:
name: source_span
sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.10.2"
sqflite:
......@@ -1055,7 +1055,7 @@ packages:
description:
name: sqflite
sha256: "564cfed0746fe53140c23b70b308e045c3b31f17778f2f326ccb7d804ea0250a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.2+1"
sqflite_android:
......@@ -1063,7 +1063,7 @@ packages:
description:
name: sqflite_android
sha256: "881e28efdcc9950fd8e9bb42713dcf1103e62a2e7168f23c9338d82db13dec40"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.2+3"
sqflite_common:
......@@ -1071,7 +1071,7 @@ packages:
description:
name: sqflite_common
sha256: f8a08a13fb8f0f8c590df89d745000bed44a673ed94bac846739e1a016875c21
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.5.7"
sqflite_darwin:
......@@ -1079,7 +1079,7 @@ packages:
description:
name: sqflite_darwin
sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.2"
sqflite_platform_interface:
......@@ -1087,7 +1087,7 @@ packages:
description:
name: sqflite_platform_interface
sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.0"
stack_trace:
......@@ -1095,7 +1095,7 @@ packages:
description:
name: stack_trace
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.12.1"
stream_channel:
......@@ -1103,7 +1103,7 @@ packages:
description:
name: stream_channel
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.4"
string_scanner:
......@@ -1111,7 +1111,7 @@ packages:
description:
name: string_scanner
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.1"
synchronized:
......@@ -1119,7 +1119,7 @@ packages:
description:
name: synchronized
sha256: "63896c27e81b28f8cb4e69ead0d3e8f03f1d1e5fc531a3e579cabed6a2c7c9e5"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.4.0+1"
term_glyph:
......@@ -1127,7 +1127,7 @@ packages:
description:
name: term_glyph
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.2"
test_api:
......@@ -1135,7 +1135,7 @@ packages:
description:
name: test_api
sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.7.10"
tobias:
......@@ -1143,7 +1143,7 @@ packages:
description:
name: tobias
sha256: "32836a9dae348d1c3f5f4247ed0a6a409fd5b9ddf490b06966a0fad2fd02cb7a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.3.2"
typed_data:
......@@ -1151,7 +1151,7 @@ packages:
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.0"
uuid:
......@@ -1159,7 +1159,7 @@ packages:
description:
name: uuid
sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.5.3"
vector_math:
......@@ -1167,7 +1167,7 @@ packages:
description:
name: vector_math
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
vm_service:
......@@ -1175,7 +1175,7 @@ packages:
description:
name: vm_service
sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "15.2.0"
web:
......@@ -1183,7 +1183,7 @@ packages:
description:
name: web
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.1"
win32:
......@@ -1191,7 +1191,7 @@ packages:
description:
name: win32
sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.15.0"
xdg_directories:
......@@ -1199,7 +1199,7 @@ packages:
description:
name: xdg_directories
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
xml:
......@@ -1207,7 +1207,7 @@ packages:
description:
name: xml
sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.6.1"
yaml:
......@@ -1215,7 +1215,7 @@ packages:
description:
name: yaml
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.3"
sdks:
......
......@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.1+4
version: 1.0.1+5
environment:
sdk: '>=3.0.0 <4.0.0'
......
#!/bin/bash
set -e
#!/usr/bin/env bash
set -euo pipefail
# =============================================
# 清控紫荆数智学堂 — iOS 发布脚本
# 用法: ./scripts/ios_publish.sh [--submit]
# =============================================
# iOS App Store publish helper.
#
# Default behavior:
# 1. Validate local release inputs.
# 2. Run flutter pub get and pod install.
# 3. Build an App Store IPA.
# 4. Upload the IPA and wait for App Store Connect processing.
#
# Submit behavior:
# ./scripts/ios_publish.sh --submit
# Uploads, waits, updates App Review notes, then submits for review.
APP_ID="6476735372"
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
EXPORT_OPTIONS="$PROJECT_DIR/ios/ExportOptions.plist"
ASC_CONFIG="$PROJECT_DIR/.asc/config.json"
SUBMIT=false
SKIP_BUILD=false
SUBMIT_ONLY=false
TIMEOUT="45m"
# 从 pubspec.yaml 读取版本号
VERSION=$(grep '^version:' "$PROJECT_DIR/pubspec.yaml" | sed 's/version: //' | cut -d'+' -f1)
BUILD=$(grep '^version:' "$PROJECT_DIR/pubspec.yaml" | sed 's/version: //' | cut -d'+' -f2)
REVIEW_NOTES=$'App Review notes:\n\nIn-App Purchases can be found after logging in:\n我的 -> 紫荆币 -> 充值\n\nThe recharge page displays the In-App Purchase products, including 6元, 98元, 298元, and 598元. Select a product and tap 立即充值 to start the Apple In-App Purchase flow.\n\nThis build also updates the camera/photo permission flow: the pre-permission explanation no longer has a cancel button, and the iOS purpose strings now describe specific usage examples.'
# 解析参数
SUBMIT=false
for arg in "$@"; do
case $arg in
--submit) SUBMIT=true ;;
usage() {
cat <<EOF
Usage:
./scripts/ios_publish.sh [--submit] [--skip-build] [--submit-only] [--timeout 45m]
Options:
--submit Submit the processed build for App Review after upload.
--skip-build Reuse an existing IPA under build/ios/ipa/.
--submit-only Update App Review notes and submit an already uploaded build.
--timeout Upload/build processing timeout passed to asc. Default: 45m.
-h, --help Show this help.
EOF
}
while [[ $# -gt 0 ]]; do
case "$1" in
--submit)
SUBMIT=true
shift
;;
--skip-build)
SKIP_BUILD=true
shift
;;
--submit-only)
SUBMIT=true
SUBMIT_ONLY=true
shift
;;
--timeout)
TIMEOUT="${2:-}"
if [[ -z "$TIMEOUT" ]]; then
echo "Missing value for --timeout" >&2
exit 2
fi
shift 2
;;
-h|--help)
usage
exit 0
;;
*)
echo "Unknown argument: $1" >&2
usage
exit 2
;;
esac
done
echo "========================================="
echo " App: 清控紫荆数智学堂 ($APP_ID)"
echo " 版本: $VERSION (build $BUILD)"
echo "========================================="
require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
echo "Missing required command: $1" >&2
exit 1
fi
}
extract_json_id() {
jq -r '
if type == "object" and (.data | type) == "array" then
.data[0].id // empty
elif type == "object" and (.data | type) == "object" then
.data.id // empty
elif type == "object" and (.id | type) == "string" then
.id
else
empty
end
'
}
# 1. 安装依赖
echo "[1/4] 安装 Flutter 依赖..."
cd "$PROJECT_DIR"
flutter pub get
# 2. Pod install
echo "[2/4] 安装 CocoaPods 依赖..."
cd "$PROJECT_DIR/ios"
pod install
require_cmd flutter
require_cmd pod
require_cmd asc
require_cmd jq
# 3. 构建 IPA(Flutter 内置流程:build → archive → export)
echo "[3/4] 构建 IPA..."
cd "$PROJECT_DIR"
if [[ ! -f "$ASC_CONFIG" ]]; then
echo "Missing asc config: $ASC_CONFIG" >&2
exit 1
fi
# 生成 ExportOptions.plist(如果不存在)
EXPORT_OPTIONS="$PROJECT_DIR/ios/ExportOptions.plist"
if [ ! -f "$EXPORT_OPTIONS" ]; then
cat > "$EXPORT_OPTIONS" << 'XMLEOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>destination</key>
<string>export</string>
<key>teamID</key>
<string>MYN43C5WGE</string>
<key>uploadBitcode</key>
<false/>
<key>uploadSymbols</key>
<true/>
<key>signingStyle</key>
<string>automatic</string>
<key>generateAppStoreInformation</key>
<true/>
</dict>
</plist>
XMLEOF
echo "已生成 ExportOptions.plist"
if [[ ! -f "$EXPORT_OPTIONS" ]]; then
echo "Missing export options plist: $EXPORT_OPTIONS" >&2
exit 1
fi
flutter build ipa --release \
--export-options-plist="$EXPORT_OPTIONS"
VERSION_LINE="$(grep -E '^version:[[:space:]]*[0-9]+\.[0-9]+\.[0-9]+\+[0-9]+[[:space:]]*$' pubspec.yaml || true)"
if [[ -z "$VERSION_LINE" ]]; then
echo "pubspec.yaml version must look like: version: 1.0.1+5" >&2
exit 1
fi
VERSION="${VERSION_LINE#version: }"
VERSION="${VERSION%%+*}"
BUILD="${VERSION_LINE##*+}"
BUILD="${BUILD//[[:space:]]/}"
IPA_PATH="$PROJECT_DIR/build/ios/ipa/flutter_book.ipa"
if [ ! -f "$IPA_PATH" ]; then
echo "错误: IPA 文件未生成: $IPA_PATH"
if [[ -z "$VERSION" || -z "$BUILD" ]]; then
echo "Failed to parse version/build from pubspec.yaml" >&2
exit 1
fi
echo "IPA 生成成功: $IPA_PATH"
echo "========================================="
echo " App: 清控紫荆数智学堂 ($APP_ID)"
echo " Version: $VERSION"
echo " Build: $BUILD"
echo " Submit: $SUBMIT"
echo " Submit only: $SUBMIT_ONLY"
echo "========================================="
# 4. 上传到 App Store
echo "[4/4] 上传到 App Store..."
if [ "$SUBMIT" = true ]; then
asc publish appstore \
--app "$APP_ID" \
--ipa "$IPA_PATH" \
--version "$VERSION" \
--submit --confirm
echo "[0/5] Checking App Store Connect auth..."
asc doctor >/dev/null
if [[ "$SUBMIT_ONLY" == true ]]; then
echo "[1-4/5] Submit-only mode; skipping build and upload."
elif [[ "$SKIP_BUILD" != true ]]; then
echo "[1/5] Installing Flutter dependencies..."
flutter pub get
echo "[2/5] Installing CocoaPods dependencies..."
(cd ios && pod install)
echo "[3/5] Building IPA..."
flutter build ipa --release --build-name="$VERSION" --build-number="$BUILD" \
--export-options-plist="$EXPORT_OPTIONS"
else
echo "[1-3/5] Skipping build; reusing existing IPA."
fi
if [[ "$SUBMIT_ONLY" != true ]]; then
mapfile -t IPA_FILES < <(find "$PROJECT_DIR/build/ios/ipa" -maxdepth 1 -name '*.ipa' -type f -print | sort)
if [[ "${#IPA_FILES[@]}" -ne 1 ]]; then
echo "Expected exactly one IPA under build/ios/ipa, found ${#IPA_FILES[@]}:" >&2
printf ' %s\n' "${IPA_FILES[@]}" >&2
exit 1
fi
IPA_PATH="${IPA_FILES[0]}"
echo "IPA: $IPA_PATH"
echo "[4/5] Uploading IPA and waiting for processing..."
asc builds upload \
--app "$APP_ID" \
--ipa "$IPA_PATH"
--ipa "$IPA_PATH" \
--version "$VERSION" \
--build-number "$BUILD" \
--wait \
--verify-timeout 5m
fi
echo ""
echo "========================================="
echo " 上传完成!"
echo " 版本: $VERSION (build $BUILD)"
if [ "$SUBMIT" = true ]; then
echo " 已自动提交审核"
if [[ "$SUBMIT" != true ]]; then
echo "[5/5] Upload complete. Build was not submitted."
echo "Submit later with: ./scripts/ios_publish.sh --submit-only"
exit 0
fi
echo "[5/5] Preparing App Review submission..."
BUILD_JSON="$(asc builds list --app "$APP_ID" --version "$VERSION" --build-number "$BUILD" --platform IOS --processing-state VALID --output json)"
BUILD_ID="$(printf '%s' "$BUILD_JSON" | extract_json_id)"
if [[ -z "$BUILD_ID" ]]; then
echo "Could not resolve processed build id for $VERSION ($BUILD)." >&2
echo "$BUILD_JSON" >&2
exit 1
fi
VERSION_JSON="$(asc versions list --app "$APP_ID" --version "$VERSION" --platform IOS --output json)"
VERSION_ID="$(printf '%s' "$VERSION_JSON" | extract_json_id)"
if [[ -z "$VERSION_ID" ]]; then
echo "Could not resolve App Store version id for $VERSION." >&2
echo "$VERSION_JSON" >&2
exit 1
fi
DETAIL_JSON="$(asc review details-for-version --version-id "$VERSION_ID" --output json || true)"
DETAIL_ID="$(printf '%s' "$DETAIL_JSON" | extract_json_id)"
if [[ -n "$DETAIL_ID" ]]; then
echo "Updating App Review notes..."
asc review details-update --id "$DETAIL_ID" --notes "$REVIEW_NOTES" >/dev/null
else
echo " 未提交审核,可用以下命令提交:"
echo " asc review status --app $APP_ID"
echo " 或运行: $0 --submit"
echo "Could not resolve review detail id; review notes were not updated." >&2
echo "Do not submit until App Review notes include the IAP path below:" >&2
printf '%s\n' "$REVIEW_NOTES" >&2
exit 1
fi
echo "Submitting for App Review..."
asc review submit \
--app "$APP_ID" \
--version "$VERSION" \
--build "$BUILD_ID" \
--confirm
echo "========================================="
echo "Submitted for App Review."
echo "Version: $VERSION ($BUILD)"
echo "========================================="
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论