Android Flutter 混合開發(fā) 集成問題記錄

現(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 下也同樣加上多渠道配置

image.png

如:

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 的方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容