android多渠道打包(慕课笔记)

     文章通过两种方式标记渠道:

1、修改strings.xml中的字段;

2、修改AndroidManifest.xml中<meta-data>的值;


   三个步骤:

1、在strings.xml中的<string name="channel_flag">influx</string>(用gradle打包时要注释掉这句)和

AndroidManifest.xml中的<meta-data android:value="${FLAG_VARIOUS_CHANNEL}" android:name="FLAG_CHANNEL"/>

2、在app module的build.gradle中添加脚本修改channel_flag跟FLAG_CHANNEL。


build.gradle中的代码

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "com.xxxxxxx.xxxxx"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"influx"]
    }
    signingConfigs{
        myConfig{
            storeFile file("./xxxx.jks")
            storePassword "xxxx"
            keyAlias "influx"
            keyPassword "influx"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.myConfig

            /**
             * 把app-xiaomi-release.apk改成xiaomi.apk
             */
            applicationVariants.all{
                variant->variant.outputs.each{ output->
                    def outFile=output.outputFile
                    if(outFile!=null && outFile.name.endsWith(".apk")){
                        def fileName="${variant.productFlavors[0].name}"+".apk"
                        output.outputFile=new File(outFile.parent,fileName)
                    }
                }
            }
        }
    }

    productFlavors{
        xiaomi{
            //一般写法
//            manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"xiaomi"]

            //更改strings.xml中的channel_flag为"xiaomi"
            resValue("string","channel_flag","xiaomi")    //这里是关键
        }
        baidu{
//            manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"baidu"]
            resValue("string","channel_flag","baidu")
        }
        yingyongbao{
//            manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"yingyongbao"]
        }

        //根据功能点打包,[生成的apk,包名后会追加"okhttp",但是代码中或得到的包名不变]
        okhttp{
            applicationIdSuffix "okhttp"
            resValue("string","app_name","okhttp")
        }
    }
    productFlavors.all{
        flavor->flavor.manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:name]
    }
}

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:23.4.0'
    compile 'com.android.support:recyclerview-v7:23.4.0'
    testCompile 'junit:junit:4.12'
}


3、通过命令行打包:

./gradlew  assembleRelease

./gradlew assembleDebug




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值