天天看點

原生工程內建Flutter背景

目錄

  • 背景
    • 建立Flutter Module
    • 依賴引入
    • 進行flutter 調用
    • 進行Flutter 代碼開發調試
    • 遇到的問題
    • 參考連結

背景

随着Flutter的不斷完善,逐漸有更多的功能可以考慮使用Flutter 來實作,開發的過程就會發現,我們肯定不能抛棄原有的APP的所有功能進行重寫,一般都是針對一些新的業務場景使用Flutter 來實作,這就不可避免的會遇到如果使用Flutter與Android 和iOS進行混合開發的問題。本文會介紹一下Android端開發Flutter的整個流程。

建立Flutter Module

混合開發的模式,我們首先需要建立一個Flutter Module,Flutter Module的建立有兩種方式:

  1. AS直接建立
File–>New Module,選擇FlutterModule,Module的存放位置可以根據你自己的需求進行存放。這裡在app 同一層級,建立了一個叫android_module的來存放。
原生工程內建Flutter背景

依賴引入

  1. 修改setting.gradle 檔案,進行依賴引入
setBinding(new Binding([gradle: this]))
evaluate(new File(
       settingsDir,
       '/android_module/flutter_module/.android/include_flutter.groovy'
))
rootProject.name='FlutterMix'

include ':flutter_module'
project(':flutter_module').projectDir = new File('/android_module/flutter_module') 
           
其中,setBinding與evaluate表示允許Flutter子產品包括它自己在内的任何Flutter插件,在settings.gradle中以類似 :flutter、package_info的方式存在。sync 之後,會在如下路徑,會有一個Flutter 檔案夾生成。
原生工程內建Flutter背景
  1. 修改build.gradle進行依賴
在dependencies下面增加如下配置:

implementation project(path: ':flutter')

這裡介紹一下,之是以要叫flutter,是因為跟上面第二步生成的Flutter 檔案夾保持一緻。另外,在android 标簽增加使用java8來進行編譯

compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

進行flutter 調用

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FlutterView flutterView = Flutter.createView(this, getLifecycle(), "initialRoute");
        setContentView(flutterView);
    }
}
           
原生工程內建Flutter背景

進行Flutter 代碼開發調試

使用AS打開module 工程。退出引用程式,然後點選Flutter attach,打開你的應用程式,等待連接配接上即可。就能夠像正常開發一樣調試flutter代碼了。
原生工程內建Flutter背景

遇到的問題

如果你也是通過AS新建立的Demo工作來實踐,可以會遇到相關依賴包找不到的問題,這個是因為你之前已經選擇過工程支援androidx,新建立的預設都使用androidx的方式來進行相關的support支援。但是建立的Flutter 工程,還是使用的是普通的導入,删除其相關的導入,換成androidx的即可。

原生工程內建Flutter背景

參考連結

1、https://developer.android.com/jetpack/androidx/releases/lifecycle

2、https://flutter.dev/docs/development/add-to-app/android/project-setup

繼續閱讀