欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter工程集成,Flutter開發(fā)

Xcode 項目集成flutter

一、cocopods版本升到1.10.0以上

創(chuàng)新互聯(lián)服務(wù)項目包括四方臺網(wǎng)站建設(shè)、四方臺網(wǎng)站制作、四方臺網(wǎng)頁制作以及四方臺網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,四方臺網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到四方臺省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

二、podfile添加這些(flutter_module路徑和.git路徑相同)

三、命令行cd到?flutter_module 下,執(zhí)行?flutter pub get?

四、pod下面添加“ ?install_framework "${PODS_ROOT}/../../flutter_module/.ios/Flutter/App.framework" ?”?

Flutter工程化之iOS混編集成

在flutter官網(wǎng)上推薦了iOS項目中兩種混編方式:

筆者在采用兩種集成方式的過程中,因為iOS項目結(jié)構(gòu)設(shè)計導(dǎo)致這兩種簡單的集成方式都有些麻煩,所以在實踐中更改和優(yōu)化了集成方式,使之在筆者的項目中能夠更加簡單和快速的集成。

問題:在不更改flutter tool中相關(guān)腳本的前提下,添加的Script Phase中的腳本相對路徑錯誤,如果只是開發(fā),手動更改下路徑就可以了,但是在考慮到CI中不能每次在pod install之后都去更改,所以在開發(fā)調(diào)試中采用該集成方式,結(jié)合flutter attach的方式去調(diào)試。

通過編譯相關(guān)的 xcframework + Cocoapods私有庫的集成方式在CI中集成,這樣QA的CI不需要配置flutter的相關(guān)依賴

根據(jù)flutter編譯工具的提示: 上面的編譯命令是打包flutter工程項目和插件的產(chǎn)物,在實際開發(fā)過程中可以發(fā)現(xiàn)是否引入了依賴Native的插件會導(dǎo)致貶義編譯產(chǎn)物的不同。

根據(jù)上面的對比:

第一部分:基礎(chǔ)的 Flutter Engine + Flutter App 編譯后的產(chǎn)物 Flutter.xcframwork -- Flutter引擎的包 App.xcframework -- 工程項目對應(yīng)的AOT的編譯產(chǎn)物 第二部分:三方插件的注冊中心 FlutterPluginRegistrant.xcframework -- 第三方插件的注冊中心,其實是Native + iOS通信的集合 第三部分:依賴iOS Native的原生 FMDB . xcframwork path_provider_ios.xcframework sqflite.xcframework -- cached_network_image依賴的原生實現(xiàn)

根據(jù)上面的編譯產(chǎn)物可以知道Flutter和App是編譯后必有的包,后面的兩個部分完全是服務(wù)于三方插件的,到這可以解答第二個問題:筆者App的混編過程中混編插件失效是因為筆者在NativeApp中重寫了Flutter的容器,使用了FlutterEngineGroup動態(tài)創(chuàng)建多引擎去對應(yīng)進(jìn)入不同的功能模塊,混合插件是因為重寫過程中沒有通過GeneratedPluginRegistrant注冊插件,所以需要在Native的Flutter容器中注冊插件,使之生效。

在這為什么使用commit的hash作為flutter-libs的依賴,因為pod install的時候會有緩存,除了版本好,commit hash也能保證每次CI編譯通過 pod install 來更新flutter-libs依賴產(chǎn)物

完成!!!

已有iOS項目集成Flutter遇到的一些坑

1.XCode10.3,CocoaPods1.7.5, Flutter 1.8.4-pre.65(一定是master channel,不能是stable), 根據(jù)標(biāo)題中的環(huán)境對應(yīng)的版本自行升級,如版本高太多的話不敢保證一定會成功。

2.參照官方文檔的iOS部分很快就構(gòu)建好了,于是Commod+B構(gòu)建,可是馬上會遇到第一個坑,如下圖:

ld: warning: directory not found for option '-L/Users/wang/Library/Developer/Xcode/DerivedData/test_flutter-dbqsilcpjusqpadpdwvgsoqctumw/Build/Products/Debug-iphonesimulator/FlutterPluginRegistrant'

ld: library not found for -lFlutterPluginRegistrant

clang: error: linker command failed with exit code 1 (use -v to see invocation)

我暈這是什么鬼啊,嘗試了各種方式都無效:

懷疑是沒有找到靜態(tài)庫 lib(FlutterPluginRegistrant.a),工程目錄和flutter_module目錄以及flutterSDK的安裝目錄都搜遍了,也沒有發(fā)現(xiàn)這個文件。。。。。。

于是懷疑是新版本的Flutter將FlutterPluginRegistrant.a移除了,根本就不存在這個文件,接下來在宿主iOS工程下的Pods目錄中的『Pods-test_flutter.debug.xcconfig』文件中搜索" FlutterPluginRegistrant ",果然發(fā)現(xiàn)了一些線索

接下來將 帶有 『 FlutterPluginRegistrant 』內(nèi)容的部分全部刪除( Pods-test_flutter.debug.xcconfig也如法炮制 ),修改后的配置如下:

接下來Command+B再次構(gòu)建,奇跡發(fā)生了,剛才的錯誤消失了,繼續(xù)往下走,

參照官方文檔將 Appdelegate.m文件改為如下內(nèi)容

Command+B走起,然而第二個坑來了,

Undefined symbols for architecture x86_64:

"_OBJC_CLASS_$_GeneratedPluginRegistrant", referenced from:

? objc-class-ref in AppDelegate.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

徹底暈倒,這又是什么鬼。。。自習(xí)一看才發(fā)試一個經(jīng)典錯誤,原來是編譯期的符號表$_GeneratedPluginRegistrant在鏈接期間找不到,由于GeneratedPluginRegistrant是在FlutterPluginRegistrant中定義的,這更加說明了FlutterPluginRegistrant.a根本不存在,于是接下去到剛才用命令"flutter create -t module --org com.example flutter_module"構(gòu)建的?flutter_module 目錄中去搜索文件GeneratedPluginRegistrant(mac系統(tǒng)下用finder搜索小伙伴們一定都會了),果然有所收獲,在../flutter_module/.ios/Flutter/FlutterPluginRegistrant/Classes/目錄下發(fā)現(xiàn)了兩個文件GeneratedPluginRegistrant.h和GeneratedPluginRegistrant.m,這下就好辦了,在宿主工程中把這兩個文件添加進(jìn)來,方式任意,可以reference也可以copy過來。

二話不說馬上Command+B構(gòu)建工程,大功告成!!可以來支煙慶祝一下了!

希望此文可以幫助迷茫中的你走出困境,現(xiàn)在網(wǎng)上關(guān)于這個錯誤的解決方案少之甚少,如果看到這里,此時你的問題已經(jīng)得到解決了!!

Flutter Android端集成排坑 - armeabi 適配 & FlutterBoost

Flutter可以算是當(dāng)下最火熱的新技術(shù)之一,我現(xiàn)在所在團(tuán)隊也準(zhǔn)備將Flutter技術(shù)應(yīng)用到線上工程中。

關(guān)于混合工程,官方文檔其實寫的已經(jīng)比較清楚了,按著文檔走一般問題不大,

但是有一點值得注意的是,F(xiàn)lutter工程引入的庫的gradle的 buildTypes 要與原工程保持一致,如果不一致需要手工添加。

進(jìn)入正題,現(xiàn)在Flutter官方默認(rèn)只提供armeabi-v7a、arm64-v8a、x86和x86-64,其中x86和x86-64是為模擬器準(zhǔn)備的。目前我們使用的SDK大部分只使用了armeabi架構(gòu),直接使用我們會遇見找不到 libflutter.so,libapp.so 的情況,所以我們需要對FlutterSDK做一定的改造。

首先我們要了解下Flutter編譯產(chǎn)物,因為不同版本產(chǎn)物是不同的,這里我們只針對Flutter 1.9.1-hotfixes來說。除了資源文件之外,F(xiàn)lutter打包會生成兩個非常重要的so庫,他們分別是 libflutter.so,libapp.so 。其中 libflutter.so 是Flutter的SDK產(chǎn)物而 libapp.so 正是我們編寫的dart文件的產(chǎn)物。默認(rèn)情況下,這兩個文件都會出現(xiàn)在armeabi-v7a中,因此我們要作出對應(yīng)的改造。

libflutter.so 位于FlutterSDK中,這里順帶提一句,除了這對不同CPU架構(gòu),它還分為Debug版和Release版,它們的區(qū)別在于Debug是為JIT編譯方式打造的,體積較大而Release是為AOT編譯方式打造的,體積很小。對 libflutter.so 的改造,只要將其移動文件路徑即可,運行以下腳本即可,此腳本來自美團(tuán)分享的Flutter文章。

移動完了 libflutter.so 之后我們打包發(fā)現(xiàn), libapp.so 仍然會出現(xiàn)在armeabi-v7a中,所以第二部我們就是移動 libapp.so 。這個需要更改 flutter.gradle ,我們在 flutter.gradle 的45行可以看到如下定義,它定義了我們的環(huán)境。

在524行我們可以看到,abiValue的取值就是根據(jù)上述定義值。

所以結(jié)論很簡單,只要將

private static final String ARCH_ARM32 = "armeabi-v7a";

改為

private static final String ARCH_ARM32 = "armeabi";

就可以完成對與 libflutter.so 的移動。

前期工作我們都做好了,打成aar就非常簡單了

直接使用 flutter build aar --target-platform android-arm

打出來后可以解壓檢查下 libflutter.so,libapp.so 是否都在armeabi文件夾下即可。

說完了armeabi適配問題,這里下說下有關(guān)于有關(guān)于FlutterBoost的接入。這個東西接入有兩點要注意。

在主app內(nèi)加上即可,常規(guī)操作,強制統(tǒng)一support包的版本號

注釋flutter.gradle第655行。因為編譯過程中,會去初始化插件項目的buildType下面的debug配置,而插件項目下并未配置debug,導(dǎo)致報錯。

如果發(fā)現(xiàn)文章中有錯誤或者有更好的解決方案歡迎指正留言,當(dāng)然如果本篇文章幫助你解決了問題,也不要吝嗇你的感謝。謝謝各位。

iOS(Swift版)Flutter集成關(guān)鍵步驟

1.在項目目錄執(zhí)行 flutter create -t module XXX(flutter模塊名) ;

2.修改Podfile,設(shè)置path,關(guān)聯(lián)podhelper.rb,注意采用 load File.join() ,不采用之前的eval語句,在target do下install;

3.執(zhí)行pod install;

4.修改AppDelegate為FlutterAppDelegate;

5.初始化并注冊FlutterEngine;

6.vscode里flutter attach實時調(diào)試;

做完這些正常開發(fā)是可以了,至于打包需要更改什么再續(xù)。

當(dāng)前文章:flutter工程集成,Flutter開發(fā)
分享路徑:http://chinadenli.net/article28/dsgghcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊App開發(fā)云服務(wù)器電子商務(wù)面包屑導(dǎo)航外貿(mào)建站

廣告

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

手機網(wǎng)站建設(shè)