基于友盟统计的多渠道打包。

原文地址:https://www.jianshu.com/p/b2e3a2f1a396

一、申请 友盟的 账号,具体请查看友盟相关

       如下是我申请的账号:

二、AndroidManifest.xml文件添加配置:

1、  权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
2、设置value:
<!--value的值填写你在友盟后台申请的应用Appkey-->
<meta-data android:value="5e1d3xxxxxxfb25e55000c01" android:name="UMENG_APPKEY"/>
<!--value的值填写渠道名称,例如yingyongbao。这里设置动态渠道名称变量,不要修改-->
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>

 注意:第一个value这里 修改为你自己申请到的 友盟 的那个 值。

3、引用module

在项目 的 build.gradle 的  repositories  里添加    

maven { url 'https://dl.bintray.com/umsdk/release' }   一共2处 截图如下:

在 app的 build.gradle 引入 友盟的 jar包

implementation  'com.umeng.umsdk:analytics:8.0.0'
 implementation  'com.umeng.umsdk:common:2.0.0'

截图如下:

自定义 Application 。并在oncreate里面初始化:

UMConfigure.init(this,1, "demo"); 具体参数 参考友盟

截图:

三、开始配置多渠道打包相关。

    1、 在app的build.gradle 里 android 节点下 配置

flavorDimensions "default"
productFlavors {
    web {}
    baidu {}
    c360 {}
    qq {}
    wandoujia {}
}
productFlavors.all {
    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
//自定义APK名称,多渠道打包
android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        variant.productFlavors.each { flavor ->
            def project = "cpm"
            def separator = "_"
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def versionName = variant.versionName
            def versionCode = variant.versionCode
            def date = new Date()
            def formattedDate = date.format('yyyyMMdd')
            def apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + ".apk"
            if (buildType == "release") {
                apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + separator + formattedDate + ".apk"
            }
            output.outputFileName = apkName
        }
    }
}

2、在 app的 build.gradle  里面 添加 Release的签名文件配置。

参考网址:百度

  截图如下:

基本配置工作 已经完成了。然后

点击 Gradle --->项目---->app---->build-----> assembleRelease 即可生成多渠道包。

截图如下:

最后 如果底下 提示成功。即可在 app --->build---->outputs--->apk—baidu/360/wandoujai等文件夹下查看到具体的多渠道包。

如图:

如下是demo地址:https://download.csdn.net/download/a872822645/12105985

 

 

 

友盟渠道打包工具主要是提供基本的通过工程源码打包的功能。 常见错误见这里目前不支持的Apk特性见这里(可能会导致发布的SDK产生严重bug)。 Google 现在已经发布了最新的构建系统(New Building System) , 在 Android Studio 中已经支持了最新的 构建系统,如果开发者已经迁移,可以使用新的系统方面的生成渠道包,这是取代渠道打包工具的最佳方式。 1. 工程结构 工程结构图 : - CommonTools 共用的工具类,包括对 `Apktool` , `Jarsigner` , `zipalign` 的封装 - UIControls_35   共用的UI类,对大部分控件的样式都是在这里设置的 - UmengMarket  Marekt 组件,现在还没有实现 - UmengPackage 打包组件 - UmengTools 工程主要UI,管理 UmengMarket, UmengPackage, UmengTools 三个组件 - UmengWidget 小工具组件,目前仅有解包分析的功能 打包工具组件: - Source - Builder - ApkBuilder.cs     通过 APK 打包的 Builder 实现                    - Builder.cs            抽象 Builder 类,提供打包的主要逻辑                    - SourceBuilder.cs通过源码打包的 Builder 实现 (目前代码还没有实现)          - Worker.cs 打包过程对外接口 3. 打包流程 V2.0 版本仅实现了通过 .apk 打包的方式,本质上对  apk 文件进行反编译,修改 AndroidManifest.xml 文件后,再重新打包,我们使用的工具是开源的拆包工具 Apktool 将  apktool  添加到当前 process 的环境变量 执行 apktool d --no-src -f xxxx.apk temp 拆解apk 替换或者添加 AndroidManifest.xml 中的 友盟channel 执行apktool b temp  unsigned.apk 重新打包apk 执行 SignApk.jar 生成签名后的 apk 文件 执行 zipAlign 生成对齐优化后的 apk 文件 回到 3 替换新的渠道 完成打包 使用  JarSigner.jar 给 Apk 签名, SignApk.jar  文件是我们修改过的 apk 签名工具,实现了和 ADT 中一样的签名方式,使用如下: Usage: signapk file.{keystore} keystore_password key_entry key_password input.apk output.apk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值