最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的全過程

 更新時(shí)間:2022年06月07日 12:06:01   作者:Karl_wei  
在使用flutter開發(fā)的過程中,需要根據(jù)不同的環(huán)境,不同的包名來打包,下面這篇文章主要給大家介紹了關(guān)于Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

隨著項(xiàng)目的運(yùn)營(yíng)推廣,總少不了各種客戶定制化的需求,當(dāng)前大部分軟件其實(shí)都離不開Saas的玩法;定制化需求雖然利潤(rùn)高(特別是海外客戶),但對(duì)于開發(fā)人員來說卻比較難搞,同一套代碼需要支持不同的需求。

一般我們處理這種需求的時(shí)候會(huì)引入渠道包的概念,每個(gè)客戶擁有獨(dú)立渠道,通過渠道指定不同的資源、賦予不同的功能,從而編譯出定制化的版本。本篇文章將分享Flutter中如何進(jìn)行移動(dòng)端(iOS、Android)的渠道編譯,替換應(yīng)用圖標(biāo)、名稱、appkey等。

Android端

1、配置build.grade

Android端的打包配置,主要是通過build.grade文件進(jìn)行配置,在android目錄下加入flavorDimensions,然后配置不同的風(fēng)味維度;

android {
    // ......
    flavorDimensions 'channel'
    productFlavors {
        develop {
            applicationId "${defaultConfig.applicationId}"
        }
        customer {
            applicationId "${defaultConfig.applicationId}" // 可替換成客戶的AppID
        }
        productFlavors.all {
            // 遍歷productFlavors多渠道,設(shè)置渠道名稱,在flutter層也能取到
            flavor -> flavor.manifestPlaceholders.put("CHANNEL", name)
        }
    }
}

之后我們?yōu)槊總€(gè)渠道設(shè)置資源的名稱,每個(gè)渠道有不同的資源,避免不相關(guān)的資源打包進(jìn)去,增加包大小。

productFlavors {
// 省略,見上
}
// 為不同渠道指定不同資源文件配置
sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
    // develop無指定就默認(rèn)使用src/main/res
    squatz.res.srcDirs 'src/main/res-customer'
}

2、配置mainfest

Mainfest在<application>下擴(kuò)展一個(gè)元數(shù)據(jù),字段名取build.grade中的風(fēng)味秒速channel,字段值則是put出去的CHANNEL。其他的都不需要改變,因?yàn)閙ainfest所引用到的資源名稱我們都沒有改變。

<application>
    <!-- 多渠道打包 -->
    <meta-data
        android:name="channel"
        android:value="${CHANNEL}" />
</application>

3、新增對(duì)應(yīng)資源

由于Mainfest的變量名沒有變過,因此新增資源的名稱就需要跟res中的保持一致。

4、打包編譯

flutter build apk --flavor Customer --obfuscate --split-per-abi

打包命令非常簡(jiǎn)單,指定flavor為build.grade中配置的渠道名稱即可,注意首字母大寫!

iOS端

筆者并無iOS的實(shí)際開發(fā)經(jīng)驗(yàn),對(duì)iOS并不熟悉;但網(wǎng)上對(duì)這塊的記錄真的是少之又少,所以還是決定記錄下來,接下來的內(nèi)容雖成功實(shí)踐過,但未必是最佳方法,歡迎大家一起交流。

1、分發(fā)Target

Target其實(shí)是貫穿iOS整個(gè)開發(fā)過程的,無論是運(yùn)行目標(biāo)還是UI控制器,都離不開target;Target是工程編譯的目標(biāo),其會(huì)繼承Project的編譯設(shè)置,并可重新設(shè)置自己的編譯配置,比如Build SettingBuild Phases。

  • 新建Target,直接在原target右鍵分發(fā)一個(gè)出來,默認(rèn)會(huì)復(fù)制原target的所有配置。

  • 修改應(yīng)用信息,注意圖標(biāo)、應(yīng)用名稱等資源另起一個(gè)文件夾去配置。

  • 打包

自此iOS就有了多個(gè)打包目標(biāo),非常簡(jiǎn)單。這也是iOS體系開發(fā)比較好的一點(diǎn),沒有太多花里胡哨的玩法,跟著文檔配置就好了。
flutter打包命令:flutter build ipa --flavor Customer --release

  • 遇到問題

目前我們遇到如下問題,配置好后在flutter層執(zhí)行flutter build ios --flavor Customer --release后,會(huì)導(dǎo)致xcode重新build項(xiàng)目,然后pod_Runner的動(dòng)態(tài)依賴丟失,但是在xcode中執(zhí)行又不會(huì)。

Flutter端區(qū)分渠道

在打包的時(shí)候我們可以使用參數(shù)-dart-define=CHANNEL=XXXX,其中CHANNEL是參數(shù)key,xxxx是name,然后在flutter中使用String.fromEnvironment('CHANNEL', defaultValue: 'develop');,即可獲取到key為CHANNEL的值。

總結(jié)

到此這篇關(guān)于Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的文章就介紹到這了,更多相關(guān)Flutter多渠道打包發(fā)布內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

唐山市| 轮台县| 平和县| 武宣县| 新龙县| 沙坪坝区| 色达县| 扶绥县| 新昌县| 潜江市| 昆山市| 北京市| 湾仔区| 田阳县| 黄山市| 尼玛县| 什邡市| 涡阳县| 柳林县| 津市市| 车致| 沐川县| 常山县| 图木舒克市| 肇庆市| 资讯 | 兰考县| 微博| 澄迈县| 门头沟区| 大邑县| 竹北市| 太湖县| 麻江县| 司法| 颍上县| 中山市| 赞皇县| 蒙城县| 灌阳县| 新龙县|