新手开发flutter问题记录

1.运行 flutter build apk 报错:

D:\flutter_sdk\flutter>flutter build apk
Error: No pubspec.yaml file found.
This command should be run from the root of your Flutter project.
Do not run this command from the root of your git clone of Flutter.

解决方案:查看D:\flutter_sdk\flutter> 是否是指向自己的项目路径,改为指向自己项目路径.

2.flutter apk 运行闪退,报错 couldn't find "libflutter.so" 的问题:

报错内容:

    --------- beginning of crash
2019-07-02 17:40:36.626 7059-7059/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: comde.example.flutter_app, PID: 7059
    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/comde.example.flutter_app-1/base.apk"],nativeLibraryDirectories=[/data/app/comde.example.flutter_app-1/lib/arm64, /data/app/comde.example.flutter_app-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]] couldn't find "libflutter.so"
        at java.lang.Runtime.loadLibrary0(Runtime.java:984)
        at java.lang.System.loadLibrary(System.java:1562)
        at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:154)
        at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:130)
        at io.flutter.app.FlutterApplication.onCreate(FlutterApplication.java:22)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5547)
        at android.app.ActivityThread.-wrap2(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1625)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6383)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

解决方案:

  1. 针对arm32和arm64分别打包(flutter 提供了命令来之分别对arm32和arm64分别打包)

    • flutter build apk --target-platform=android-arm32

    • flutter build apk --target-platform=android-arm64

我们用flutter build apk --target-platform=android-arm64打包apk,并在arm64cpu架构的手机安装运行,很好完美运行。但是当我们吧apk安装到32位时问题再次出现,原因就不再重复了。很显然到这里这个方式并不能解决这个问题,为了适配arm32和arm64我们需要分别打包,而国内大部分应用市场不能针对不同cpu架构上传不同的apk。

解决方案来源于:Flutter杂症(couldn't find "libflutter.so") - 简书

问题 2.

更新flutter sdk2.0.0 后, 使用在 pubspec.yaml 新增了依赖后 执行Pub get, 会有警告出现:

Your Flutter application is created using an older version of the Android
embedding. It's being deprecated in favor of Android embedding v2. Follow the
steps at

解决方案:在AndroidManifest.xml中添加

<meta-data
    android:name="flutterEmbedding"
    android:value="2" />

参考:打开旧Flutter项目说:Your Flutter application is created using an older version of the Android embedding-CSDN博客

问题 3. 1: [!] Your app isn't using AndroidX.

解决方案:gradle.properties中添加如下代码即可

android.enableJetifier=true
android.useAndroidX=true

问题 4.  flutter sdk 升级到 2.0.0后运行旧项目报错

Launching lib\main.dart on Redmi Note 5A in debug mode...
/D:/flutter_sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/chewie-0.9.10/lib/src/chewie_player.dart:83:7: Error: No named parameter with the name 'resizeToAvoidBottomPadding'.
      resizeToAvoidBottomPadding: false,
      ^^^^^^^^^^^^^^^^^^^^^^^^^^
/D:/flutter_sdk/flutter/packages/flutter/lib/src/material/scaffold.dart:1451:9: Context: Found this candidate, but the arguments don't match.
  const Scaffold({
        ^^^^^^^^
/D:/flutter_sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/chewie-0.9.10/lib/src/chewie_player.dart:276:17: Error: The method 'inheritFromWidgetOfExactType' isn't defined for the class 'BuildContext'.
 - 'BuildContext' is from 'package:flutter/src/widgets/framework.dart' ('/D:/flutter_sdk/flutter/packages/flutter/lib/src/widgets/framework.dart').
Try correcting the name to the name of an existing method, or defining a method named 'inheritFromWidgetOfExactType'.
        context.inheritFromWidgetOfExactType(_ChewieControllerProvider)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^


FAILURE: Build failed with an exception.

* Where:
Script 'D:\flutter_sdk\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 991

* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command 'D:\flutter_sdk\flutter\bin\flutter.bat'' finished with non-zero exit value 1

* 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 18s
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done                        19.7s
Exception: Gradle task assembleDebug failed with exit code 1

解决方案: 

通过注释掉第三方依赖库来排查这个错误,发现是 chewie: ^0.9.7 这个视频播放的插件引起的, 

注意:在 pubspec.yaml 中直接依赖 chewie: ^0.9.7  这个库时不会报错的, 只有加入 import 'package:chewie/chewie.dart';后才会报错。

问题5:No Material widget found.ListTile widgets require a Material widget ancestor

解决方案: 使用了Material 风格的widget 就需要Scaffold作为根布局,listTile是Material风格中的widget。所有根布局就需要使用Scaffold。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值