成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

flutter打包so,flutter打包ipa

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

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

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

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

但是有一點(diǎn)值得注意的是,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 的改造,只要將其移動文件路徑即可,運(yùn)行以下腳本即可,此腳本來自美團(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的接入。這個東西接入有兩點(diǎn)要注意。

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

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

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

Flutter初始化

新建一個Flutter工程,android模塊。

1,只有一個Activity組件,它是Dart層繪制Widget的容器。

2,Application配置FlutterApplication。

應(yīng)用Application配置io.flutter.app.FlutterApplication類,App首次啟動時,初始化。

調(diào)用FlutterMain.startInitialization()方法。

initConfig方法,從AndroidManfest.xml配置的applicaion節(jié)點(diǎn)獲取meta-data數(shù)據(jù),初始化以下默認(rèn)值。

這些值都是使用中用到的name,例如,抽取apk中asset資源時,flutter_assets打包目錄,打包產(chǎn)物data名稱。

initResources方法, 初始化資源。

在Flutter打包apk的asset目錄下,包括fluttter_asset目錄/資源項,將資源從apk中抽取,保存在 Context.getDir("flutter", 0) 目錄下。

/data/user/0/包名/app_flutter目錄。

在目錄中創(chuàng)建一個時間戳文件,根據(jù)apk版本和包信息記錄的lastUpdateTime更新時間,第二次啟動時,若apk未更新,不需要再次抽取。

加載so庫,libflutter.so,System.loadLibrary()。

主頁面繼承FlutterActivity,配置啟動模式singleTop。

FlutterActivity類在io.flutter.app包, (區(qū)別io.flutter.embedding.android包), 組件生命周期委托給FlutterActivityDelegate類。

組件啟動,onCreate方法。

FlutterMain.ensureInitializationComplete方法,確保資源成功抽取完成,創(chuàng)建FlutterView視圖(io.flutter.view),繼承SurfaceView類,setContentView方法,設(shè)置組件主布局即FlutterView視圖。

最后,根據(jù)Bundle路徑,runBundle()加載運(yùn)行,

調(diào)用FlutterView的runFromBundle方法,入口點(diǎn)在dart的main方法,

通過FlutterNativeView,調(diào)用FlutterJNI的native方法。

nativeRunBundleAndSnapshotFromLibrary方法。

任重而道遠(yuǎn)

Flutter打包產(chǎn)物

基于flutter版本1.9.1,低版本區(qū)別對待。

lib目錄,libflutter.so文件,三個目錄armeabi-v7a,x86_64和x86,支持arm平臺32和x86的32和64。

asset目錄,新增flutter_asset目錄,三個文件,dart產(chǎn)物。

lib目錄,libflutter.so文件,兩個目錄armeabi-v7,arm64-v8a,支持arm平臺32和64。

asset目錄,新增flutter_asset目錄。

在release模式,libapp.so替代flutter老版本的一些dart產(chǎn)物,如下。

flutter命令打包生成產(chǎn)物,flutter命令腳本會調(diào)用dart命令。

dart的編譯模式:

kernel snapshot 模式,開發(fā)階段,isolate_snapshot_data,vm_snapshot_data,kernel_blob_bin是業(yè)務(wù)數(shù)據(jù)。

core jit,

生產(chǎn)階段,dart的一種二進(jìn)制模式,這是一種aot模式,vm和isolate。

任重而道遠(yuǎn)

網(wǎng)頁標(biāo)題:flutter打包so,flutter打包ipa
鏈接地址:http://jinyejixie.com/article18/dssecdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站收錄、用戶體驗ChatGPT、搜索引擎優(yōu)化手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎ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è)
铜山县| 鹤庆县| 龙口市| 望城县| 镇巴县| 和田县| 通城县| 平度市| 通城县| 武安市| 宽城| 泸州市| 福建省| 徐汇区| 万荣县| 财经| 横山县| 扶绥县| 罗源县| 青川县| 门源| 汶上县| 宝鸡市| 甘南县| 丹寨县| 桃园县| 游戏| 徐汇区| 汤阴县| 泾川县| 迁安市| 平罗县| 枣庄市| 小金县| 英山县| 长武县| 凤翔县| 离岛区| 乌鲁木齐市| 广宁县| 莱阳市|