flutter - 当我尝试将 APK 构建为发布版本时,我遇到了灰屏,Flutter 中没有任何内容

标签 flutter dart build apk release

当我尝试构建发布 apk 时,出现此错误:


* What went wrong:                                                      
Execution failed for task ':path_provider:verifyReleaseResources'.      
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed                                    
     /home/mehrdad/.gradle/caches/transforms-2/files-2.1/a528b13ac93e64cafa3d0480e2c93207/core-1.1.0/res/values/values.xml:142:5-173:25: AAPT: error: resource android:attr/fontVariationSettings not found.

     /home/mehrdad/.gradle/caches/transforms-2/files-2.1/a528b13ac93e64cafa3d0480e2c93207/core-1.1.0/res/values/values.xml:142:5-173:25: AAPT: error: resource android:attr/ttcIndex not found.


* Try:                                                                  
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org                              

BUILD FAILED in 34s 

在 flutter 问题和 flutter 文档中进行一些搜索后,我看到了一些与我的问题相同的问题。 在 Debug模式下,当我尝试在 Android 手机上安装 flutter run app 时没有任何问题,并且运行完美。但后来我尝试这些命令:

flutter clean
flutter build apk

我遇到了最高错误。 这是我的 pubspec.yaml 文件:

name: atlas_gen_demo
description: A new Flutter project.

# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: "none" # Remove this line if you wish to publish to pub.dev

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.3
  simple_animations: ^1.3.3
  sqflite: ^1.1.3
  path_provider: ^0.4.1
  shared_preferences: ^0.5.0
  flushbar: ^1.5.0
  flutter_datetime_picker: ^1.3.8
    #git:
      #url: https://github.com/derohimat/flutter_datetime_picker.git

dev_dependencies:
  flutter_test:
    sdk: flutter

# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:
  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - assets/images/
  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.
  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages
  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  fonts:
    - family: persianBold
      fonts:
        - asset: assets/fonts/main_bold.ttf

    - family: persianMedium
      fonts:
        - asset: assets/fonts/main_medium.ttf
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

我认为这个问题可能是针对 flutter_datetime_picker: ^1.3.8 的。但我不确定。 请指导我解决这个问题。谢谢

GitHub 中的源代码:https://github.com/mehrdaddolatkhah/Atlas-gen-demo

编辑: 或者问题可能出在 :path_provider:verifyReleaseResources 我在此方法中在 db_helper 中使用了 path_provider:

  initDb() async {
    io.Directory documentDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentDirectory.path, DB_NAME);
    var db = await openDatabase(path, version: 1, onCreate: _onCreate);
    return db;
  }

path_provider 是否可能存在问题?

编辑编号 2: 更新 pubspec.yaml 后:

cupertino_icons: ^0.1.3
  simple_animations: ^1.3.3
  sqflite: ^1.1.3
  path_provider: ^1.6.10
  shared_preferences: ^0.5.0
  flushbar: ^1.5.0
  flutter_datetime_picker: ^1.3.8

并使用此命令: flutter 构建 apk --release

我可以毫无问题地构建 APK,但是在 Android 设备上安装 APK 时,我只看到灰屏,没有任何内容。 为什么会发生这种情况?

最佳答案

问题是因为我在另一个小部件中使用了定位小部件,这导致了问题。删除我使用的所有屏幕中的定位小部件并再次构建应用程序后,一切正常。 在 --release 模式下,我们看不到任何日志,但在 debug 模式下,在我阅读所有日志后,我发现我必须删除 Positioned 小部件。 在 --release 模式下,灰屏等同于 debug 模式下的红屏。 但我在调试模式下没有任何红屏,这种情况使我很难调试

这是我在 Debug模式下看到的日志:

I/flutter (12822): The following assertion was thrown while applying parent data.:
I/flutter (12822): Incorrect use of ParentDataWidget.
I/flutter (12822): The ParentDataWidget Positioned wants to apply ParentData of type StackParentData to a RenderObject,
I/flutter (12822): which has been set up to accept ParentData of incompatible type FlexParentData.
I/flutter (12822): Usually, this means that the Positioned widget has the wrong ancestor RenderObjectWidget. Typically,
I/flutter (12822): Positioned widgets are placed directly inside Stack widgets.
I/flutter (12822): The offending Positioned is currently placed inside a Column widget.
I/flutter (12822): The ownership chain for the RenderObject that received the incompatible parent data was:
I/flutter (12822):   Opacity ← ControlledAnimation<Map<String, dynamic>> ← FadeAnimation ← Positioned ← Column ←
I/flutter (12822): Container ← _SingleChildViewport ← IgnorePointer-[GlobalKey#7bb01] ← Semantics ← _PointerListener ←
I/flutter (12822): ⋯
I/flutter (12822): 
I/flutter (12822): When the exception was thrown, this was the stack:
I/flutter (12822): #0      RenderObjectElement._updateParentData.<anonymous closure> (package:flutter/src/widgets/framework.dart:5687:11)
I/flutter (12822): #1      RenderObjectElement._updateParentData (package:flutter/src/widgets/framework.dart:5703:6)
I/flutter (12822): #2      RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:5724:7)
I/flutter (12822): #3      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5418:5)
I/flutter (12822): #4      SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5871:11)
I/flutter (12822): ...     Normal element mounting (21 frames)
I/flutter (12822): #25     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3488:14)
I/flutter (12822): #26     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5989:32)
I/flutter (12822): ...     Normal element mounting (115 frames)
I/flutter (12822): #141    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3488:14)
I/flutter (12822): #142    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5989:32)
I/flutter (12822): ...     Normal element mounting (191 frames)
I/flutter (12822): #333    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3488:14)
I/flutter (12822): #334    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5989:32)
I/flutter (12822): ...     Normal element mounting (360 frames)
I/flutter (12822): #694    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3488:14)
I/flutter (12822): #695    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5989:32)
I/flutter (12822): ...     Normal element mounting (240 frames)
I/flutter (12822): #935    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3488:14)
I/flutter (12822): #936    Element.updateChild (package:flutter/src/widgets/framework.dart:3256:18)
I/flutter (12822): #937    RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1132:16)
I/flutter (12822): #938    RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1103:5)
I/flutter (12822): #939    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1045:17)
I/flutter (12822): #940    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2618:19)
I/flutter (12822): #941    RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1044:13)
I/flutter (12822): #942    WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:925:7)
I/flutter (12822): #943    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:906:7)
I/flutter (12822): (elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
I/flutter (12822): ════════════════════════════════════════════════════════════════════════════════════════════════════

关于flutter - 当我尝试将 APK 构建为发布版本时,我遇到了灰屏,Flutter 中没有任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62211418/

相关文章:

html - 我们可以使用 flutter 将PDF转换为图像以显示文件的缩略图吗?

dart - 用多个引用查询。 Firestore- flutter

dart - 实例化Dart类时,防止类属性为null

android-studio - Android Studio,Gradle : Initialize Build never ends

ios - Xcode 构建完成。无法构建 iOS 应用 - Flutter 项目

if-statement - 为什么使用三元运算符会出现错误?

linux - 我怎样才能获得更新的 GCC?我没有root,无法编译(内存错误)

angular - 合并两个不同 Angular 配置的 fileReplacement 属性

flutter - Flutter 中数据表的动态行高

android - 未处理的异常: '_InternalLinkedHashMap<dynamic, dynamic>'类型不是 'Map<String, dynamic>'类型的子类型吗?