Flutter 构建的 iOS 应用程序未在生产环境中启动

问题描述 投票:0回答:1

我有一个 flutter 应用程序,当我从 Xcode 或 Android Studio 运行它时,它可以在我的 iOS 模拟器和物理 iPhone 上完美地构建和运行。

现在我将其发布到 AppStore,在几个用户下载了它之后,该应用程序甚至没有为他们启动......它甚至在到达启动屏幕之前就崩溃了。

我尝试添加 Crashlytics 以捕获错误(如果有任何错误),但没有报告任何内容。

你们中有人遇到过类似的问题吗?有没有办法了解正在发生的事情?

这是我的 main.dart 文件:

import 'package:animated_theme_switcher/animated_theme_switcher.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:path_provider/path_provider.dart';
import 'package:tupitools/core/locator.dart';
import 'package:tupitools/core/models/expansion_torque_search_model.dart';
import 'package:tupitools/core/models/gauge_converter_search_model.dart';
import 'package:tupitools/core/models/gauge_tube_chart_search_model.dart';
import 'package:tupitools/core/models/nominal_pipe_size_search_model.dart';
import 'package:tupitools/core/models/tes2_search_model.dart';
import 'package:tupitools/core/models/tube_expansion_search_model.dart';
import 'package:tupitools/core/theme_service.dart';
import 'package:tupitools/screens/splashscreen.dart';
import 'package:tupitools/utils/sp_utils.dart';

import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ]);
  await SPUtil.init();
  await ScreenUtil.ensureScreenSize();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  FlutterError.onError = (errorDetails) {
    FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
  };
  // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
  PlatformDispatcher.instance.onError = (error, stack) {
    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
    return true;
  };

  final themeService = await ThemeService.instance;
  var initTheme = themeService.initial;
  await setupLocator();
  final document = await getApplicationDocumentsDirectory();
  await Hive.initFlutter(document.path);
  Hive.registerAdapter(GaugeTubeChartSearchModelAdapter());
  Hive.registerAdapter(GaugeConverterSearchModelAdapter());
  Hive.registerAdapter(NominalPipeSizeSearchModelAdapter());
  Hive.registerAdapter(TubeExpansionSearchModelAdapter());
  Hive.registerAdapter(ExpansionTorqueSearchModelAdapter());
  Hive.registerAdapter(TES2SearchModelAdapter());

  if (!SPUtil.containsKey(SPUtil.keyConvertersOrder)) {
    SPUtil.setStringList(SPUtil.keyConvertersOrder, ["0", "1", "2", "3", "4", "5"]);
  }

  if (!SPUtil.containsKey(SPUtil.keyConvertersOrderByName)) {
    SPUtil.setStringList(SPUtil.keyConvertersOrderByName,
        ['Length', 'Weight', 'Circumference to diameter', 'Torque', 'Power', 'Flow rate']);
  }

  runApp(MyApp(theme: initTheme));
}

class MyApp extends StatelessWidget {
  final ThemeData theme;

  const MyApp({super.key, required this.theme});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
      statusBarBrightness: Brightness.dark, // iOS
      statusBarIconBrightness: Brightness.dark, // Android
    ));
    final mediaQueryData = MediaQuery.of(context);
    final scale = mediaQueryData.textScaleFactor.clamp(1.0, 1.0);
    return MediaQuery(
      data: MediaQuery.of(context).copyWith(textScaleFactor: scale),
      child: ScreenUtilInit(
        useInheritedMediaQuery: true,
        designSize: const Size(393, 852),
        minTextAdapt: true,
        builder: (context, child) {
          return ThemeProvider(
            initTheme: theme,
            builder: (_, theme) {
              return MaterialApp(
                debugShowCheckedModeBanner: false,
                title: 'App name',
                theme: theme,
                home: child,
              );
            },
          );
        },
        child: const SplashScreen(),
      ),
    );
  }
}
ios flutter app-store
1个回答
0
投票

最后我将 flutter SDK 和所有依赖项更新到最新版本,此后一切正常。但不确定首先是什么导致了这个问题..

© www.soinside.com 2019 - 2024. All rights reserved.