真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

嵌入flutter,嵌入式軟件培訓機構

iOS flutter module打包發(fā)布報x86_64問題

通過module的形式將flutter嵌入已有的ios項目中后,打包發(fā)布時可能會遇到報 Flutter.framework包含了x86_64框架問題,出現(xiàn)這個問題基本是因為粗心。

成都創(chuàng)新互聯(lián)公司為客戶提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站設計、程序、域名、空間一條龍服務,提供基于WEB的系統(tǒng)開發(fā). 服務項目涵蓋了網(wǎng)頁設計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都手機網(wǎng)站制作等網(wǎng)站方面業(yè)務。

怎么構建flutter module項目這里不提了,官方和網(wǎng)上博客都有。為了在已有的ios項目中嵌入flutter項目需要在ios項目中新建 Run Script Phase然后添加腳本:

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed

官方文檔中明確寫道?drag the new build phase to just after the Target Dependencies phase

網(wǎng)上其他相關博客基本也會有寫這一點,意思是把新建的那個Run Script Phase拖到Target Dependencies phase下面,只有確保這個就不會有x86_64的問題。

當時遇到這個問題還研究了老半天,根據(jù)別人的博客還加了移除Flutter.framework中x86_64框架的腳本,然后我加了這個腳本也是沒有效果,沒有效果的原因也是這個順序的問題,同樣的拖到Target Dependencies phase下面也是會生效的(順序對的話就不需要額外添加移除x86_64的腳本)。

當時構建項目的時候看到說要拖到Target Dependencies phase下面,我理解的是新建的要在Target Dependencies phase下面而不能在它上面,然后新建一個Run Script Phase默認就是在最下面所有也就沒管了,但是其實這個順序是有講究的,分先后執(zhí)行,其他腳本都執(zhí)行完了,項目都已經打包好了,你最后再去執(zhí)行腳本處理Flutter.framework當然是沒有效果的

所以還是要有一個嚴謹?shù)膽B(tài)度,不要太隨意

Flutter(六)Android與Flutter混合開發(fā)(Hybird)

如果我們目前的項目是Android的,但是接下來我們希望部分頁面可以使用Flutter進行開發(fā),甚至我們希望在Native頁面中嵌入FlutterUI組件,那么我們該如何實現(xiàn)呢?

假設你現(xiàn)在Android項目的目錄的結構是這樣的

這時候如果你想創(chuàng)建一個Flutter模塊,使得Android模塊和Flutter模塊之間可以進行交互,我們可以通過Android Studio新建一個Flutter Module,具體過程是:File — New — New Module ,之后選擇Flutter Module,指定Project Location的路徑為

也就是說,最終你的項目結構會是這樣的

接下來在Android Module的 build.gradle 文件中添加flutter依賴

先創(chuàng)建一個Flutter頁面

這里比較重要的是 window.defaultRouteName 這個字段,這個字段可以接收從Native傳遞過來的參數(shù) (下文我們會介紹原生傳遞參數(shù)的方法),也就是說通過這個字段我們就可以進行Flutter頁面的路由的分發(fā)

我們可以直接在Android的 MainActivity 中啟動一個 FlutterActivity ,這里的 initialRoute 方法中傳遞的參數(shù)就對應Flutter層的 window.defaultRouteName

注意:需要在 AndroidManifest.xml 注冊 FlutterActivity

自己創(chuàng)建一個 FlutterAppActivity 繼承自 FlutterActivity

在 MainActivity 中啟動 FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊 FlutterAppActivity )

兩種啟動方式的區(qū)別

如果單純只是想打開一個Flutter頁面,兩種方式實際上基本沒有太大區(qū)別,第一種方式也許還會更簡單一點。但是,在Flutter開發(fā)中,我們往往還需要開發(fā)一些Native插件供Flutter調用,如果使用復寫 FlutterActivity 的方式更有利于我們在 FlutterActivity 中注冊我們的Native插件,所以實際開發(fā)中一般推薦使用第二種方式

擴展思考

initialRoute 從名稱上看起來是Flutter提供給我們進行Native與Flutter交互的路由跳轉的,但是實際上他就是一個字符串,我們不僅僅可以傳遞一個路由名稱,有時候我們也可以通過這個參數(shù)傳遞一串JSON數(shù)據(jù),然后在Flutter端進行解析,這樣我們就可以通過這個參數(shù)做更多的事情

activity_main.xml

FrameLayout 用于承載Flutter組件

MainActivity.java

使用 FragmentManager 將 FlutterFragment 添加到 FrameLayout 容器中

運行結果

上半部分是原生的TextView,下半部分是Flutter的Text組件

本節(jié)主要介紹了Native和Flutter之間的頁面跳轉,以及同一個頁面中Native與Flutter組件的組合。接下來會介紹如何編寫Android插件與Flutter進行數(shù)據(jù)交互

Flutter嵌入原生OC頁面

1、創(chuàng)建MyFlutterView繼承NSObject并遵守FlutterPlatformView協(xié)議

2、實現(xiàn)自定義初始化方法,并實現(xiàn)?FlutterPlatformView協(xié)議方法

Flutter開發(fā)——Linux嵌入式應用開發(fā)

上文中 介紹了Linux平臺下Flutter環(huán)境搭建和桌面應用開發(fā),現(xiàn)在需要更深入了解如何將該應用運行在Linux系統(tǒng)的嵌入式設備上。

安裝及示例

在 ~/.bashrc 中配置 export PATH=$PATH:/opt/flutter-elinux/bin

打開weston虛擬機,此時發(fā)現(xiàn) flutter-elinux devices 連接設備變成兩個,如下圖

即可編譯及運行基于wayland顯示后端的demo

避坑

ios原生嵌套Flutter模塊

通過以下命令解決

執(zhí)行完畢后,F(xiàn)lutter module將會創(chuàng)建在ios項目/my_flutter目錄下

將Flutter模塊嵌入到現(xiàn)有iOS應用程序中有兩種方式:

此方法需要所有的相關開發(fā)的人員安裝 Flutter 環(huán)境。

需要在my_flutter文件夾下執(zhí)行一下

把.ios和.android等flutter配置生成出來。

AppDelegate.h:

AppDelegate.m:

控制器:

flutter:

注冊路由

通過全局FlutterEngine實例化FlutterViewController,并setInitialRoute設置初始化路由,這里發(fā)現(xiàn)設置的初始化路由路由并不管用

控制器:

設置FlutterViewController的pushRoute

這里其實只是讓flutter方面push一次

新建一個FlutterViewController并把setInitialRoute設置為跳轉的路由,不通過全局的FlutterEngine創(chuàng)建

放一個之前自己學習時寫的demo,希望可以幫助新入門的老鐵們,有好的建議可以提一下,我們一起進步,奧利給?。。?/p>

Flutter簡介

為什么我們要選擇flutter語言呢?它有哪些優(yōu)點呢?

*1.flutter將會幫你更容易,更快速的開發(fā)出界面美觀的移動應用。

*2.是谷歌的親兒子

*3.支持熱重載 :android原生開發(fā)會遇到編譯-打包-安裝三個步驟。開發(fā)效率遲遲得不到提升。熱重載技術在flutter內完美體現(xiàn)。

*4.支持垮平臺:flutter基于圖像回執(zhí)引擎進行渲染,在不同平臺下繪制效果絕對是一致的,能做到真正的跨平臺,一處寫,處處運行。

*5.性能優(yōu)異性:不同于H5通過DOM渲染和RN映射組件,flutter直接基于native進行繪制。性能上完全超過原生。

*1.Dart語法編譯:Dart是一種強類型、跨平臺的客戶端開發(fā)語言。具有專門為客戶端優(yōu)化、高生產力、快速高效、可移植易學的風格。Dart主要由谷歌負責開發(fā)和維護。

*2.Flutter插件:Flutter使用的Dart語言無法直接調用iOS系統(tǒng)提供的OC或swift接口,這時就需要使用插件來實現(xiàn)中轉。Flutter官方提供了豐富的原生接口封裝

Flutter分為三大部分

*1.由Dart語言負責的Framwork層。

*2.Dart語法執(zhí)行器。

*3.Skia圖像處理引擎。05年就被研發(fā)成功了(谷歌的全家桶都是由谷歌的Skia圖像處理引擎繪制的,iOS目前的圖像處理引擎是JPEG,其中Skia是對JPEG的二次封裝。)

*1.2005年Skia圖像處理引擎成立,用來展示Chrome,火狐和其他谷歌自己的產品使用。

*2.2007年第一個安卓系統(tǒng)問世,于是谷歌開發(fā)者將Skia移植到安卓平臺。

*3.Skia作為一個2D的圖像系統(tǒng),包含繪制,渲染,顯示圖片都是Skia完成。安卓中的3D部分是由OpenGLES來實現(xiàn)的,其中OpenGL ES是OpenGL的嵌入式版本。


分享標題:嵌入flutter,嵌入式軟件培訓機構
URL地址:http://weahome.cn/article/hogegh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部