記錄遇到的問題,在網上找了很多資料,都是太泛泛了,使用后,還不能生效,缺少詳細的說明,或者關鍵代碼缺失,我遇到的問題用紅色的標注了
導入aar包有兩種模式
1.比較繁瑣的,手動將aar包放在libs下面,so包放在jniLibs下面
在build.gradle中,以及導入aar包
其中第三行的獲取方式
2.導入flutter打包好的maven庫,這個非常檢查,不需要自己導入aar和so
我這個放在本地
在app的build.gradle兩個方法都加上
defaultConfig {
? ? ......
? ? ndk {
? ? ? ? abiFilters "arm64-v7a"
? ? }
}
?
到這里包就導入成功了
下面是代碼部分
首先在清單文件下配置
第一個是原生的,第二個是我自定義的
下面說說幾種打開flutteractivity頁面,我在這上面遇到很多坑
1.默認啟動的,利用路徑直接打開FlutterActivity,沒有緩存的Engine
2.帶有緩存的Engine在application中設置,其中engine_id自定義唯一值,記得要銷毀engine
其實到這里都沒什么問題,下面遇到坑了,就是和flutter 的插件交互,我用的?pigeon
首先說遇到問題
1自定義的FlutterAppActivity,用上面的方式,不走生命周期,導致無法在定義的頁面設置插件
解決:
1.最重要一點要重寫FlutterActivity的getInitialRoute方法,這個相當于上面跳轉的路由,不設置,頁面空白
跳轉時,我將路勁存在了INIT_PARAMS中
2.打開方式要修改,上面不適用,可以用原生的Intent跳轉到FlutterAppActivity
initParams是跳轉路勁
3.自定義的如何使用緩存的engine
上面有圖,在application中設置存儲
在自定義頁面中
到這里打打開頁面是完成了,下面時交互
首先Flutter開發給了我一份用pigeon生成的java文件
類似
我們要自定類去實現他
這時候自定的FlutterAppActivity作用體現出來了
我們在自定義的FlutterAppActivity中
setUp使方法生效
當時沒有自定義的時候,我將代碼寫在application中,導致,頁面還沒打開,flutter就能調用Android方法,等于提前了
Android調用flutter的方法
目前還遇到一個問題,異步的ApiHost我無法調用,解決后會在這里記錄原因和解決方法,有知道的可以告訴我一下
在網上看,異步和同步寫法一樣,只是最后回調時要在主線程,可是我現在連方法都進不去,苦惱