【问题标题】:Some Package not included in final APK build in FlutterFlutter 的最终 APK 构建中未包含某些包
【发布时间】:2020-08-25 20:05:13
【问题描述】:

我制作了一个简单的测试应用程序,在 Flutter 中显示 Hello World!。我使用GoogleFonts 包更改fontFamily。当我在 Android Studio 中运行它时,一切正常。但在最终版本中,样式恢复为默认的Roboto。当我使用 Android Studio 的“分析 APK”功能时,我发现 GoogleFonts 包没有包含在最终构建中。可能是什么问题呢?这是一个错误,还是我做错了?

【问题讨论】:

    标签: flutter build package apk


    【解决方案1】:

    我从未使用过 Android Studio 的 APK Analyzer 来分析 Flutter APK,但是当我分析正常工作的 Flutter APK 时,我发现其中包含 libflutter.so 和 libapp.so。 Flutter 的结构肯定不同于常规的 Android APK。这些包包含在 libapp.so 中,而不是像在原生 Android APK 中那样作为单独的库添加。

    澄清一下:在原生 Android APK 上,您会看到 APK 在 Flutter APK 上使用的外部库,您不会看到外部 Flutter 库,它们似乎包含在 libapp.so 和/或 libflutter.so 中。

    【讨论】:

    • 对于我的另一个项目(与此测试应用程序存在类似问题),我包含了不同的其他包 - progress_dialogfont_awesome_flutterhttp。在 APK Analyzer 中,progress_dialogfont_awesome_flutter 是唯一包含在最终构建中的,但不是 http。是的,我的设备在测试应用程序时可以访问互联网..
    • 在 APK Analyzer 中,我可以在 packages 文件夹下看到 progress_dialogfont_awesome_flutter,但看不到 http..
    【解决方案2】:

    google_fonts 包仅用于测试目的,一旦您完成字体,您必须下载该字体并将其添加到资产中,就像我们处理图像和视频一样。

    official documentation 中也提到了这一点。

    google_fonts 包将自动在您的 pubspec.yaml 的资产中使用匹配的字体文件(而不是在运行时通过 HTTP 获取它们)。确定要使用的字体后:

    1. https://fonts.google.com 下载字体文件。你只需要 下载您用于任何给定的权重和样式 家庭。斜体样式将在文件名中包含斜体。字体 权重映射到文件名如下:
    2. 将这些字体移至顶级应用目录(例如 google_fonts)。
    3. 确保您已在您的 资产下的 pubspec.yaml。

    注意:由于这些文件被列为资产,因此无需在 pubspec.yaml 的字体部分中列出它们。之所以可以这样做,是因为这些文件是从 Google Fonts API 统一命名的(因此请确保不要重命名它们!)

    【讨论】:

    • 哇哦!我不知道!但实际上,这只是我正在做的一个项目的测试应用程序。我面临类似的问题。我正在使用http 包。但在最终的 APK 构建中,不再包含 http 包..
    • 你怎么说http包不再是?
    • 是的。我确保将它包含在 pubspec.yaml 中。但是当我构建 apk 文件时,http 包不再存在,导致我的应用程序无法从外部 API 资源中获取数据..
    • 确保没有互联网问题,并确保您添加了互联网和 wifi 权限。 stackoverflow.com/a/54984295/7924072
    • 是的,我在清单文件中包含了互联网权限,没有互联网问题..
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2016-08-16
    • 2023-03-15
    • 2021-10-29
    • 1970-01-01
    • 2015-03-21
    • 2022-11-15
    • 1970-01-01
    相关资源
    最近更新 更多