Gradle多渠道打包

为何要多渠道打包

简单来说就是为了统计apk在不同的应用市场上下载使用的情况。

如果我们在不同的应用市场(例如:应用宝、豌豆荚、小米),上传的是同一个apk包,那么将无法统计哪一个应用市场的下载量大,使用的活跃度高

专业地讲:统计和分析流量来源、内容使用、用户属性和行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。

单渠道打包

使用友盟统计和分析流量来源

通过集成友盟sdk实现渠道统计,具体集成方法可以看集成文档

###实现单渠道打包
友盟通过在清单文件里配置下面的两句话,来实现渠道统计

<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>

YOUR_APP_KEY:YOUR_APP_KEY 替换为您在友盟后台申请的应用Appkey
Channel ID:就是不同渠道的ID,例如可以写入Wandoujia

你如果想打一个Wandoujia的apk,那么清单文件要这样配置

<meta-data android:value="Yfgjfdgjofdgjkdfgd" android:name="UMENG_APPKEY"/>
<meta-data android:value="Wandoujia" android:name="UMENG_CHANNEL"/>

配置好之后,像往常一样点击“build—generate sign apk”,就可以完成“Wandoujia”这个渠道的打包apk了,至此完成了一个单渠道打包

如果你想再次打一个“小米应用市场”的apk包,那么只需要清单文件里的Channel ID改为“xiaomi”即可,然后点击“build—generate sign apk”,就可以完成小米渠道打包。

这样我们通过友盟的后台管理,就可以看到有几个用户是通过豌豆荚下载的apk,有几个是通过小米应用市场下载的apk,以及他们的使用apk的其他更多信息。
###问题来了
在这里我们看一下集成文档里的这句话

Q:如何添加渠道?

A:一个包中只能添加一个渠道,多个渠道需要打多个包。开发者新增渠道需要在工程manifest中或者activity中调用接口添加我们的渠道信息,友盟后台没有添加渠道的地方。您可以使用Gradle实现多渠道打包。

说明这段话就是说,你必须每次只能打包一个渠道的apk,像上面说的“豌豆荚”和“小米”,你需要完成两次单渠道打包,如果你有10个渠道呢,100个渠道呢?岂不累死了!OK,使用Gradle实现多渠道打包,即:一次打包N个渠道的apk包
##多渠道打包
###1.修改清单文件

<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>

2. 在app.gradle配置以下的内容,这是一个完整的文件

apply plugin: 'com.android.application'
android {
//★签名配置
    signingConfigs {
        debug {

        }
        //在release里配置好信息
        release {
            keyAlias 'q'
            keyPassword 'qqqqqq'
            storeFile file('/Users/apple/AndroidStudioProjects/qqq.jks')
            storePassword 'qqqqqq'
        }
    }
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.example.apple.dabaodemo"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
// ★构建类型
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
            minifyEnabled false
        }
        release {
            minifyEnabled true//打开混淆
            zipAlignEnabled true//zipAlign优化
            shrinkResources true  //去掉资源文件目录下没有用到的图片等资源文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
//    ★配置apk信息
//    variant=type+flavor    例如 2个type和4个flavor,最终为8个variant
    productFlavors {
        xiaomi {
            manifestPlaceholders=[UMENG_CHANNEL_VALUE:name]//这里的name就是xiaomi
        }
        huawei {
            manifestPlaceholders=[UMENG_CHANNEL_VALUE:name]//这里的name就是huawei
        }
        baidu {
            manifestPlaceholders=[UMENG_CHANNEL_VALUE:name]
        }

        yingyongbao {
            manifestPlaceholders=[UMENG_CHANNEL_VALUE:name]
        }

    }
}


dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    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.umeng.analytics:analytics:latest.integration'
}

其实androidstudio给我们准备好了可视化编辑窗口,点击File—ProjectStructure,就可以依次地编辑上述内容

3. 开始打包了

接下来,在终端先运行 ./gadlew clean,再运行./gradlew assembleRelease,就打包成功了(本来想详细说说gradle的一些命令的,但是没时间写了,先记录这么多了)

可参考

多渠道打包
https://blog.csdn.net/mynameishuangshuai/article/details/51783303
https://blog.csdn.net/javazejian/article/details/50750457

Android 使用Gradle实现多渠道打包,同项目不同包名、Logo、名字、主题等
https://blog.csdn.net/lvkaixuan/article/details/83617091

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值