細(xì)心的開發(fā)者會發(fā)現(xiàn)flutter構(gòu)建的App體積比native的大一些,是什么原因造成App體積大呢?
創(chuàng)新互聯(lián)提供高防物理服務(wù)器租用、云服務(wù)器、香港服務(wù)器、西部信息服務(wù)器租用等
其實flutter 在release時App體積和native的大小差不多,而debug時體積通常會大。debug版本體積較大是為了Hot reload和快速編譯。如果有flutter開發(fā)經(jīng)驗的朋友都體驗過,如果您修改一下App的背景顏色,只需save一下就可以立刻看到修改后效果。我稱之為“像藝術(shù)家一樣在創(chuàng)造App”,因此為了實現(xiàn)這些目標(biāo),提高開發(fā)的效率,debug將占用全部資源。而當(dāng)我們構(gòu)建release版時,flutter又會采用AOT策略,提高App運行效率,release版只打包必需的資源,因而體積又會減少。
另外,flutter團隊也一直在尋找減小程序大小的方法。
1.keychain 鑰匙串訪問
2.申請開發(fā)證書
3.注冊Bundle ID
4.配置開發(fā)證書 (生成.mobileprovision文件)
5.安裝證書
6.打包ipa
7.開發(fā)團隊如何公用證書
進入以下程序
此文件保存到你想保存的地方,后面生成證書有用。
1.打開 蘋果開發(fā)者中心 ( )
2.按照以下圖片步驟走:
上面省略的步驟,按照具體需要選擇,基本是“傻瓜式點擊
到這bundle id就OK了
.mobileprovision文件格式的配置文件是讓開發(fā)者的項目(APP)能有真機調(diào)試,發(fā)布的權(quán)限。
配置開發(fā)證書,就會需要你設(shè)置,在這個項目中添加哪些設(shè)備作為真機調(diào)試的設(shè)備
1.Xcode打開以下文件夾
2.三個必填項
4.選擇發(fā)布平臺:
1.本地安裝完.cer證書文件
輸入密碼之后點擊好,即可生成.p12文件
android打包教程:
1、在AndroidManifest中確定app的名字:
2、在app/build.gradle中設(shè)置安卓兼容版本targetSdkVersion和最低版本minSdkVersion,還有編譯版本compileSdkVersion,還有設(shè)置包名applicationId,一般不用設(shè)置,除非你是要變更
4、添加啟動圖標(biāo),圖標(biāo)資源文件的位置如下:
看到這個文件的時候,就說明創(chuàng)建證書成功了
6、配置項目證書
在android目錄下新建一個file文件key.properties,然后填寫證書的信息如下:
7、啟用混淆
在app路徑中添加proguard-rules.pro文件(這個百度下就好了)
8、構(gòu)建flutter build apk
先運行下,看當(dāng)前flutter 是否支持web項目, 如果沒有enable-web: true 則輸入 flutter config --enable-web
這時候項目中就包含了web文件夾.
輸入 flutter build web 就可以在build文件夾中生成web文件, 將它放到到tomcat或者其他容器就能訪問了!
附上項目的測試連接:
參考:
Flutter可以算是當(dāng)下最火熱的新技術(shù)之一,我現(xiàn)在所在團隊也準(zhǔn)備將Flutter技術(shù)應(yīng)用到線上工程中。
關(guān)于混合工程,官方文檔其實寫的已經(jīng)比較清楚了,按著文檔走一般問題不大,
但是有一點值得注意的是,F(xiàn)lutter工程引入的庫的gradle的 buildTypes 要與原工程保持一致,如果不一致需要手工添加。
進入正題,現(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 的改造,只要將其移動文件路徑即可,運行以下腳本即可,此腳本來自美團分享的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)然如果本篇文章幫助你解決了問題,也不要吝嗇你的感謝。謝謝各位。
Flutter 項目雖說是跨平臺項目,但是項目的名稱還是需要在不同的平臺設(shè)置,不同平臺的設(shè)置位置是:
1、 Android 項目名字配置是在 android/app/src/main/AndroidManifest.xml 文件中的 application 下的 android:label 。如下圖所示:
2、 iOS 項目名字配置是在 ios/Runner/Info.plist 文件中的 dict 下的 keyCFBundleName/key stringtestapp/string 。如下圖所示:
Flutter 項目雖說是跨平臺項目,但是項目的 Logo 圖標(biāo)還是需要在不同的平臺設(shè)置,不同平臺的設(shè)置位置是:
1、 Android 項目 Logo 配置是在圖片放置在 android/app/src/main/res 下的對應(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 項目 Logo 的配置是在 ios/Runner/Assets.xcassets/AppIcon.appiconset 文件下,直接更換圖片,名字不要改動 。如下圖所示:
1、使用 cd 指令進入項目(testapp)的根目錄(方便后面操作),如下圖所示:
填寫對應(yīng)的值,如下圖所示:
1、 build.gradle 文件的位置,如下圖所示:
2、在 build.gradle 中配置 key.propreties 的全局變量,
如下圖所示:
3、 build.gradle 文件中進行簽名配置。
如下圖所示:
注意: buildTypes 中的 signingConfig signingConfigs.debug 可以變更為 signingConfig signingConfigs.release ,這樣在打包的時候,直接可以 flutter build apk ,否則就執(zhí)行 flutter build apk --release 。如圖所示:
1、 cd 進入功能(testapp) 的根目錄,如下圖所示:
2、執(zhí)行 flutter build apk 指令,如下圖所示:
我們打包成功, 生成的 apk 包在 build/app/outputs/apk/release/app-release.apk 目錄下,如下圖所示:
1、將真機通過 USB 鏈接到電腦上,如下圖所示:
2、然后,在項目的根目錄執(zhí)行 flutter install , 如果出現(xiàn)電腦同時有多個設(shè)備時,就執(zhí)行 flutter install -d deviceid 。如下圖所示:
3、設(shè)備的安裝過程如下:
1、必須一個 Xcode 開發(fā)工具
2、如果是 Window 的電腦,請安裝 Mac 虛擬系統(tǒng),進行安裝 Xcode .
1、打開目錄下的 Runner.xcworkspace 工程。
如下圖所示:
2、在 ios 工程中配置 Signing Capabilities , 如下圖所示:
1、進入項目的根目錄
2、打包指令 flutter build ios --release
如圖所示:
3、使用 Xcode 工具進行打包
如圖所示:
注意:進行該步驟,必須執(zhí)行 flutter build ios --release 否則會報錯。
打包成功,如下圖所示:
分享題目:flutter打包很大,flutter抓包
網(wǎng)站路徑:http://aaarwkj.com/article0/dsspiio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、移動網(wǎng)站建設(shè)、搜索引擎優(yōu)化、Google、外貿(mào)建站、品牌網(wǎng)站設(shè)計
聲明:本網(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)