Android Apk 多渠道打包

什么是多渠道打包

① 渠道是国内Android平台特有的名词

② 由于Google Play在国内无法使用,因此出现了众多市场

③ 一个渠道即代表一个应用市场

④ 渠道并不是什么高大上的东西,也不高深

多渠道打包使用场景

① 应用只针对某个平台,则无需多渠道(几乎不存在)

② 只要应用提供了多种下载途径,就会用到多渠道

多渠道打包的意义

① 通过多渠道,可以更详细的统计App被下载的途径

② 通过多渠道,我们可以查看App在每个渠道上的表现

③ 通过多渠道,更有利于我们App的推广

多渠道打包原理

原理很简单,就是为我们每个平台或市场的Apk指定一个唯一的标识符,打包的时候不断地去替换这个唯一标识符。Android中我们通常在AndroidManifest.xml中为其指定,也可以在代码中指定,但一般不用。

使用友盟进行多渠道打包步骤

1. 上友盟官网注册并创建新应用,获得Appkey

2. 下载SDK并集成,推荐使用Android Studio去集成

3. 在AndroidManifest.xml中配置渠道号和Appkey

4. 在应用modulez中的build.gradle中编写多渠道脚本


介绍下Android Studio中工程几个文件的作用:

settings.gradle

project:build.gradle


module:build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "com.jackie.multichannelpackage"
        minSdkVersion 24
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true;   //突破应用方法数65535的限制
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]  //设置默认渠道号
    }

    //指定打包的类型,debug和release就够了
    buildTypes {
        release {
            minifyEnabled false   //是否启用混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            //指定签名
            signingConfig signingConfigs.release

            //指定release包的输出文件名就是渠道名
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        def fileName = "${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
    }

    //定义signingConfig.release 添加我们的签名文件配置
    signingConfigs {
        debug {}

        /**
         *为我们的release添加签名文件配置
         * 签名文件通过Build -> Generate Signed APK 来生成
         */
        release {
            storeFile file("common.jks")
            storePassword "rzq123456"
            keyAlias "qndroid"
            keyPassword "rzql123456"
        }
    }

    //多渠道支持
    productFlavors {
        xiaomi {
//            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]

            //指定资源变动,替换strings.xml中app_name的值
//            resValue "string", "app_name", "xiaomi_app"
        }

        wandoujia {
//            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]

//            resValue "string", "app_name", "wandoujia_app"
        }

        //根据功能点打出不同的包
//        okhttp {
//            applicationIdSuffix "okhttp"
//            resValue "string", "app_name", "okhttp"
//        }
//
//        jpush {
//            applicationIdSuffix "jpush"
//            resValue "string", "app_name", "jpush"
//        }
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: 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:25.0.1'
    testCompile 'junit:junit:4.12'

    //添加友盟统计库依赖
    compile 'com.umeng.analytics:analytics:latest.integration'
}

添加上面的配置后,使用gradlew命令去自动的打出所有渠道的包



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值