現(xiàn)在已經(jīng)有很多 Flutter 混合開發(fā)的資料了,取其精華,實(shí)際操作之后還是會有很多問題,下面記錄一下自己在現(xiàn)有項(xiàng)目中集成 Flutter 時遇到的一些問題:
1、Invoke-customs are only supported starting with Android O (--min-api 26)
說是最低支持SKD Android O (api 26),不能因?yàn)榧梢粋€ Flutter ,老版本都不支持了吧。也是不能夠!只要在 app - build.gralde 的 android { } 下 加上
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
即可,其實(shí)官方文檔已經(jīng)有明確說明!~
2、dalvik.system.PathClassLoader....couldn't find "libflutter.so
運(yùn)行項(xiàng)目,直接崩潰。主要是 沒有找到 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
項(xiàng)目有多渠道的話,一般在打包的時候會遇到上面的問題。解決辦法是在 Flutter - build.gralde 下也同樣加上多渠道配置

如:
flavorDimensions "default"
productFlavors {
aaa { }
bbb { }
}
4、多渠道—— More than one file was found with OS independent path 'lib/armeabi-v7a/libflutter.so'
多渠道打包可能還會遇到的一個問題就是 重復(fù)導(dǎo)入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.** { *; }
總結(jié)
以上問題都是以官方推薦的方式出現(xiàn)的問題,為了不讓團(tuán)隊每個人都安裝 Flutter 環(huán)境,可以采用 引用 aar 的方式進(jìn)行集成。以上的錯誤問題同樣適用于 引用 aar 的方式。