【问题标题】:How to build APK with no sound null safety如何构建没有声音空安全性的 APK
【发布时间】:2021-04-06 19:43:14
【问题描述】:

我可以在手机上以发布模式运行应用程序并传递标志--no-sound-null-safety --release,但是 既不是flutter build apk --enable-experiment=non-nullable 也不是flutter build apk --no-sound-null-safety 也不是flutter build apk --enable-experiment=non-nullable --no-sound-null-safety 会工作

【问题讨论】:

    标签: flutter dart apk


    【解决方案1】:

    只需在您的终端上执行此操作

    flutter build apk --split-per-abi --no-sound-null-safety
    

    或者

    flutter build apk --release --no-sound-null-safety
    

    【讨论】:

    • 构建ios pakcage时flutter版本为2.2.x时不起作用。@Adam Musa
    • 在 Flutter 2.x 中默认启用空安全。所以要解决这个问题,你必须将 dart 的 sdk 版本降级到 2.7.x。当您将 sdk 带回 2.7.x 时,您会更改编码方式,因为它不支持 sdk> = 2.10.x 的理念
    【解决方案2】:

    只需要在main.dart 中的所有导入之前使用附加注释// @dart=2.9,这样它就可以在没有任何标志的情况下运行

    所以main.dart 应该是这样的:

    // @dart=2.9
    import 'package:flutter/gestures.dart';
    import 'package:flutter/widgets.dart';
    import '../init.dart';
    
    Future<void> main() async {
      GestureBinding.instance?.resamplingEnabled = true;
      WidgetsFlutterBinding.ensureInitialized();
      await init();
      runApp(MyApp());
    }
    

    任何其他.dart 文件都不需要注释

    附:确保您更新了 pubspec.yaml 以使用 Dart 2.12:

    environment:
      sdk: '>=2.12.0-0.0 <3.0.0'
    

    【讨论】:

    • 它并没有解决问题,因为它只是声明文件不支持空安全。
    • 我没有看到任何问题,因为 main.dart 应该只用作入口点,例如 runApp(MyApp()),而实际的 MyApp() 小部件可能在另一个文件中
    • 但是这个其他文件仍然有问题。如果它使用空安全
    • 不。我的整个项目使用空安全,只有 main.dart 没有,一切都按预期工作
    • 你确定吗?因为文档另有说明:“在当前迁移期间不想考虑的任何 Dart 文件的顶部添加语言版本注释:”因此,仍会检查其他文件的空安全性
    【解决方案3】:

    我们可以试试这个,

     flutter build apk --release --no-sound-null-safety
    

    或通过添加 main.dart ,第一行

     // @dart=2.9
    

    【讨论】:

      【解决方案4】:

      flutter build apk --no-sound-null-safety

      【讨论】:

        猜你喜欢
        • 2021-06-15
        • 2020-10-14
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2019-09-22
        • 2021-06-12
        • 2020-06-12
        • 1970-01-01
        相关资源
        最近更新 更多