簡介
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等模式,但它又有其不一樣。在 android中引用 aar 包debug模式:對應了dart的jit模式,又稱檢查模式或者慢速模式。支援裝置,模擬器(ios/android),此模式下開啟了斷言,包括所有的除錯資訊,服務擴充套件和observatory等除錯輔助。此模式為快速開發和執行做了優化,但並未對執行速度,包大小和部署做優化。debug模式下,編譯使用jit技術,支援廣受歡迎的亞秒級有狀態的hot reload。
release模式:對應了dart的aot模式,此模式目標即為部署到終端使用者。只支援真機,不包括模擬器。關閉了所有斷言,盡可能多地去掉了除錯資訊,關閉了所有除錯工具。為快速啟動,快速執行,包大小做了優化。禁止了所有除錯輔助手段,服務擴充套件。
profile模式:類似release模式,只是多了對於profile模式的服務擴充套件的支援,支援跟蹤,以及最小化使用跟蹤資訊需要的依賴,例如,observatory可以連線上程序。profile並不支援模擬器的原因在於,模擬器上的診斷並不代表真實的效能。
//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乙個專案然後將專...