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。