Android原生整合Flutter的淺嚐

2021-09-24 06:37:35 字數 2351 閱讀 6788

簡介

flutter更新速度還是很快的為了避免帶來的一些沒必要的問題,這邊文章是基於的版本為

感謝flutter的先行者們對flutter的專案的促進,以便讓我們這些後來者能少跳一些坑。這篇文章之前已經有許多談論這方面的文章了。最具代表性的就是

flutter 原碼整合

aar產物整合

flutter專案是通過flutter create -t module my_flutter生成的module工程,此工程可以為我們生成乙個 arr 檔案,避免自己手動建立module工程帶來的不必要的坑(如果你想,也是可以,參照 flutter.gradle將相應的原始碼和外掛程式打包就行,畢竟閒魚技術組的文章就是這麼幹的)

看一下目錄:

flutter 中的 build.gradle將會在我們 執行./gradlew assemblerelease為我們生成乙個aar檔案

這裡建議打release包。

flutter 模式

對於flutter,它支援常見的debug,release,profile等模式,但它又有其不一樣。

debug模式:對應了dart的jit模式,又稱檢查模式或者慢速模式。支援裝置,模擬器(ios/android),此模式下開啟了斷言,包括所有的除錯資訊,服務擴充套件和observatory等除錯輔助。此模式為快速開發和執行做了優化,但並未對執行速度,包大小和部署做優化。debug模式下,編譯使用jit技術,支援廣受歡迎的亞秒級有狀態的hot reload。

release模式:對應了dart的aot模式,此模式目標即為部署到終端使用者。只支援真機,不包括模擬器。關閉了所有斷言,盡可能多地去掉了除錯資訊,關閉了所有除錯工具。為快速啟動,快速執行,包大小做了優化。禁止了所有除錯輔助手段,服務擴充套件。

profile模式:類似release模式,只是多了對於profile模式的服務擴充套件的支援,支援跟蹤,以及最小化使用跟蹤資訊需要的依賴,例如,observatory可以連線上程序。profile並不支援模擬器的原因在於,模擬器上的診斷並不代表真實的效能。

在 android中引用 aar 包

//name:與我們aar檔名一樣

// ext: 此檔案格式

dependencies

複製**

aar包放到 libs資料夾內

執行sync project with gadle files

此目錄中將看到引用的包

aar遠端依賴

這裡我將 庫放到 github 上,提供原生開發遠端依賴,好處是讓android開發人員只關注自己的業務開發,flutter層相關更新對他們來說是無感變化的。

在flutter專案中開啟 .android/flutter/build.gradle

dependencies 

//新增以下**

ext

uploadarchives ")

pom.project }}

}複製**

.android/ 目錄下執行

./gradlew uploadarchives

複製**

提交"d:\\f\\github\\test"該目錄下的內容到github上

android 專案 project:build.gradle

allprojects

...}

}複製**

dependencies 

複製**

sync project with gadle files同步完後應該就能看到 external libraries中相應的包

梳理snapshot版本 gradle 預設快取 24h,如果想每次 build 前檢查版本 在build.gradle中加入

configurations.all 

複製**

由於自己對原生以及gradle不是很熟悉,在做整合的時候可能有些方式欠妥

遠端依賴aar包的時候,在flutter專案中更改了build.gradle,這也是有弊端的

官方明確告訴我們不要修改這個檔案。。。

至少每次更新flutter時,這個檔案會被官方重置

so... 如果有更好的方式,還望告知。。。

參考深入理解 flutter 的編譯原理與優化

閒魚flutter混合工程持續整合的最佳實踐

Android 原生工程整合Flutter混合開發

在android工程根目錄的上一級目錄建立flutter工程,保證flutter工程與android工程在同一級。c android flutterinandroid androiddemo cd c android flutterinandroid flutter create t module ...

Unity Vuforia 整合原生xcode專案

1.匯入檔案 2.配置build phases 1 新增run script 2 新增copy files 3 新增framework 3.配置build setting 2 linking下 lc inherited weak framework,coremotion,weak lsystem,o...

ReactNative整合到原生專案

reactnative整合到原生專案 1 在工程裡建立乙個reactcomponent資料夾,用來存放reactnative相關的檔案 2 reactcomponent資料夾裡,存放以下檔案 3 其中package.json檔案是關於reactnative的配置資訊,最好自己init乙個專案然後將專...