Flutter 构建apk遇到的坑

2019-07-12  本文已影响0人  LK110

Flutter 集成jpush推送.

按照jpush配置完成之后,打包apk ,安装到Android手机,直接闪退。主要原因是arm64-v8a
arm64-v8a是可以向下兼容的,但前提是你的项目里面没有arm64-v8a的文件夹,如果你有两个文件夹armeabi和arm64-v8a,两个文件夹,armeabi里面有a.so 和 b.so,arm64-v8a里面只有a.so,那么arm64-v8a的手机在用到b的时候发现有arm64-v8a的文件夹,发现里面没有b.so,就报错了,所以这个时候删掉arm64-v8a文件夹,这个时候手机发现没有适配arm64-v8a,就会直接去找armeabi的so库,所以要么你别加arm64-v8a,要么armeabi里面有的so库,arm64-v8a里面也必须有

  1. jpush官方文档包含各个平台的cpu.
ndk {
        /*选择要添加的对应 cpu 类型的 .so 库。
        abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'
    }
  1. Flutter 官方文档已经给出了具体的说明:

What are the supported target architectures?

When building your application in release mode, Flutter apps can be compiled for armeabi-v7a and arm64-v8a.
Flutter does not currently support building for x86 Android (See Issue 9253)

翻译之后的说明就是:
在发布模式下构建应用程序时,可以为armeabi-v7a(32位)和arm64-v8a(64位)编译Flutter应用程序。Flutter目前不支持构建x86 Android(参见问题9253

所以在集成jpush推送的时候,这样配置就可以解决问题,至于 'mips', 'mips64',根据自己的需求来添加。

ndk {
            //选择要添加的对应 cpu 类型的 .so 库。
            abiFilters 'armeabi', 'armeabi-v7a','arm64-v8a'
     }

开发过程中又遇到新的问题。
flutter版本更新到1.7之后,集成jpush,Android端,设置别名出错,主要原因是官方插件没有及时更新原因,最新的flutter sdk要求必须在UIThread设置。所以崩溃。目前官方暂未处理,解决方案可以参考第三方插件参与者的解决方案。

# 极光推送
  jpush_flutter:
    git:
      url: https://github.com/CaiJingLong/jpush-flutter-plugin.git
      ref: 4d847f9b2150dc4fd1f8a7620d414d60f464fab7
上一篇下一篇

猜你喜欢

热点阅读