Android多渠道打包

每當app發(fā)布新版本時驱负,需要發(fā)布到不同的應(yīng)用市場嗦玖,比如百度、豌豆莢等跃脊,為了統(tǒng)計app在每個市場的下載量宇挫、安裝量等,需要給app打上唯一標識酪术,美團的解決方案器瘪,以下是用Android Studio實現(xiàn)這一功能翠储。

一、在AndroidManifest.xml里設(shè)置動態(tài)渠道變量

meta-data放在application下橡疼,上面的value值就是區(qū)分每個市場的標識援所。

private String getManifestChannel(Context context) {
        try {
            PackageManager pm = context.getPackageManager();
            ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
            return appInfo.metaData.getString("channel");
        } catch (PackageManager.NameNotFoundException ignored) {
        }
        return "";
    }

通過上面的代碼即可獲取渠道標識。

二欣除、在build.gradle文件中配置productFlavors

productFlavors {
        xiaomi {
            manifestPlaceholders = [channel: "xiaomi"]
        }
        baidu {
            manifestPlaceholders = [channel: "baidu"]
        }
        wandoujia {
            manifestPlaceholders = [channel: "wandoujia"]
        }
    }

或者

productFlavors {
        xiaomi {}
        baidu {}
        wandoujia {}
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [channel: name]
    }

三住拭、執(zhí)行Build->Generate Signed APK

到下圖操作的時候,全選渠道历帚,然后點擊finish

選擇渠道
運行結(jié)果

如果要自定義apk名稱滔岳,可以在build.gradle中配置如下代碼

buildTypes {
        //正式apk
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // 自定義輸出配置
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 輸出apk名稱為app_v1.0_baidu.apk
                        def fileName = "app_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
        //測試apk
        debugConfig {
            // 自定義輸出配置
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 輸出apk名稱為app_v1.0_baidu.apk
                        def fileName = "app_debug_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
    }
運行結(jié)果

如果需要為不同渠道定制不同的資源,如圖片抹缕、文字信息等

右擊項目->新建Android resource directory,選擇資源保存的文件夾墨辛,如下圖所示:

選擇資源文件夾

把工程的查看文件模式切換為Project(一般我們是使用Android文件模式的)

切換Android文件模式為Project
把資源文件復(fù)制到對應(yīng)渠道

重新打包即可卓研。

如果App內(nèi)部有優(yōu)先跳轉(zhuǎn)到所發(fā)渠道的應(yīng)用市場評價這個功能,那么就需要給不同的渠道配置不同的渠道信息睹簇,比如配置不同渠道的包名奏赘,則可以在build.gradle中自定義渠道包名屬性。

productFlavors {
        xiaomi {
            buildConfigField "String", "CHANNEL_PACKAGE", "\"" + "com.xiaomi.market" + "\""
        }
        baidu {
            buildConfigField "String", "CHANNEL_PACKAGE", "\"" + "com.baidu.appsearch" + "\""
        }
        wandoujia {
            buildConfigField "String", "CHANNEL_PACKAGE", "\"" + "com.wandoujia.phoenix2" + "\""
        }
    }

通過Java代碼BuildConfig.CHANNEL_PACKAGE獲取太惠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磨淌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凿渊,更是在濱河造成了極大的恐慌梁只,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埃脏,死亡現(xiàn)場離奇詭異搪锣,居然都是意外死亡,警方通過查閱死者的電腦和手機彩掐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門构舟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人堵幽,你說我怎么就攤上這事狗超。” “怎么了朴下?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵努咐,是天一觀的道長。 經(jīng)常有香客問我殴胧,道長麦撵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮免胃,結(jié)果婚禮上音五,老公的妹妹穿的比我還像新娘。我一直安慰自己羔沙,他們只是感情好躺涝,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扼雏,像睡著了一般坚嗜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诗充,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天苍蔬,我揣著相機與錄音,去河邊找鬼蝴蜓。 笑死碟绑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的茎匠。 我是一名探鬼主播格仲,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诵冒!你這毒婦竟也來了凯肋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤汽馋,失蹤者是張志新(化名)和其女友劉穎侮东,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豹芯,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡苗桂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了告组。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煤伟。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖木缝,靈堂內(nèi)的尸體忽然破棺而出便锨,到底是詐尸還是另有隱情,我是刑警寧澤我碟,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布放案,位于F島的核電站,受9級特大地震影響矫俺,放射性物質(zhì)發(fā)生泄漏吱殉。R本人自食惡果不足惜掸冤,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望友雳。 院中可真熱鬧稿湿,春花似錦、人聲如沸押赊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽流礁。三九已至涕俗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間神帅,已是汗流浹背再姑。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留找御,地道東北人元镀。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像萎坷,于是被迫代替她去往敵國和親凹联。 傳聞我的和親對象是個殘疾皇子沐兰,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容