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)
解决方案:
-
针对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" />
问题 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。