步骤一:

1.在整个工程的build.gradle中添加依赖:

dependencies {
        compile 'com.mcxiaoke.gradle:packer-ng:1.0.7'
    }

2.在Module的build.gradle中配置

apply plugin: 'packer'
dependencies {
        compile 'com.mcxiaoke.gradle:packer-ng:1.0.7'
    }

 

可选项(在Module的build.gradle中配置,具体看注释

packer {
    // 是否检查Gradle配置中的signingConfig,默认不检查
    checkSigningConfig = true
    // 是否检查Gradle配置中的zipAlignEnabled,默认不检查
    checkZipAlign = true
    // 指定渠道打包输出文件名格式
    //包名-渠道名-正式环境(release)-版本名称-版本号-最终APK文件的MD5哈希值
    archiveNameFormat = '${appPkg}-${flavorName}-${buildType}-v${versionName}-${versionCode}-${fileMD5}'
    // 指定渠道打包输出目录
    archiveOutput = file(new File(project.rootProject.buildDir.path, "easyto_apks"))
   /* // 指定渠道打包需要修改的AndroidManifest文件项
    manifestMatcher = ['UMENG_CHANNEL', 'Promotion_Market']*/
    // 指定是否使用build版本号自增
    buildNumberAuto = true
    // 指定使用版本号自增的buildType,默认是全部
    buildNumberTypeMatcher = ['release', 'beta']
}
 

步骤二:

1.在gradle.properties里加入 market =markets.txt

market:是渠道名列表文件,基于项目根目录的相对路径(我这里是放置在项目的根目录下,跟gradle.properties同层)

packer-ng多渠道快速打包

2.编写渠道文件markets.txt

渠道名和注释之间用#号分割开,可以没有注释

如下:

Google_Market#Google电子市场
Hiapk_Market#安卓市场
Yingyonghui_Market#应用汇市场
ali_market#阿里云商店
Xiaomi_Market#小米市场
Yingyongbao_Market#腾讯应用宝市场
Samsung_Market#三星市场
OPPO_Market#OPPO市场
Huawei_Market#华为市场
amazon_market#亚马逊市场
Meizu_Market#魅族市场
3G_market#3G安卓市场
WanDouJia_Parter#豌豆荚
Baidu_Market#百度应用中心
360_Market#360手机助手
Taobao_Market#淘宝应用市场

注意:

packer-ng:1.0.7 要和 packer-helper:1.0.7的版本一致

最后编译:可以使用我在gradle.properties中的两句命令(Release,Debug)

Release:
./gradlew clean apkRelease -Pmarket=markets.txt
Debug:
./gradlew clean apkDebug -Pmarket=markets.txt

集成友盟多渠道打包:
 

同时满足下面两个条件才需要此配置:
// 1. Gradle版本 >= 2.14.1

// 2. Android Gradle Plugin 版本 >= 2.2.0

// 作用是只使用旧版签名,禁用V2版签名模式 v2SigningEnabled false 如果项目集成了友盟 就在程序的入口处这样写(动态的设置友盟渠道名):
// 如果没有使用PackerNg打包添加渠道,默认返回的是""
// com.mcxiaoke.packer.helper.PackerNgString market = PackerNg.getMarket(this);

// 或者使用 PackerNg.getMarket(Context,defaultValue)// 之后就可以使用了,比如友盟可以这样设置MobclickAgent. startWithConfigure( new MobclickAgent.UMAnalyticsConfig(this, APP_KAY, market, MobclickAgent.EScenarioType.E_UM_NORMAL,true));

参考友盟集成文档:

packer-ng多渠道快速打包

相关文章: