新聞中心
Flutter設(shè)置APP版本與構(gòu)建版本
當(dāng)一個純Flutter APP開發(fā)完成,我們要打包發(fā)布到App Store和各大安卓市場,這時候我們需要設(shè)置APP的版本號。
創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注重慶網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計,有關(guān)企業(yè)網(wǎng)站建設(shè)方案、改版、費用等問題,行業(yè)涉及成都宴會酒店設(shè)計等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認可。
如果我們在使用原生iOS或者Android開發(fā)的時,我們會在info.plist中設(shè)置 version 和 build 或是在build.gradle中設(shè)置 versionName 和 versionCode ,他們分別表示APP的版本和構(gòu)建版本。
但是我們在使用Flutter管理APP版本時,打開 pubspec.yaml 只看到一個 version 字段。這時候我們應(yīng)該怎么設(shè)置APP的 version 和 build 呢?
我們在pub上隨便找一個Flutter的組件,例如官方的 camera ,我們可以看到截止目前為止最新的版本為: camera: ^0.5.2+1 。看到這里,我想大家都明白了,Dart采用的是加號式的版本描述方式, + 前面是版本號, + 后面是當(dāng)前版本的build號。所以我們設(shè)置APP的版本號和build次數(shù),在這里設(shè)置即可,例如: version: 1.2.0+1 。
當(dāng)我們新建一個Flutter工程的時候,我們分別使用Xcode和Android Studio打開iOS和Android的工程可以看到,iOS中的 version 和 build 的值分別為 FLUTTER_BUILD_NAME 和 FLUTTER_BUILD_NUMBER :
同樣我們打開Android工程可以看到有如下定義:
事實上,F(xiàn)lutter在編譯的時候會生成 ios/Flutter/Generated.xcconfig 和 android/local.properties 文件。這兩個文件由Flutter編譯自動生成,不可更改。記錄了包含SDK路徑或者文件路徑,版本信息,環(huán)境配置(release/debug)等信息。原生工程獲取版本信息的變量就定義在這兩個文件里面。
Flutter-02編譯器選擇
1.打開 VS Code。
2.打開 查看 命令面板…。
3.輸入 “install”,然后選擇 擴展: 安裝擴展(就是點擊選擇第一行內(nèi)容)。
4.在擴展搜索輸入框中輸入 “flutter”,然后在列表中選擇 Flutter 并單擊 安裝。此過程中會自動安裝必需的 Dart 插件。(選擇第一行并安裝)
5.退出然后重新啟動 VS Code。
1.打開 查看 命令面板…。
2.輸入 “doctor”,選擇 Flutter: Run Flutter Doctor。
3.打開 輸出 (OUTPUT) 面板查看是否有錯誤,確保在不同的輸出選項 (Output Options) 的下拉列表中選擇了 Flutter。
我們在上篇文章已經(jīng)用命令行創(chuàng)建了一個 my_app 的flutter項目了,這里我們就可以使用 vscode 打開看看了
創(chuàng)建新項目 ,則是在命令面板輸 flutter , 選擇 Flutter: New Application Project
運行項目 ,找到 VS Code 的狀態(tài)欄(窗口底部藍色的條)
1.打開 Android Studio。
2.打開插件設(shè)置(在 v3.6.3.0 以上的系統(tǒng)打開 Configure Plugins)。
這里需要先改一下網(wǎng)絡(luò)請求的設(shè)置
3.然后搜索Flutter 插件,選擇并點擊 安裝。
4.當(dāng)彈出安裝 Dart 插件提示時,點擊 Yes。
5.退出重新啟動編譯器,然后在編譯器主頁面就可以看到多了了 create new flutter project 可供選擇,代表flutter插件安裝成功,我們試著點擊來創(chuàng)建一個新項目。
2022-04-22iOS項目混編flutter,iOS真機debug模式下打不開flutter頁面
最近項目中要集成flutter來進行混編,但是在集成后,突然遇到一個很神奇的問題,在debug模式下,用數(shù)據(jù)線連接真機打包可以打開flutter頁面,但是一旦拔掉數(shù)據(jù)線,再打開flutter頁面就不行了,開始以為是因為flutterSDK的原因,但是一查資料才發(fā)現(xiàn),原來是因為debug模式下flutter實現(xiàn)了熱重載,默認的編譯方式是JIV,但是iOS14+之后的系統(tǒng)限制了JIV這種編譯方式,所以連接Xcode重新run一個release包就可以了,因為flutter在release模式下的編譯方式是AOT,iOS14+的系統(tǒng)是支持這種編譯方式的,具體解決方案如下圖
再運行就可以了。
當(dāng)然還有另外一種解決方案,就是修改flutter的編譯配置,強制設(shè)為release
Flutter跨平臺框架(Dart語言)
Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費、開源的。(-中文網(wǎng);-英文網(wǎng))
Flutter是一種趨勢,勢必會取代RN,成為最主流的跨平臺開發(fā)框架,基于Dart語言。ios開發(fā)必須Mac電腦。android開發(fā)window、linux、Mac均可。
為什么Flutter開發(fā)APP性能最接近原生,前端程序員請關(guān)注
Flutter是谷歌公司推出的跨終端的開發(fā)框架,支持Android、iOS和WEB終端。1.0版在2018年12月5日發(fā)布,目前的最新版本是1.5,它采用的開發(fā)語言是Dart,Dart也是谷歌開發(fā)的計算機編程語言,語法類似C,是編譯型語言:
hello world例子,打印字符串“Hello World!”:
1、沒有橋接層
React Native、Weex等技術(shù)都是跨終端的框架,然而性能跟原生App存在很大差距。這是由于它們的工作原理決定的:
React Native、Weex等技術(shù)多了一個橋接層,所以界面渲染會慢一些,由于UI渲染非常頻繁,想要不卡頓,基本上比較難,性能和用戶體驗跟原生代碼有差距。而這恰恰是Flutter的優(yōu)勢所在:
Dart可以被編譯成不同平臺的本地代碼,讓Flutter不通過橋接層直接跟平臺通信,自然性能會快一些。
2、編譯執(zhí)行
JavaScript是解釋執(zhí)行的,Dart是編譯執(zhí)行的,性能誰好一目了然。
3、Flutter Engine虛擬機
Flutter是依靠Flutter Engine虛擬機在iOS和Android上運行的,F(xiàn)lutter Engine使用C/C++編寫,開發(fā)人員通過Flutter框架直接和API在內(nèi)部進行交互,所以具有輸入低延遲和UI渲染高幀速率的特點。除了這特點之外,F(xiàn)lutter還提供了自己的小部件,F(xiàn)lutter小部件是使用從React獲取靈感的現(xiàn)代框架構(gòu)建的。 中心思想是您使用小部件構(gòu)建UI。
窗口小部件根據(jù)其當(dāng)前配置和狀態(tài)描述了它們的視圖。 當(dāng)窗口小部件的狀態(tài)發(fā)生更改時,窗口小部件會重建其描述,框架將根據(jù)前面的描述進行區(qū)分,以確定底層呈現(xiàn)樹從一個狀態(tài)轉(zhuǎn)換到下一個狀態(tài)所需的最小更改。可以直接在OS平臺提供的畫布上進行描繪,也就是一些核心類庫直接放到虛擬機里面,調(diào)用起來更快。
從它的系統(tǒng)結(jié)構(gòu)可以看出,類似安卓的ART(Android Run Time)虛擬機,同樣采用AOT(Ahead of TIme)技術(shù),會在APP安裝時就編譯成機器語言,不再解釋執(zhí)行,從而優(yōu)化了APP運行的性能。
4、自帶渲染引擎
Flutter使用谷歌自己的Skia渲染引擎,而Android系統(tǒng)自帶Skia引擎,iOS平臺上Flutter也會把Skia引擎打包到APP中,從而實現(xiàn)了高效渲染。而React Native通過橋接層訪問原生UI,操作頻繁就容易出性能問題。
綜合所述,F(xiàn)lutter 是性能最接近原生代碼 的一種開發(fā)框架,未來也會是構(gòu)建谷歌Fuchsia應(yīng)用的主要方式,前途不可限量,唯一的問題就是需要學(xué)習(xí)一門新的語言:Dart,而有Java或者C#語言基礎(chǔ)的程序員會比較容易學(xué)習(xí)。
【Android開發(fā)學(xué)Flutter】Xcode編譯問題匯總
Xcode編譯經(jīng)常遇到各種問題,處理起來費時費力,挺打擊學(xué)習(xí)積極性的。記錄下這些問題,方便自己也幫助后來人。
編譯的時候遇到:
網(wǎng)上有很多解決方法,我是用這個方法解決的:
編譯的時候遇到:
解決辦法:
Project - User-Defined - FLUTTER_ROOT 改成本地 flutter SDK路徑
感謝 issues 上的小哥,給你個????
在項目目錄下執(zhí)行 flutter run 可以正常運行到手機,但是在Xcode build 還是有問題。
這時需要手動添加 FLUTTER_ROOT 到 User-Defined :
添加之后:
就可以正常在Xcode build 安裝到手機了。
flutter build ios 后出現(xiàn):
pod install 后出現(xiàn):
解決辦法:
這是因為terminal沒有走代理的流量,
使用 git config --global http.proxy "localhost:port" ,設(shè)置代理。
port是端口號,根據(jù)不同的vpn不一樣,我的端口是10080。
執(zhí)行 git config --global http.proxy "localhost:10080"
Xcode build 的時候出現(xiàn):
解決辦法:打開 ios/Podflie 文件:
關(guān)于 bitcode 的問題,我檢查了下用到的第三方SDK,應(yīng)該是百度地圖的問題,我引入了個第三方插件(吐槽下沒官方插件),百度地圖有支持和不支持 bitcode 的兩個SDK,我取消這個插件就沒有報這個錯了,奇怪的是,再次引入同一個插件,也可以正常打包,所以說這個問題還沒有完全解決。
大家可以試下這個處理方法:
TARGETS - Build Seettings 搜 arm ,試一下把其他刪除,只留下armv7跟armv7s或者只留下armv7
解決辦法:
我是clean Xcode之后就可以了
解決辦法:
用的是P12證書,改成手動簽名:
網(wǎng)頁名稱:flutter編譯平臺,flutter開發(fā)工具
當(dāng)前地址:http://ef60e0e.cn/article/dscoooj.html