細(xì)心的開發(fā)者會(huì)發(fā)現(xiàn)flutter構(gòu)建的App體積比native的大一些,是什么原因造成App體積大呢?
創(chuàng)新互聯(lián)提供高防物理服務(wù)器租用、云服務(wù)器、香港服務(wù)器、西部信息服務(wù)器租用等
其實(shí)flutter 在release時(shí)App體積和native的大小差不多,而debug時(shí)體積通常會(huì)大。debug版本體積較大是為了Hot reload和快速編譯。如果有flutter開發(fā)經(jīng)驗(yàn)的朋友都體驗(yàn)過(guò),如果您修改一下App的背景顏色,只需save一下就可以立刻看到修改后效果。我稱之為“像藝術(shù)家一樣在創(chuàng)造App”,因此為了實(shí)現(xiàn)這些目標(biāo),提高開發(fā)的效率,debug將占用全部資源。而當(dāng)我們構(gòu)建release版時(shí),flutter又會(huì)采用AOT策略,提高App運(yùn)行效率,release版只打包必需的資源,因而體積又會(huì)減少。
另外,flutter團(tuán)隊(duì)也一直在尋找減小程序大小的方法。
1.keychain 鑰匙串訪問(wèn)
2.申請(qǐng)開發(fā)證書
3.注冊(cè)Bundle ID
4.配置開發(fā)證書 (生成.mobileprovision文件)
5.安裝證書
6.打包ipa
7.開發(fā)團(tuán)隊(duì)如何公用證書
進(jìn)入以下程序
此文件保存到你想保存的地方,后面生成證書有用。
1.打開 蘋果開發(fā)者中心 ( )
2.按照以下圖片步驟走:
上面省略的步驟,按照具體需要選擇,基本是“傻瓜式點(diǎn)擊
到這bundle id就OK了
.mobileprovision文件格式的配置文件是讓開發(fā)者的項(xiàng)目(APP)能有真機(jī)調(diào)試,發(fā)布的權(quán)限。
配置開發(fā)證書,就會(huì)需要你設(shè)置,在這個(gè)項(xiàng)目中添加哪些設(shè)備作為真機(jī)調(diào)試的設(shè)備
1.Xcode打開以下文件夾
2.三個(gè)必填項(xiàng)
4.選擇發(fā)布平臺(tái):
1.本地安裝完.cer證書文件
輸入密碼之后點(diǎn)擊好,即可生成.p12文件
android打包教程:
1、在AndroidManifest中確定app的名字:
2、在app/build.gradle中設(shè)置安卓兼容版本targetSdkVersion和最低版本minSdkVersion,還有編譯版本compileSdkVersion,還有設(shè)置包名applicationId,一般不用設(shè)置,除非你是要變更
4、添加啟動(dòng)圖標(biāo),圖標(biāo)資源文件的位置如下:
看到這個(gè)文件的時(shí)候,就說(shuō)明創(chuàng)建證書成功了
6、配置項(xiàng)目證書
在android目錄下新建一個(gè)file文件key.properties,然后填寫證書的信息如下:
7、啟用混淆
在app路徑中添加proguard-rules.pro文件(這個(gè)百度下就好了)
8、構(gòu)建flutter build apk
先運(yùn)行下,看當(dāng)前flutter 是否支持web項(xiàng)目, 如果沒有enable-web: true 則輸入 flutter config --enable-web
這時(shí)候項(xiàng)目中就包含了web文件夾.
輸入 flutter build web 就可以在build文件夾中生成web文件, 將它放到到tomcat或者其他容器就能訪問(wèn)了!
附上項(xiàng)目的測(cè)試連接:
參考:
Flutter可以算是當(dāng)下最火熱的新技術(shù)之一,我現(xiàn)在所在團(tuán)隊(duì)也準(zhǔn)備將Flutter技術(shù)應(yīng)用到線上工程中。
關(guān)于混合工程,官方文檔其實(shí)寫的已經(jīng)比較清楚了,按著文檔走一般問(wèn)題不大,
但是有一點(diǎn)值得注意的是,F(xiàn)lutter工程引入的庫(kù)的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),直接使用我們會(huì)遇見找不到 libflutter.so,libapp.so 的情況,所以我們需要對(duì)FlutterSDK做一定的改造。
首先我們要了解下Flutter編譯產(chǎn)物,因?yàn)椴煌姹井a(chǎn)物是不同的,這里我們只針對(duì)Flutter 1.9.1-hotfixes來(lái)說(shuō)。除了資源文件之外,F(xiàn)lutter打包會(huì)生成兩個(gè)非常重要的so庫(kù),他們分別是 libflutter.so,libapp.so 。其中 libflutter.so 是Flutter的SDK產(chǎn)物而 libapp.so 正是我們編寫的dart文件的產(chǎn)物。默認(rèn)情況下,這兩個(gè)文件都會(huì)出現(xiàn)在armeabi-v7a中,因此我們要作出對(duì)應(yīng)的改造。
libflutter.so 位于FlutterSDK中,這里順帶提一句,除了這對(duì)不同CPU架構(gòu),它還分為Debug版和Release版,它們的區(qū)別在于Debug是為JIT編譯方式打造的,體積較大而Release是為AOT編譯方式打造的,體積很小。對(duì) libflutter.so 的改造,只要將其移動(dòng)文件路徑即可,運(yùn)行以下腳本即可,此腳本來(lái)自美團(tuán)分享的Flutter文章。
移動(dòng)完了 libflutter.so 之后我們打包發(fā)現(xiàn), libapp.so 仍然會(huì)出現(xiàn)在armeabi-v7a中,所以第二部我們就是移動(dòng) libapp.so 。這個(gè)需要更改 flutter.gradle ,我們?cè)?flutter.gradle 的45行可以看到如下定義,它定義了我們的環(huán)境。
在524行我們可以看到,abiValue的取值就是根據(jù)上述定義值。
所以結(jié)論很簡(jiǎn)單,只要將
private static final String ARCH_ARM32 = "armeabi-v7a";
改為
private static final String ARCH_ARM32 = "armeabi";
就可以完成對(duì)與 libflutter.so 的移動(dòng)。
前期工作我們都做好了,打成aar就非常簡(jiǎn)單了
直接使用 flutter build aar --target-platform android-arm
打出來(lái)后可以解壓檢查下 libflutter.so,libapp.so 是否都在armeabi文件夾下即可。
說(shuō)完了armeabi適配問(wèn)題,這里下說(shuō)下有關(guān)于有關(guān)于FlutterBoost的接入。這個(gè)東西接入有兩點(diǎn)要注意。
在主app內(nèi)加上即可,常規(guī)操作,強(qiáng)制統(tǒng)一support包的版本號(hào)
注釋flutter.gradle第655行。因?yàn)榫幾g過(guò)程中,會(huì)去初始化插件項(xiàng)目的buildType下面的debug配置,而插件項(xiàng)目下并未配置debug,導(dǎo)致報(bào)錯(cuò)。
如果發(fā)現(xiàn)文章中有錯(cuò)誤或者有更好的解決方案歡迎指正留言,當(dāng)然如果本篇文章幫助你解決了問(wèn)題,也不要吝嗇你的感謝。謝謝各位。
Flutter 項(xiàng)目雖說(shuō)是跨平臺(tái)項(xiàng)目,但是項(xiàng)目的名稱還是需要在不同的平臺(tái)設(shè)置,不同平臺(tái)的設(shè)置位置是:
1、 Android 項(xiàng)目名字配置是在 android/app/src/main/AndroidManifest.xml 文件中的 application 下的 android:label 。如下圖所示:
2、 iOS 項(xiàng)目名字配置是在 ios/Runner/Info.plist 文件中的 dict 下的 keyCFBundleName/key stringtestapp/string 。如下圖所示:
Flutter 項(xiàng)目雖說(shuō)是跨平臺(tái)項(xiàng)目,但是項(xiàng)目的 Logo 圖標(biāo)還是需要在不同的平臺(tái)設(shè)置,不同平臺(tái)的設(shè)置位置是:
1、 Android 項(xiàng)目 Logo 配置是在圖片放置在 android/app/src/main/res 下的對(duì)應(yīng)目錄下:
mipmap-mdpi : 48 _ 48
mipmap-hdpi : 72 _ 72
mipmap-xhdpi :96 _ 96
mipmap-xxhdpi :144 _ 144
mipmap-xxxhdpi :192 * 192。如下圖所示:
然后,在 android/app/src/main/AndroidManifest.xml 路徑下的 AndroidManifest.xml 文件中的 android:icon 。如下圖所示:
2、 iOS 項(xiàng)目 Logo 的配置是在 ios/Runner/Assets.xcassets/AppIcon.appiconset 文件下,直接更換圖片,名字不要改動(dòng) 。如下圖所示:
1、使用 cd 指令進(jìn)入項(xiàng)目(testapp)的根目錄(方便后面操作),如下圖所示:
填寫對(duì)應(yīng)的值,如下圖所示:
1、 build.gradle 文件的位置,如下圖所示:
2、在 build.gradle 中配置 key.propreties 的全局變量,
如下圖所示:
3、 build.gradle 文件中進(jìn)行簽名配置。
如下圖所示:
注意: buildTypes 中的 signingConfig signingConfigs.debug 可以變更為 signingConfig signingConfigs.release ,這樣在打包的時(shí)候,直接可以 flutter build apk ,否則就執(zhí)行 flutter build apk --release 。如圖所示:
1、 cd 進(jìn)入功能(testapp) 的根目錄,如下圖所示:
2、執(zhí)行 flutter build apk 指令,如下圖所示:
我們打包成功, 生成的 apk 包在 build/app/outputs/apk/release/app-release.apk 目錄下,如下圖所示:
1、將真機(jī)通過(guò) USB 鏈接到電腦上,如下圖所示:
2、然后,在項(xiàng)目的根目錄執(zhí)行 flutter install , 如果出現(xiàn)電腦同時(shí)有多個(gè)設(shè)備時(shí),就執(zhí)行 flutter install -d deviceid 。如下圖所示:
3、設(shè)備的安裝過(guò)程如下:
1、必須一個(gè) Xcode 開發(fā)工具
2、如果是 Window 的電腦,請(qǐng)安裝 Mac 虛擬系統(tǒng),進(jìn)行安裝 Xcode .
1、打開目錄下的 Runner.xcworkspace 工程。
如下圖所示:
2、在 ios 工程中配置 Signing Capabilities , 如下圖所示:
1、進(jìn)入項(xiàng)目的根目錄
2、打包指令 flutter build ios --release
如圖所示:
3、使用 Xcode 工具進(jìn)行打包
如圖所示:
注意:進(jìn)行該步驟,必須執(zhí)行 flutter build ios --release 否則會(huì)報(bào)錯(cuò)。
打包成功,如下圖所示:
分享題目:flutter打包很大,flutter抓包
網(wǎng)站路徑:http://sd-ha.com/article0/dsspiio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、Google、外貿(mào)建站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(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)