<kbd id="9plqc"><label id="9plqc"></label></kbd>

        <th id="9plqc"></th>
        1. <center id="9plqc"><video id="9plqc"></video></center>
          <sub id="9plqc"><form id="9plqc"><pre id="9plqc"></pre></form></sub>
          <nav id="9plqc"><form id="9plqc"><legend id="9plqc"></legend></form></nav>
          【精選】flutter 您所在的位置:網(wǎng)站首頁 修改ios文件 【精選】flutter

          【精選】flutter

          2023-10-28 19:19| 來源: 網(wǎng)絡(luò)整理| 查看: 265

          最終效果

          flutter端,打開flutter項(xiàng)目,會看到以下三個自定義的選項(xiàng): 在這里插入圖片描述

          安卓端,打開對應(yīng)的安卓項(xiàng)目(即打開android文件夾), 會看到Build Variants下,app有多個環(huán)境可選, 分別是test環(huán)境的profile、release、debug版; dev環(huán)境的profile、release、debug版 和 prod環(huán)境的profile、release、debug版 在這里插入圖片描述

          iOS端,用xcode打開對應(yīng)的ios項(xiàng)目,即打開ios文件夾下的Runner.xcworkspace,可以看到3個Scheme…, 每個Scheme各個版(debug、profile、release)都可以配置不同的bundle id, app name、等

          在這里插入圖片描述在這里插入圖片描述

          開始

          這里我為項(xiàng)目添加了3個環(huán)境,dev、test和prod,三個環(huán)境所用的接口、項(xiàng)目名稱、包名、icon不一致

          用flutter打開項(xiàng)目,點(diǎn)擊如下所示的Edit Configurations,創(chuàng)建3個name分別為dev、test、prod, flavor分別為dev、check、prod; (由于test在安卓不能設(shè)置為flavor的值,所以這里改成check) 在這里插入圖片描述 在這里插入圖片描述 在這里插入圖片描述

          為安卓配置環(huán)境

          在android/app/build.gradle 下添加如下代碼:

          flavorDimensions "appEnvironment" productFlavors { check { dimension "appEnvironment" } prod { dimension "appEnvironment" } dev { dimension "appEnvironment" } }

          目前這里還未設(shè)置任何根據(jù)環(huán)境改變的值,這樣就配置好了安卓端的多flavor, 如果要添加包名,項(xiàng)目名等, 就可以在這里設(shè)置了,關(guān)于更多設(shè)置可以網(wǎng)絡(luò)搜索gradle 配置多渠道,

          用安卓打開該項(xiàng)目,就可以看到如下: 在安卓端就可以利用他來實(shí)現(xiàn)多環(huán)境配置了,接下來配置ios的,都配置好了,再設(shè)置具體變量 在這里插入圖片描述 這個時候執(zhí)行flutter build apk 是會報錯的,如果沒有報錯,需要執(zhí)行flutter clean一下,錯誤如下: 在這里插入圖片描述 觀察該項(xiàng)目build目錄下的build/app/outputs/flutter-apk/可以看到會有好幾個apk,分別是app-check-release.apk, app-check-release.apk和app-prod-release.apk;

          報錯原因: 這是因?yàn)閒lutter build apk會把所有的flavor包都生成, (flutter build apk 不知道版本情況下是默認(rèn)生成release版本的),所以會看到這3個版本, 但是生成之后,他卻不知道用哪個了,所以報錯

          解決辦法: flutter build apk --flavor dev/check/prod 指定環(huán)境;

          為iOS配置環(huán)境

          添加scheme, 名稱分別為dev、check、prod 在這里插入圖片描述 在這里插入圖片描述

          添加完成可以看到如下: 在這里插入圖片描述

          選中PROJECT下的info,找到configurations選擇,點(diǎn)擊+號, 分別Duplicate 3份 Debug、Release、Profile, 復(fù)制之后給每個版的3分更改名稱分別為check、dev、prod 在這里插入圖片描述 在這里插入圖片描述 在這里插入圖片描述

          之后就可以為每個configurations配置單獨(dú)的bundle id、證書、簽名等信息 在這里插入圖片描述 在這里插入圖片描述

          我這里沒有更改 bundle id,只是為debug環(huán)境和release環(huán)境配置了不同的簽名,所以最后看到的效果如下: 在這里插入圖片描述

          除此之外,Podfile還需要更改如下位置: 在這里插入圖片描述 更改后為: 在這里插入圖片描述 此時可以刪掉原來默認(rèn)的runner的scheme, 和Debug、Profile、Release三個默認(rèn)configurations

          之后執(zhí)行pod install, 就會看到, Pod的PROJECT下的info多出了如下內(nèi)容: 在這里插入圖片描述 以上,ios和安卓配置多環(huán)境就完成了,接下來就是利用多環(huán)境實(shí)現(xiàn)自定義需求了,比如更改請求api,更改包名

          從flutter端獲取當(dāng)前環(huán)境 ios端

          在info.plist 文件添加一條key為Flavor, value為$(PRODUCT_FLAVOR),如下: 在這里插入圖片描述 之后來到Runner下的Build Setting, 選擇Add User-Defined Setting, 在這里插入圖片描述 為每個configuration添加值 在這里插入圖片描述 寫一個channel, 以供flutter方獲取ios的flavor值

          打開appdelegate,添加如下代碼, 我這里是swift語言,用oc語言的,翻譯成oc語言就可以 在這里插入圖片描述

          let channelName = "flavor" let rootViewController : FlutterViewController = window?.rootViewController as! FlutterViewController let methodChannel = FlutterMethodChannel(name: channelName, binaryMessenger: rootViewController as! FlutterBinaryMessenger) methodChannel.setMethodCallHandler {(call: FlutterMethodCall, result: FlutterResult) -> Void in result(Bundle.main.infoDictionary?["Flavor"]) } 安卓端

          在mainActivity里添加如下代碼 在這里插入圖片描述

          MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "flavor").setMethodCallHandler { call, result -> result.success(BuildConfig.FLAVOR) }

          這里說明一個BuildConfig,這個文件,在選擇了flavor后,會自動生成,這里只需要引用一下就可以, 在這里插入圖片描述

          flutter端通過channel讀取環(huán)境

          在這里插入圖片描述

          const MethodChannel('flavor') .invokeMethod('getFlavor') .then((String flavor) { print('STARTED WITH FLAVOR $flavor'); if (flavor == 'prod') { } else if (flavor == 'check') { } else if (flavor == 'dev') { } }).catchError((error) { print(error); print('FAILED TO LOAD FLAVOR'); });

          這樣就拿到了當(dāng)前運(yùn)行環(huán)境,flutter也可以設(shè)置自己的一些設(shè)置

          以上,就完成了,之后運(yùn)行打包,只要選擇對應(yīng)configuration就可以,命令行需要指定flavor, 比如: 和

          flutter build apk --flavor dev flutter build ios --flavor dev

          更多資料 配置 flavors 構(gòu)建雙端 博客地址: csdn GitHub: flutter_muti_env



          【本文地址】

          公司簡介

          聯(lián)系我們

          今日新聞

          推薦新聞

          專題文章
            CopyRight 2018-2019 實(shí)驗(yàn)室設(shè)備網(wǎng) 版權(quán)所有
            黄色免费网站在线看,韩国精品在线观看,韩国美女一区二区,99国产热 金湖县| 遵义市| 威远县| 通化县| 长泰县| 濉溪县| 富锦市| 绥芬河市| 安义县| 社旗县| 泽州县| 理塘县| 柳州市| 铜陵市| 乐至县| 安乡县| 稷山县| 吴堡县| 义马市| 克什克腾旗| 武乡县| 郁南县| 台湾省| 磐安县| 苍梧县| 思南县| 彩票| 阜宁县| 调兵山市| 兴安县| 资兴市| 玉林市| 盐城市| 稷山县| 都安| 廊坊市| 宽甸| 玛纳斯县| 定边县| 临颍县| 正宁县| http://444 http://444 http://444 http://444 http://444 http://444