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

uni-app Android離線打包的多環(huán)境配置方案

 更新時(shí)間:2026年04月28日 09:46:30   作者:拾壹此間  
本文介紹uni-app項(xiàng)目Android多環(huán)境打包方案,通過productFlavors區(qū)分包名和key、利用flavor覆蓋資源和資產(chǎn)、規(guī)范變體命名和產(chǎn)物命名等方法,確保開發(fā)、測(cè)試、線上包穩(wěn)定并行,發(fā)版更可控,需要的朋友可以參考下

很多 uni-app 項(xiàng)目在離線打包階段都會(huì)遇到一個(gè)問題:
線上包、測(cè)試包共用一套配置,導(dǎo)致包名沖突、應(yīng)用名稱不區(qū)分、推送參數(shù)混用,甚至 release 包還帶著 debug 開關(guān)。

這篇文章基于一個(gè)真實(shí)項(xiàng)目,整理一套可落地的 Android 多環(huán)境配置方案,目標(biāo)是:

  • prod 包名:com.example.app
  • dev 包名:com.example.app.dev
  • prod 應(yīng)用名:示例應(yīng)用
  • dev 應(yīng)用名:示例應(yīng)用開發(fā)版
  • prod/dev 使用不同 dcloud_appkey
  • release 自動(dòng)關(guān)閉 dcloud_control.xml 里的 debug 配置

1. 在 app 模塊啟用 productFlavors

文件:simpleDemo/build.gradle

android {
    defaultConfig {
        applicationId "com.example.app"
        manifestPlaceholders = [
                "GETUI_APPID"           : "YOUR_GETUI_APPID",
                "plus.unipush.appid"    : "YOUR_UNIPUSH_APPID",
                "plus.unipush.appkey"   : "YOUR_UNIPUSH_APPKEY",
                "plus.unipush.appsecret": "YOUR_UNIPUSH_APPSECRET",
                "apk.applicationId"     : "${applicationId}"
        ]
    }
    flavorDimensions "env"
    productFlavors {
        prod {
            dimension "env"
            manifestPlaceholders["DCLOUD_APPKEY"] = "YOUR_PROD_DCLOUD_APPKEY"
        }
        dev {
            dimension "env"
            applicationIdSuffix ".dev"
            manifestPlaceholders["DCLOUD_APPKEY"] = "YOUR_DEV_DCLOUD_APPKEY"
        }
    }
}

說明:

  • applicationIdSuffix ".dev" 會(huì)讓 dev 最終包名變成 com.example.app.dev
  • apk.applicationId 寫成 ${applicationId},避免 dev 包里仍然寫死 prod 包名
  • DCLOUD_APPKEY 用 flavor 維度區(qū)分,避免測(cè)試和線上串環(huán)境

2. Manifest 中使用占位符注入 dcloud_appkey

文件:simpleDemo/src/main/AndroidManifest.xml

<meta-data
    android:name="dcloud_appkey"
    android:value="${DCLOUD_APPKEY}" />

說明:
不要把 dcloud_appkey 寫死在 main,否則 prod/dev 無法自動(dòng)切換。

3. 應(yīng)用名稱按環(huán)境覆蓋

main 保持正式名稱:

文件:simpleDemo/src/main/res/values/strings.xml

<resources>
    <string name="app_name">示例應(yīng)用</string>
</resources>

dev 增加同名資源覆蓋:

文件:simpleDemo/src/dev/res/values/strings.xml

<resources>
    <string name="app_name">示例應(yīng)用開發(fā)版</string>
</resources>

說明:
Android 資源會(huì)按構(gòu)建變體自動(dòng)覆蓋,dev 下同名 app_name 會(huì)覆蓋 main。

4. release 自動(dòng)關(guān)閉 dcloud 調(diào)試開關(guān)

如果 dcloud_control.xml 放在 src/main 且寫著 debug="true",release 也會(huì)繼承這個(gè)配置。
正確做法是按 buildType 拆分。

調(diào)試包配置:

文件:simpleDemo/src/debug/assets/data/dcloud_control.xml

<hbuilder debug="true" syncDebug="true">
<apps>
    <app appid="__UNI__XXXXXXX" appver=""/>
</apps>
</hbuilder>

發(fā)布包配置:

文件:simpleDemo/src/release/assets/data/dcloud_control.xml

<hbuilder debug="false" syncDebug="false">
<apps>
    <app appid="__UNI__XXXXXXX" appver=""/>
</apps>
</hbuilder>

并刪除:

  • simpleDemo/src/main/assets/data/dcloud_control.xml

5. 讓輸出 APK 名稱帶上 flavor

配置后會(huì)出現(xiàn) prodDebug/devRelease 等多個(gè)變體,如果輸出文件名只叫 android_release.apk,產(chǎn)物會(huì)互相覆蓋。

建議在 androidComponents 中帶上 flavor:

androidComponents {
    onVariants(selector().all()) { variant ->
        variant.outputs.forEach { output ->
            def bt = variant.buildType
            def flavor = variant.flavorName
            def flavorPart = (flavor != null && !flavor.isEmpty()) ? "${flavor}_" : ""
            output.outputFileName.set("android_${flavorPart}${bt}.apk")
        }
    }
}

6. 打包

如果你使用 Android Studio 的 Build Variants 面板,正常會(huì)看到:

  • prodDebug / prodRelease
  • devDebug / devRelease

如果只看到 debug/release,通常是 Gradle Sync 失敗或未同步成功。

總結(jié)

uni-app Android 離線打包做多環(huán)境,核心是三件事:

  • productFlavors 區(qū)分環(huán)境(包名、key 等)
  • src/dev / src/release 做資源和資產(chǎn)覆蓋(應(yīng)用名、dcloud 控制文件)
  • 用規(guī)范的變體命名和產(chǎn)物命名,避免人工誤操作

這樣一來,開發(fā)、測(cè)試、線上包能穩(wěn)定并行,發(fā)版也會(huì)更可控。

到此這篇關(guān)于 uni-app Android離線打包的多環(huán)境配置方案的文章就介紹到這了,更多相關(guān) uni-app Android離線打包配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

武宣县| 苍南县| 峨眉山市| 马公市| 鹿邑县| 长海县| 河南省| 徐水县| 泽州县| 涿鹿县| 姜堰市| 原阳县| 商水县| 上蔡县| 奉新县| 杨浦区| 阜阳市| 故城县| 寻甸| 鄂温| 梁河县| 长顺县| 富顺县| 淮滨县| 蒲江县| 寿光市| 清水河县| 遵化市| 甘德县| 师宗县| 柳州市| 日土县| 镇平县| 全南县| 丰原市| 横峰县| 乐都县| 罗平县| 乌兰浩特市| 隆安县| 五家渠市|