溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flutter移動端怎么進(jìn)行多渠道打包發(fā)布

發(fā)布時間:2022-06-07 15:29:49 來源:億速云 閱讀:788 作者:iii 欄目:開發(fā)技術(shù)

這篇“Flutter移動端怎么進(jìn)行多渠道打包發(fā)布”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Flutter移動端怎么進(jìn)行多渠道打包發(fā)布”文章吧。

    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)槊總€渠道設(shè)置資源的名稱,每個渠道有不同的資源,避免不相關(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ò)展一個元數(shù)據(jù),字段名取build.grade中的風(fēng)味秒速channel,字段值則是put出去的CHANNEL。其他的都不需要改變,因為mainfest所引用到的資源名稱我們都沒有改變。

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

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

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

    Flutter移動端怎么進(jìn)行多渠道打包發(fā)布

    4、打包編譯

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

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

    iOS端

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

    1、分發(fā)Target

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

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

    Flutter移動端怎么進(jìn)行多渠道打包發(fā)布

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

    Flutter移動端怎么進(jìn)行多渠道打包發(fā)布

    Flutter移動端怎么進(jìn)行多渠道打包發(fā)布

    • 打包

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

    • 遇到問題

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

    Flutter端區(qū)分渠道

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

    以上就是關(guān)于“Flutter移動端怎么進(jìn)行多渠道打包發(fā)布”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI