manifestPlaceholders占位符失效

今天打包的時(shí)候,運(yùn)營(yíng)表示需要一個(gè)vivo渠道的包,桌面名稱(chēng)要和其他渠道不同,如果只有這一次需求的話,大可以修改了清單文件中的application的label就行,打完包后再改回原來(lái)的,但考慮到目前馬甲包的數(shù)量以及后續(xù)的升級(jí)打包,還是決定在gradle中做渠道區(qū)分配置,不同渠道使用manifestPlaceholders占位符替換label的字符串引用,形式如下

VivoStore {
manifestPlaceholders = [APP_NAME: "@string/app_name_vivo"]
}
APP_NAME在清單文件中申明

<application
android:name="com.cjkt.repmmath.application.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/icon_logo"
tools:replace="android:label"
android:label="${APP_NAME}"
android:supportsRtl="true"
android:theme="@style/AppTheme">
考慮到其他渠道的一致性,在gradle的defaultConfig中申明統(tǒng)一的替換方案

defaultConfig {
applicationId config.applicationId
minSdkVersion config.minSdkVersion
targetSdkVersion config.targetSdkVersion
versionCode config.versionCode
versionName config.versionName
multiDexEnabled true

    manifestPlaceholders = [
            APP_NAME      : "@string/app_name",
            APPLICATION_ID: config.applicationId,
    ]

}
基本上這樣就算完成了,可我試了很多次都不能替換成新的label包名,后來(lái)搜索到一篇文章,提到

productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
這段代碼導(dǎo)致了渠道中的占位符替換沒(méi)有成功,我把代碼刪除后,在每個(gè)渠道中單獨(dú)加入了上述占位符代碼,打包后測(cè)試確實(shí)成功替換了,但具體的原因,那篇文章中只說(shuō)了引用了 全局變量導(dǎo)致問(wèn)題的發(fā)生

我覺(jué)得這個(gè)原因有點(diǎn)難以理解,因?yàn)檫@段代碼無(wú)論放在那里都要引用UMENG_CHANNEL_VALUE這個(gè)變量,我個(gè)人猜測(cè)是manifestPlaceholders占位符每次使用時(shí)會(huì)清除上次的修改,為此,我在gradle中打印了每個(gè)使用到占位符配置的先后執(zhí)行順序,結(jié)果顯示最先執(zhí)行的是defaultConfig中的占位符代碼,接著是渠道中的占位符代碼,最后是productFlavors.all中的占位符代碼,如果按我的猜想來(lái)看,最后執(zhí)行的占位符代碼會(huì)清除上一次的修改,導(dǎo)致在渠道中的占位符替換失敗

還有個(gè)可能是flavor.manifestPlaceholders引用了在渠道中申明的占位符,導(dǎo)致其中原來(lái)的APP_NAME替換被UMENG_CHANNEL_VALUE所覆蓋,也就是說(shuō)APP_NAME的替換仍舊維持defalutConfig中的申明,渠道中的修改未起到作用

因?yàn)閷?duì)具體的機(jī)制不是很清楚,所以這只是我的一個(gè)猜想,如果各位有其他的想法,歡迎交流

提到的文章:http://www.itdecent.cn/p/1d5271c2c366
————————————————
版權(quán)聲明:本文為CSDN博主「tushiba」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/tushiba/article/details/96862824

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 https://blog.csdn.net/zhaoyanj...
    勤奮的pangdunhu閱讀 2,226評(píng)論 0 1
  • 我們的APP開(kāi)發(fā)結(jié)束后,接下來(lái)的工作就是上線不同的應(yīng)用市場(chǎng)。不同的應(yīng)用市場(chǎng)對(duì)于上線的apk文件可能會(huì)有不同的要求,...
    地球是猿的閱讀 944評(píng)論 0 0
  • AndroidStudio3.0剛剛發(fā)布兩天(版本控的我~),便迫不及待的升級(jí)了,升級(jí)前也明白這次的版本跨度較大,...
    奈何心善閱讀 1,597評(píng)論 0 1
  • 最近在項(xiàng)目中遇到需要實(shí)現(xiàn) Apk 多渠道、定制化打包, Google 、百度查找了一些資料,成功實(shí)現(xiàn)了上述功能,在...
    看一季殘花落幕閱讀 2,645評(píng)論 1 8
  • 【伴讀記D364】改試卷忙到1點(diǎn)多才到家,看到你在餐椅里坐著,吃的那么香甜,一顆懸著的心才略略放下。午睡時(shí)你鬧開(kāi)了...
    元正媽媽閱讀 267評(píng)論 0 1

友情鏈接更多精彩內(nèi)容