Android 多版本多渠道打包

美团walle官网:https://github.com/Meituan-Dianping/walle
(1)在你对应主module的build.gradle的android标签内添加相应的属性(配置多渠道信息)
productFlavors {
    //开发环境
    develop {
        buildConfigField "String", "ENV_TYPE", "\"1\""
        applicationId 'xxx'
        manifestPlaceholders = [
                app_name     : "开发",
        ]
    }
    //测试环境
    check {
        buildConfigField "String", "ENV_TYPE", "\"2\""
        applicationId 'xxx'
        manifestPlaceholders = [
                app_name     : "测试",
        ]
    }
    //生产环境
    product {
        buildConfigField "String", "ENV_TYPE", "\"3\""
        applicationId 'xxx'
        manifestPlaceholders = [
                app_name     : "xxx",
        ]
    }
}
(2)配置AndroidManifest.xml中的application label,对应上面的渠道app_name:
上面你配置了app_name 如果你不配置相应的xml是不会生效的!

android:label="${app_name}"
(3)配置项目下的build.gradle:
buildscript {
    ext.kotlin_version = '1.3.30'
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven { url 'https://jitpack.io'}
        google()
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.meituan.android.walle:plugin:1.1.6'
    }
}

allprojects {
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven { url 'https://jitpack.io'}
        google()
        jcenter()
    }
}
(4)配置app下的build.gradle 添加:

         //先使用android studio 生成一个 app.jks签名文件

//解决错误:All flavors must now belong to a named flavor dimension.

    defaultConfig {
        ...
        flavorDimensions "versionCode"
    }

//配置签名:(signingConfigs一定要在buildTypes之前,不然找不到)

    signingConfigs {
        debug{
            keyAlias 'motian'
            keyPassword '123456'
            storeFile file('../walle.jks')
            storePassword '123456'
        }
        release {
            keyAlias 'motian'
            keyPassword '123456'
            storeFile file('../walle.jks')
            storePassword '123456'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
        debug {
            minifyEnabled false
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

//添加依赖:

    //添加相应渠道的aar
    apply plugin: 'walle'

    /*多渠道的库*/
    implementation 'com.meituan.android.walle:library:1.1.6'

//配置插件walle,打包后的文件位置和信息等:

    walle {
        // 指定渠道包的输出路径
        apkOutputFolder = new File("${project.buildDir}/outputs/channels");
        // 定制渠道包的APK的文件名称
        apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
        // 渠道配置文件
        channelFile = new File("${project.getProjectDir()}/channel")
    }

//在app下创建创建channel文件,添加:

    Qh360 #360
    Yyb #应用宝
    Wdj #豌豆荚
    Lenovo #联想
    Xiaomi #小米
    Huawei #华为
    Meizhu #魅族
(5)然后去打包,就可以获得对应的包
或者:在android studio 右侧 Gradle下的项目下的package assembleDevelopDebugChannels

就可以在 build/outputs/channels 下找到生成的渠道包

Android 多版本多渠道打包_第1张图片

demo

你可能感兴趣的:(android)