馬甲包使用微信分享/支付回調(diào),不需每次手動(dòng)更換packageName(包名)(解決方案)

前言

首頁(yè)要了解 Gradle配置多渠道打包渣淤,APP馬甲包大部分是將應(yīng)用ICON(應(yīng)用圖標(biāo))赏寇、Name(名稱(chēng))、applicationId(應(yīng)用標(biāo)識(shí))价认、Splash(啟動(dòng)圖)嗅定、Guide(引導(dǎo)頁(yè))、Style Color (主題顏色)刻伊、JKS 更換還有代碼邏輯區(qū)分處理露戒。而Gradle多渠道就可以輕松可以實(shí)現(xiàn)動(dòng)態(tài)替換這些東西。接下來(lái)我們看看微信支付/分享回調(diào)是如何產(chǎn)生問(wèn)題的捶箱。

現(xiàn)有場(chǎng)景微信(支付/分享)回調(diào)產(chǎn)生的問(wèn)題

既然是馬甲包智什,那么applicationId(應(yīng)用Id)肯定是不一樣的。如果按常規(guī)方法applicationIdpackageName(包名)一致丁屎,那么如果我們app里有微信分享/支付 這就很麻煩了荠锭,因?yàn)槲⑿牛ǚ窒?支付)成功/失敗后會(huì)使用到我們?cè)谖⑿砰_(kāi)放平臺(tái)配置的packageName. 干什么呢?用于將結(jié)果回調(diào)給我們的app內(nèi). 怎么回調(diào)呢晨川?微信使用 packageName.wxapi.WXEntryActivity或者packageName.wxapi.WXPayEntryActivity在系統(tǒng)中找到這個(gè)類(lèi)回調(diào)結(jié)果证九。

小提示:(分享/支付)調(diào)起微信會(huì)檢查應(yīng)用的packageName(包名) 這里的packageName(包名) 并不是Manifests中的packageName而是applicationId。因此在多渠道打包時(shí)候共虑,applicationId修改成多個(gè)不同的值愧怜,為了不影響微信將結(jié)果正常回調(diào)到我們的應(yīng)用妈拌,都必須建立相應(yīng)文件路徑和配置

Test Result:applicationId配置和微信開(kāi)放平臺(tái)的packageName一致拥坛,但是微信回調(diào)類(lèi)的位置不在packageName.wxapi下也不會(huì)提示(包名/簽名錯(cuò)誤) 而會(huì)調(diào)用起微信并(分享/支付),但是無(wú)法將結(jié)果回調(diào)

這樣就知道我們?cè)陧?xiàng)目中的兩個(gè)文件(WXEntryActivityWXPayEntryActivity)存放位置就至關(guān)重要了尘分,常規(guī)app只要將這兩個(gè)文件放置當(dāng)前packageName.wxapi下就可以了猜惋。可是馬甲包的applicationId是不一樣的培愁,那怎么辦呢著摔?

解決方案

一、之前我的常規(guī)做法把微信 APP_IDAPP_SECRET 通過(guò)productFlavorsbuildConfigField配置定续,每次發(fā)布多應(yīng)用都需要改packageName(包名)發(fā)布谍咆,如果同時(shí)發(fā)布10個(gè)應(yīng)用禾锤,那么就要改10次packageName(包名)及資源等,然后進(jìn)行打包卧波。 o( ̄︶ ̄)o 非常痛苦

二时肿、在項(xiàng)目(app工程)src下新建以渠道名稱(chēng)命名的文件夾,名字一定要跟渠道名一樣港粱,級(jí)別跟main文件夾是一樣的螃成,里面獨(dú)有文件獨(dú)有資源的文件結(jié)構(gòu)要跟main一致。

如圖:

圖(1).png

這里有三種文件

  • 一種是需要用到的資源文件查坪,如各種xml文件或圖片等
  • 一種是java代碼寸宏。這里要注意一下,xml文件和圖片等資源會(huì)自動(dòng)替換掉main文件夾里的相應(yīng)文件偿曙;在java文件時(shí)氮凝,各個(gè)渠道文件夾里有這個(gè)文件,在main里也有這個(gè)文件望忆,但在編譯時(shí)就會(huì)提示類(lèi)重復(fù)罩阵,編譯不通過(guò),則需要將main中相對(duì)于文件刪除启摄。各個(gè)渠道文件夾和main文件夾之間的關(guān)系不是單純的替換稿壁,而是優(yōu)先使用渠道的東西,編譯時(shí)相當(dāng)于是合并歉备,xml等文件相當(dāng)于直接替換傅是。
  • 還有一種就是manifests文件,編譯時(shí)也是合并蕾羊。

我們可以將資源放入不同的渠道文件中喧笔,保證幾個(gè)渠道中的資源名稱(chēng)一致 main引用不報(bào)錯(cuò)就可以,Android Studio通過(guò)切換渠道(Build Variants)會(huì)引用不同的資源文件龟再。

要解決微信回調(diào)的問(wèn)題书闸,就要利用渠道 manifests文件和java文件來(lái)實(shí)現(xiàn) 如上圖(1)

再來(lái)看一下Android狀態(tài)下的目錄結(jié)構(gòu)

圖(2).png

再來(lái)看看Manifests文件里是什么樣的

圖(3).png

Gradle部分代碼如下

因公司代碼不便貼出來(lái),模擬 channel1利凑、 channel2浆劲、 channel3三個(gè)渠道,只要保證productFlavors里的名稱(chēng)和上面介紹的渠道文件夾名稱(chēng)一致就好了

android {
    signingConfigs {
        //配置多渠道需要的JKS
        channel1 {
            //channel1 jks info
        }
        channel2 {
            //channel2  jks info
        }
        channel3 {
            //channel3 jks info
        }
    }

    //省略部分代碼.........

    productFlavors {
        channel1 {
            applicationId "com.test.channel1"
        }
        channel2 {
            applicationId "com.test.channel2"
        }
        channel3 {
            applicationId "com.test.channel3"
        }
    }

    buildTypes {
        release {
            zipAlignEnabled true
            //多個(gè) flavor(渠道) ,指定 flavor 使用指定 簽名
            productFlavors.channel1.signingConfig signingConfigs.channel1
            productFlavors.channel2.signingConfig signingConfigs.channel2
            productFlavors.channel3.signingConfig signingConfigs.channel3
        }

        //如果 debug 包需要測(cè)試諸如微信截碴、地圖等第三方 sdk ,則可以指定 debug 包使用 release 包的簽名
        //debug 并不能設(shè)置多個(gè)簽名
        debug {
            zipAlignEnabled true
        }
    }
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }
}

好了蛉威,這樣配置過(guò)后日丹,在打包生成APK時(shí),渠道配置的Manifests文件會(huì)和mainManifests文件會(huì)自動(dòng)合并蚯嫌,這樣的話就將渠道Manifests配置的activity注冊(cè)到了我們app里哲虾,繼而實(shí)現(xiàn)了這篇文章的核心功能 <不用每次都手動(dòng)更換packageName(包名)> 丙躏,只需要按上面 圖(1) 中的結(jié)構(gòu)配置渠道文件即可

配置渠道資源注意事項(xiàng)

  • 保證不同渠道之間 同作用的文件 存放位置及名稱(chēng)要一致(例如 ICON在多個(gè)渠道文件夾中都存放至drawable-xxgdpi文件夾 并命名為ic_launcher.png

如有誤點(diǎn),多多指教 喜歡呦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末束凑,一起剝皮案震驚了整個(gè)濱河市晒旅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汪诉,老刑警劉巖废恋,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扒寄,居然都是意外死亡鱼鼓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)该编,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)迄本,“玉大人,你說(shuō)我怎么就攤上這事课竣〖问辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵于樟,是天一觀的道長(zhǎng)公条。 經(jīng)常有香客問(wèn)我,道長(zhǎng)隔披,這世上最難降的妖魔是什么赃份? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮奢米,結(jié)果婚禮上抓韩,老公的妹妹穿的比我還像新娘。我一直安慰自己鬓长,他們只是感情好谒拴,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著涉波,像睡著了一般英上。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啤覆,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天苍日,我揣著相機(jī)與錄音,去河邊找鬼窗声。 笑死相恃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笨觅。 我是一名探鬼主播拦耐,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼耕腾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了杀糯?” 一聲冷哼從身側(cè)響起扫俺,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎固翰,沒(méi)想到半個(gè)月后狼纬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倦挂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年畸颅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片方援。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡没炒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出犯戏,到底是詐尸還是另有隱情送火,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布先匪,位于F島的核電站种吸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏呀非。R本人自食惡果不足惜坚俗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岸裙。 院中可真熱鬧猖败,春花似錦、人聲如沸降允。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剧董。三九已至幢尚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翅楼,已是汗流浹背尉剩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毅臊,地道東北人理茎。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親功蜓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361