美文网首页工作生活
Android Flutter 混合开发 集成问题记录

Android Flutter 混合开发 集成问题记录

作者: FelixLiuu | 来源:发表于2019-07-03 10:14 被阅读0次

现在已经有很多 Flutter 混合开发的资料了,取其精华,实际操作之后还是会有很多问题,下面记录一下自己在现有项目中集成 Flutter 时遇到的一些问题:

1、Invoke-customs are only supported starting with Android O (--min-api 26)

说是最低支持SKD Android O (api 26),不能因为集成一个 Flutter ,老版本都不支持了吧。也是不能够!只要在 app - build.gralde 的 android { } 下 加上

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

即可,其实官方文档已经有明确说明!~

2、dalvik.system.PathClassLoader....couldn't find "libflutter.so

运行项目,直接崩溃。主要是 没有找到 armeabi-v7a 下的 libflutter.so。还是在 app - build.gralde 的 defaultConfig { }buildTypes { release { } debug { } } 下添加

ndk {
          abiFilters 'armeabi-v7a'
   }

3、多渠道——VM snapshot must be valid.Check failed: vm. Must be able to initialize the VM

项目有多渠道的话,一般在打包的时候会遇到上面的问题。解决办法是在 Flutter - build.gralde 下也同样加上多渠道配置

image.png

如:

flavorDimensions "default"
productFlavors { 
    aaa { }
    bbb { }
}

4、多渠道—— More than one file was found with OS independent path 'lib/armeabi-v7a/libflutter.so'

多渠道打包可能还会遇到的一个问题就是 重复导入libflutter.so ,解决办法是在 app - build.gralde 的 android { } 下 加上

packagingOptions{
    pickFirst 'lib/armeabi-v7a/libflutter.so'
}

5、Release 包报错

配置都一样,有可能是 Debug 包没问题,Release 包却是报错,首先想到的可能是混淆问题,所以要在 proguard-rules.pro 中加上

-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }

总结

以上问题都是以官方推荐的方式出现的问题,为了不让团队每个人都安装 Flutter 环境,可以采用 引用 aar 的方式进行集成。以上的错误问题同样适用于 引用 aar 的方式。

相关文章

网友评论

    本文标题:Android Flutter 混合开发 集成问题记录

    本文链接:https://www.haomeiwen.com/subject/qrvthctx.html