Android多渠道打包神器ProductFlavor详解

目录
  • 一.什么是多渠道打包
    • 1.多版本
    • 2.多环境
    • 3.多渠道
  • 二.多渠道打包的方式(ProductFlavor&&多渠道打包插件)
    • 1.ProductFlavor
      • 1.1 如何是使用ProductFlavor
      • 1.2 如何是使用ProductFlavor加载apk包
      • 1.3 该如何获取不同渠道包的信息
      • 1.4 使用ProductFlavor加载apk包的优缺点
    • 2.多渠道打包插件

一.什么是多渠道打包

  在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的各种下载量、用户数等关键数据。

多渠道打包的原理就是为我们每个平台或者市场发布的apk指定一个唯一的标识符。通过这个标识符就可以知道被下载的apk是在哪个平台市场下载的。

1.多版本

基于buildTypes

(1) debug:调试版本,无混淆

(2) release:发布版本,有混淆、压缩

2.多环境

基于productFlavors

(1)develop:开发环境,开发和自测时使用

(2)check:测试环境,克隆一份生产环境的配置,在这里测试通过后,再发布到生产环境。之所以没命名为test是因为在gradle编译时:ProductFlavornamescannotstartwith'test'

(3)product:生产环境,正式提供服务的。

3.多渠道

基于Android新的应用签名方案APKSignatureSchemev2中的APKSigningBlock区块

我这里使用的是美团封装的Walle库。使用Walle库请确保你的AndroidGradle插件版本在2.2.0以上。

为什么不直接使用productFlavors来打包多渠道?因为productFlavors打多渠道包太慢了,打30个包差不多十几分钟,无法忍受!

为什么不使用美团之前基于META-INF进行渠道标识的方案?因为Android7.0之后的这种黑科技已经失效了!

二.多渠道打包的方式(ProductFlavor&&多渠道打包插件)

1.ProductFlavor

Android基于 Gradle开发的一个插件里面的产品配置构建“变种”制作渠道包。

Gradle开发的插件是哪里来的???

1.首先项目有两层build.gradle文件:

  • build.gradle(本项目名称) 最外层的build.gradle文件
  • build.gradle(:app) app目录下build.gradle文件

在顶层build.gradle文件中添加依赖

使用Gradle插件:

上面是导入多个插件使用plugins;

plugins {
    id 'com.android.application'
}

导入单个可以使用

apply plugin:'com.android.application'

就这样我们就可以在 app目录下build.gradle文件中的android节点使用ProductFlavor。

1.1 如何是使用ProductFlavor

    flavorDimensions "default"
    //方式1:(适用于多数据)
    //读取channel.txt渠道文件 创建flavor
    file('channel.txt').readLines().each {
        channel->
            productFlavors.create(channel,{
                dimension "default"
                //替换AndroidManifest中的值
                manifestPlaceholders=[channel1:channel]
            })
    }
    //方式2:(比较常用:适用于少量)
    productFlavors{
            ywj{
            }
            wyw{
            }
        }

访问的文件如图所示:

他会生成多少个“变种”呢???

是根据你的productFlavors中的个数与buildTypes中的类型个数(一般是release+debug)

我这里没有写debug但是下面生成了对应的“变种”:注意 buildType 类型的debug是默认的,不写也会默认存在。

这个按字母排序的。

1.2 如何是使用ProductFlavor加载apk包

使用Gradle工具栏下的Tasks中的build中的工具加载

点击assembleRelesase试试水,看看发生了什么?

1.3 该如何获取不同渠道包的信息

</activity>
        <meta-data android:name="CHANNEL_VALUE" android:value="${channel1}"/>
    </application>
</manifest>

再不同的apk包中可以访问不同的信息。关于怎么访问AndroidManifest.xml里的数据会在以后进行学习!!!

1.4 使用ProductFlavor加载apk包的优缺点

优点:官方,可配置性高

缺点:每个渠道包需要执行完整的构建流程,非常的慢!!!

2.多渠道打包插件

这个方法很好的弥补了上一个打包方式的缺点。此时要多加一个依赖。底下目前展示的第二个依赖不可用,不过不要紧。你可以使用美团(walle)、腾讯(VasDolly)...等的多渠道打包插件

//引入插件
apply plugin: 'com.enjoy.channel'
channel{
    //基准包
    baseApk "${buildDir}/outputs/apk/release/app-release.apk"
    //输出目录
    outDir "${buildDir}/outputs/channel"
    //渠道信息
    channelFile "${projectDir}/channel.txt"
}

如图所示:根据上面设置的路径输出。并且生成一个基准包后,输出不同渠道包的速度变快了许多。当你再在channel.txt文件中再多加些数据,一样也会很快的输出。

到此这篇关于Android多渠道打包神器ProductFlavor详解的文章就介绍到这了,更多相关Android ProductFlavor内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android几种多渠道打包的步骤详解

    1.什么是多渠道打包 在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包.在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的各种. 2.几种打包方式 友盟 UMeng Android Studio自带 美团 Walle 3.开始使用 3.1 友盟UMeng 第一步:在AndroidManifest中添加 <meta-data android:name="UMENG_CHANNEL" android:val

  • Android多渠道打包总结(推荐)

    多渠道打包一般应用于向不同应用市场提交app后用来统计不同渠道下载量等一些信息.一般集成友盟sdk(同类型的sdk还有 诸葛io,量江湖等sdk),不同sdk集成方式大同小异,可去各自官网查看详细文档.本文以友盟sdk为例. 渠道:各种应用市场比如 华为应用市场,小米应用市场, 积分墙(花钱的推广渠道)等. 一,android自带gradle打包 首先集成友盟sdk,集成方式参照友盟sdk集成,在项目的build.gradle文件中加入以下代码 productFlavors { yingyong

  • Android多渠道打包时获取当前渠道的方法

    作为Android app,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记一下. 首先,分渠道打包很简单. 在项目的build.gradle里设置 android { ... productFlavors { home_site { dimension "money" manifestPlaceholders = [UMENG_CHANNEL_VALUE: &q

  • Android Studio多渠道打包套路

    说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的.按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值: <meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/> 上面的value值Channel_ID就是渠道标识.我们的期望的就是在编译时候这个值能够自动变化以满足区

  • Android 多渠道打包详细

    目录 Android 多渠道打包 一.多渠道配置 二.打包 1.多渠道配置 2.命令行打包 2.编译器打包 Android 多渠道打包 一.多渠道配置 多渠道配置: 不同渠道不同签名配置 不同渠道不同资源文件配置 不同渠道不同依赖配置 二.打包 打包可分为:编译器打包.命令行打包.IDE 打包 1.多渠道配置 (1)可写在主模块(app)的 build.gradle 下 android { compileSdkVersion 29 buildToolsVersion "29.0.3"

  • Android Studio一直停留在MyApplication:syncing该怎么解决

    在我们打开Android Studio时,可能出现一直停留在MyApplication:syncing的情况(下图的情况),我在此给出解决办法 注意看你的绿色框框位置的的zip是什么样的,在下面的链接中找到一样的压缩包下载下来. 注意,一定要下载相同的!! 链接:点这里 然后打开电脑C盘 打开C:\Users\用户名\.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx这个位置的文件夹 你的这个位置可能没有这些文件,应该

  • Android ProductFlavor的使用详解

    目录 前言 productFlavors flavorDimensions多纬度 前言 最近一直在学习Android Gradle 相关的知识点,今天刚好看到了 ProductFlavor 这节,ProductFlavor 表示产品风味,Google 相关的文档可以看 Android developers ProductFlavor,产品风味这词起的还是挺有意思的,乍看上去我一时半会也不理解这是干嘛的,如果说是用于区分打包的那么我 gradle 文件里的 buildTypes 不是就已经够用了吗

  • Android 多渠道打包进阶版

    目录 Android 多渠道打包进阶版 1.资源文件配置 2.依赖配置 3.签名配置 上一篇文章链接//www.jb51.net/article/221446.htm Android 多渠道打包进阶版 文章开始前,先看一下下面这种情况: android { productFlavors { //100 个多渠道配置 } //多渠道签名的配置 signingConfigs { xiaomi { storeFile file("../xiaomi.keystore") storePassw

  • 关于Android多渠道打包的进阶知识

    多渠道打包进阶知识 文章开始前,先看一下下面这种情况: android { productFlavors { //100 个多渠道配置 } //多渠道签名的配置 signingConfigs { xiaomi { storeFile file("../xiaomi.keystore") storePassword 'xiaomi' keyAlias 'xiaomi' keyPassword 'xiaomi' v1SigningEnabled true v2SigningEnabled

  • Android多渠道打包神器ProductFlavor详解

    目录 一.什么是多渠道打包 1.多版本 2.多环境 3.多渠道 二.多渠道打包的方式(ProductFlavor&&多渠道打包插件) 1.ProductFlavor 1.1 如何是使用ProductFlavor 1.2 如何是使用ProductFlavor加载apk包 1.3 该如何获取不同渠道包的信息 1.4 使用ProductFlavor加载apk包的优缺点 2.多渠道打包插件 一.什么是多渠道打包 在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了A

  • Android 7.0中新签名对多渠道打包的影响详解

    老签名多渠道打包原理 前言 由于Android7.0发布了新的签名机制,加强了签名的加固,导致在新的签名机制下无法通过美团式的方式再继续打多渠道包了.不过在说新的签名机制对打包方案的 影响和为什么会影响我们原有的打包机制之前,需要先简单理解下打包原理和签名在整个打包过程中的作用. Android打包流程 Android打包过程大致如图所示,整个流程就是将Java代码,资源文件以及第三方库整合成一个Apk文件,并对整合后的文件进行签名和优化对齐.整个过程可以简 单分为以下几个步骤: 资源预编译 为

  • Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解

    随着工程越来越复杂,项目越来越多,以及平台的迁移(我最近就迁了2回),还有各大市场的发布,自动化编译android项目的需求越来越强烈,后面如果考虑做持续集成的话,会更加强烈.    经过不断的尝试,在ubuntu环境下,以花界为例,我将一步一步演示如何使用命令行,使用ant编译android项目,打包多渠道APK.    要点:    (1). 编译android的命令使用    (2). ant基本应用    (3). 多项目如何编译(包含android library)    (4). 如

  • RN在Android打包发布App(详解)

    1-:生成一个签名密钥 你可以用keytool命令生成一个私有密钥.在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令.在mac上,直接进入项目根目录输入一下命令: $ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2

  • Android pdf viewer在android studio应用问题说明详解

    之前一直是做.NET开发的,最近需要弄一个新闻app,能力有限,只能借助HTML5 WebAPP+android studio来完成这项工作. android studio主要用WebView来加载发布好的WebApp,打包生产APP. 其中由于显示一些pdf文档,所以研究了一下,记录一下心得,同时也希望帮助到新手们. android 显示网络pdf,基本原理:先将pdf文件通过DownloadManager下载到手机sdk某个文件夹中,然后通过android-pdf-viewer插件进行显示.

  • Android Parcelable接口使用方法详解

     Android Parcelable接口使用方法详解 1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR, which is an object implementin

  • Android Google AutoService框架使用详解

    目录 AutoService的使用 关于SPI SPI示例 APT技术 AutoService源码 AutoService源码分析 一般我们用它来自动帮我们注册APT文件(全称是Annotation Process Tool,或者叫注解处理器,AbstractProcessor的实现).很多生成SPI文件的框架也是抄袭它的源码,可见它的作用还不小. APT其实就是基于SPI一个工具,是JDK留给开发者的一个在编译前处理注解的接口.APT也是SPI的一个应用.关于SPI和APT下文会详细讲到. 先

  • kotlin android extensions 插件实现示例详解

    目录 前言 原理浅析 总体结构 源码分析 插件入口 配置编译器插件传参 编译器插件接收参数 注册各种Extension IrGenerationExtension ExpressionCodegenExtension StorageComponentContainerContributor ClassBuilderInterceptorExtension PackageFragmentProviderExtension 总结 前言 kotlin-android-extensions 插件是 Ko

  • Android 帧动画的实例详解

    Android 帧动画的实例详解 对于 Android 帧动画 大体上可以理解成 一张张图片 按一定顺序切换, 这样当连续几张图是一组动画时,就可以连起来了看成是一个小电影,你懂得 好得,比就装到这里,下面开始进入正题,由于产品需求 需要做一个 声音喇叭动态切换的样式,我特么第一就想到是帧动画切换,然后就百度了一些资料,发现 真的, 现在这个网上太多的资料是 copy粘贴过来的, 一错全错,对于这种情况我只想说,made,一群垃圾, 所以今天我将带你们走进Android 正确帧动画地址. 第一步

随机推荐