内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

flutter混合,flutter混合開(kāi)發(fā)打包ipa

ios flutter 混編

最近在集成flutter進(jìn)項(xiàng)目

金臺(tái)網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

以收集編譯產(chǎn)物并以cocopods方式集成

產(chǎn)物大概放入兩個(gè)pod庫(kù)

這個(gè)暫且叫pod1,pod1放flutter.framework,第三方plugin.a,自己寫的基礎(chǔ)plugin,比如networking,hud等等(由于是混編,不可避免存在很多原生基礎(chǔ)組件,所以能公用的基礎(chǔ)組件都會(huì)弄一個(gè)flutter-plugin橋接)

第二個(gè)pod2放編譯之后的app.framwork,注冊(cè)文件GeneratedPluginRegistrant,以及各個(gè)業(yè)務(wù)模塊.a(有可能沒(méi)有)結(jié)構(gòu)大概如下面

podspec大概如下

主工程引入這兩個(gè)pod庫(kù)即可

接下來(lái)從零開(kāi)始搭建上文所說(shuō)的

先創(chuàng)建一個(gè)flutter module

這個(gè)是主flutter工程,用來(lái)集成businessModule以及生成app.framework

結(jié)構(gòu)如下圖

再生成一個(gè)業(yè)務(wù)工程

注意此時(shí)還需要進(jìn)入example生成ios和Android工程,不然無(wú)法單獨(dú)編譯運(yùn)行

這樣 這個(gè)單獨(dú)的業(yè)務(wù)模塊就可以單獨(dú)跑起來(lái)了

此時(shí)主flutter工程和業(yè)務(wù)工程均搭建完畢

在主工程pubspec.ymal文件講兩個(gè)工程關(guān)聯(lián)

好了 接下來(lái)就是編寫腳本收集產(chǎn)物了

編譯完成之后會(huì)在flutter主工程product生成如下文件

將上面文件分類收集做成文章開(kāi)頭的pod1,pod2 ,在native工程引入即可

在集成flutter的過(guò)程中 踩不少坑 也閱讀很多前輩的文章,在此一并感謝

做混合的話Uniapp和Flutter我應(yīng)該學(xué)哪個(gè)???

Uniapp目前比較成熟,而且用的是Vue語(yǔ)法,學(xué)習(xí)成本比較低,而且行業(yè)里面用的也比較廣泛,而Flutter的話,學(xué)習(xí)成本略高,因?yàn)橐獙W(xué)習(xí)新的語(yǔ)言,還有就是目前生態(tài)不是特別完備,等他再發(fā)展發(fā)展吧。黑馬程序員官網(wǎng)有成套免費(fèi)視頻哦,有什么不懂的可以直接過(guò)去學(xué)習(xí)。您的采納是對(duì)我成長(zhǎng)的鞭策

Flutter混合開(kāi)發(fā)實(shí)戰(zhàn)

之前開(kāi)發(fā)了一個(gè)純Flutter的項(xiàng)目,結(jié)果接到個(gè)新的需求需要使用Flutter單獨(dú)開(kāi)一個(gè)模塊集成到原有的android項(xiàng)目中

下面分享一下如何集成現(xiàn)有的項(xiàng)目和如何繼承以及碰到的問(wèn)題

1.首先第一步 修改gradle

因?yàn)?Flutter 當(dāng)前僅支持為 x86_64,armeabi-v7a 和 arm64-v8a 構(gòu)建預(yù)編(AOT)的庫(kù) 所以我們需要修改gradle的文件限制 APK 中支持的架構(gòu),從而避免 libflutter.so找不到引起的崩潰

2.新建一個(gè)FlutterModel的工程

2.使用aar文件 因?yàn)樗泄こ探y(tǒng)一使用jenkins打包所以我們放在本地肯定是不合適的

說(shuō)以我們需要 打包aar并上傳服務(wù)器

上傳完成后在android中引用

在開(kāi)發(fā)中遇到的問(wèn)題

1.關(guān)于android和Ios中的跳轉(zhuǎn)傳參問(wèn)題

這個(gè)問(wèn)題在android端還是比較方便的 但是的在Ios端并不怎么好實(shí)現(xiàn)

最終決定使用flutter_boost來(lái)完成android和Ios與Flutter的通信操作

flutter_boost github地址:

集成文檔:

集成文檔給出了 但是沒(méi)有android的 尷尬

下滿分享下android的集成

(1)在flutter的 pubspec.yaml工程中添加

(2)修改android工程

使用本地工程的時(shí)候需要在工程共添加

使用aar的時(shí)候不需要添加

(3)在android工程中添加對(duì)應(yīng)的條狀路由配置

(4)在使用默認(rèn)的flutter_boost啟動(dòng)界面的時(shí)候可能碰到狀態(tài)欄丟失的情況

所以最好集成BoostFlutterActivity寫一個(gè)新的activity方便處理狀態(tài)欄和activity進(jìn)出動(dòng)畫

(5)跳轉(zhuǎn)并傳參

//params 傳多個(gè)參數(shù)可以使用json的形式

2.在flutter中的網(wǎng)絡(luò)框架使用的dio結(jié)果在ios的彈出loading的時(shí)候出現(xiàn)卡頓現(xiàn)象

解決方式:1.服務(wù)換證書(shū) (但是后臺(tái)太忙暫時(shí)沒(méi)有支持的人員)

2.ios使用原生的loading解決

3.在使用dio的時(shí)候出現(xiàn)ios部分手機(jī) 網(wǎng)絡(luò)請(qǐng)求緩慢問(wèn)題

解決方法:請(qǐng)求的時(shí)候使用http 2.0協(xié)議

插件地址:

「編程工具」Flutter-Native 混合解決方案 FlutterBoost

FlutterBoost 是一個(gè)Flutter 插件,它可以輕松地為現(xiàn)有原生應(yīng)用程序提供 Flutter 混合集成方案。FlutterBoost 的理念是將 Flutter 像 Webview 那樣來(lái)使用。在現(xiàn)有應(yīng)用程序中同時(shí)管理 Native 頁(yè)面和 Flutter 頁(yè)面并非易事。 FlutterBoost 幫你處理頁(yè)面的映射和跳轉(zhuǎn),你只需關(guān)心頁(yè)面的名字和參數(shù)即可(通??梢允?URL)。

概念

所有頁(yè)面路由請(qǐng)求都將發(fā)送到 Native 路由器。Native 路由器與 Native Container Manager 通信,Native Container Manager 負(fù)責(zé)構(gòu)建和銷毀 Native Containers。

使用 Flutter Boost Native Container 用 Native 代碼打開(kāi) Flutter 頁(yè)面

Android

或者用 Fragment

使用 Flutter Boost 在 dart 代碼打開(kāi)頁(yè)面

Dart

使用 Flutter Boost 在 dart 代碼關(guān)閉頁(yè)面

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

如果我們目前的項(xiàng)目是Android的,但是接下來(lái)我們希望部分頁(yè)面可以使用Flutter進(jìn)行開(kāi)發(fā),甚至我們希望在Native頁(yè)面中嵌入FlutterUI組件,那么我們?cè)撊绾螌?shí)現(xiàn)呢?

假設(shè)你現(xiàn)在Android項(xiàng)目的目錄的結(jié)構(gòu)是這樣的

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

也就是說(shuō),最終你的項(xiàng)目結(jié)構(gòu)會(huì)是這樣的

接下來(lái)在Android Module的 build.gradle 文件中添加flutter依賴

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

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

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

注意:需要在 AndroidManifest.xml 注冊(cè) FlutterActivity

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

在 MainActivity 中啟動(dòng) FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊(cè) FlutterAppActivity )

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

如果單純只是想打開(kāi)一個(gè)Flutter頁(yè)面,兩種方式實(shí)際上基本沒(méi)有太大區(qū)別,第一種方式也許還會(huì)更簡(jiǎn)單一點(diǎn)。但是,在Flutter開(kāi)發(fā)中,我們往往還需要開(kāi)發(fā)一些Native插件供Flutter調(diào)用,如果使用復(fù)寫 FlutterActivity 的方式更有利于我們?cè)?FlutterActivity 中注冊(cè)我們的Native插件,所以實(shí)際開(kāi)發(fā)中一般推薦使用第二種方式

擴(kuò)展思考

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

activity_main.xml

FrameLayout 用于承載Flutter組件

MainActivity.java

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

運(yùn)行結(jié)果

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

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

新聞名稱:flutter混合,flutter混合開(kāi)發(fā)打包ipa
鏈接分享:http://m.rwnh.cn/article14/dsdhpge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)公司自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
龙山县| 大兴区| 龙岩市| 会同县| 临朐县| 义乌市| 西乌| 阳曲县| 新乐市| 海兴县| 策勒县| 龙陵县| 明水县| 庄河市| 磐石市| 嵊泗县| 浦东新区| 绥芬河市| 蒙阴县| 昭觉县| 兴化市| 胶南市| 滦平县| 朝阳区| 清水河县| 阜新| 稷山县| 永嘉县| 凌云县| 乐至县| 陕西省| 云霄县| 延川县| 朔州市| 孟村| SHOW| 沽源县| 同心县| 新泰市| 湖南省| 仁化县|