Android多渠道打包

    最近有了解到多渠道打包。这里来记录一下。
    一、美团walle

      1.首先在Project方式下的项目的app目录中加入:keystore,channel,config.json三个

这里写图片描述

keystore文件夹中放的是签名文件:.keystore

channel文本文件:(里面是渠道信息)

    meituan # 美团
    samsungapps #三星
    hiapk
    anzhi
    xiaomi # 小米
    91com
    gfan
    appchina
    nduoa
    3gcn
    mumayi
    10086com
    wostore
    189store
    lenovomm
    hicloud
    meizu
    wandou
    # Google Play
    # googleplay
    # 百度
    baidu
    #
    # 360
    360cn
    #
    # 应用宝
    myapp

config.json文件:

{
  /*
  不声明extraInfo的channel默认使用的extraInfo
  如果没有此项则没有默认extraInfo
  */
  "defaultExtraInfo": {
    "key2": "20161213",
    "key": "20161212"
  },

  /*
    strategy:
     1. ifNone (默认适用此策略) : 仅当对应channel没有extraInfo时生效
     2. always : 所有channel都生效,channel中extraInfo的key与defaultExtraInfo重复时,覆盖defaultExtraInfo中的内容。
   */

  //"defaultExtraInfoStrategy": "always",

  "channelInfoList": [
    {
      "channel": "meituan",
      // 此channel将使用自己声明的extraInfo
      /*
      此alias可以做到写入apk的channel是meituan,而打包时输出的文件名是美团
      注意:alias不声明时,walle配置apkFileNameFormat中channel就是channel,否则为alias
      */
      "alias": "美团",
      "extraInfo": {
        "buildtime": "20161212",
        "hash": "123"
      }
    },
    {
      "channel": "360cn",
      // 此channel将使用自己声明的extraInfo
      "extraInfo": {
        "key": "20161213"
      }
    },
    {
      "channel": "googleplay"
      // 此channel将使用defaultExtraInfo
    },
    {
      "channel": "xiaomi"
      // 此channel将使用defaultExtraInfo
    },
    {
      "channel": "meizu"
      // 此channel将使用defaultExtraInfo
    },
    {
      "channel": "wandoujia",
      "excludeDefaultExtraInfo": true
      //强制声明不使用defaultExtraInfo,默认false
    },
    {
      "channel": "myapp",
      "excludeDefaultExtraInfo": true,
      //强制声明不使用defaultExtraInfo,默认false
      "extraInfo": {
        // 尽管exclude default,但也可以继续写入自己的。
        "key": "20161212"
      }
    }
  ]
}

》》》接下来是需要在项目根目录的build.gradle中添加walle gradle插件的依赖:

dependencies{

        classpath 'com.meituan.android.walle:plugin:1.1.5'

    }

如下图:

这里写图片描述

》》》然后需要在app的build.gradle中 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR:

    apply plugin: 'walle'
    dependencies {
        compile 'com.meituan.android.walle:library:1.1.5'
    }

build.gradle详细内容:

apply plugin: 'com.android.application'
    apply plugin: 'walle'

    android {
    compileSdkVersion 25
    buildToolsVersion "27.0.2"
    defaultConfig {
        applicationId "com.example.hello"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    //签名 引用位置
    signingConfigs {
        sankuai {
            storeFile file("keystore/meituan-debug.keystore")
            storePassword "1234567"
            keyAlias "meituan"
            keyPassword "12345678"
        }
    }

    //调用签名设置
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.sankuai
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            signingConfig signingConfigs.sankuai
        }
    }

    //支持databinding
    dataBinding{
        enabled true
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:recyclerview-v7:25.3.1'

    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
    compile 'com.squareup.retrofit2:converter-scalars:2.0.2'
    compile 'io.reactivex:rxandroid:1.1.0'
    compile 'io.reactivex:rxjava:1.1.0'

    //多渠道打包
    compile 'com.meituan.android.walle:library:1.1.5'

}


walle {
    // 指定渠道包的输出路径
    apkOutputFolder = new File("${project.buildDir}/outputs/channels")
    apkFileNameFormat = '${appName}-${channel}-v${versionName}-${versionCode}-${buildTime}.apk'
    //configFile与channelFile两者必须存在一个,否则无法生成渠道包。两者都存在时优先执行configFile
    channelFile = new File("${project.getProjectDir()}/channel")
}

然后在项目根目录下,在studio的Terminal执行打包命令:gradlew clean assembleReleaseChannels

这里写图片描述

执行到最后显示successfully

这里写图片描述

最终的结果:(到指定渠道包的输出路径下)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值