关闭

Gradle实现的两种简单的多渠道打包方法

标签: Android多渠道打包Gradle多渠道打包友盟多渠道打包productFlavors
55253人阅读 评论(29) 收藏 举报
分类:

本来计划今天发Android的官方技术文档的翻译——《Gradle插件用户指南》的第五章的,不过由于昨天晚上没译完,还差几段落,所以只好推后了。

今天就说一下使用Gradle进行类似友盟这样的多渠道打包的方法吧。

本文原创,转载请注意在CSDN上的出处:

http://blog.csdn.net/maosidiaoxian/article/details/42000913

目前我掌握的方法有两种,都非常简单,用的都是Gradle Android插件里的productFlavors。

以友盟的多渠道打包为例,假设我们需要打包出如下渠道:UMENG, WANDOUJIA, YINGYONGBAO。

第一种方法,是需要创建文件的。

我们在写完我们的代码之后,在app/src下面,分别创建和main同级目录的文件夹umeng, wandoujia, yingyongbao,这三个文件夹里面都各只有一个AndroidManifest.xml文件,文件只需要如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.package.name">
    <application>

          <meta-data android:name="UMENG_CHANNEL" android:value="UMENG"/>

    </application>
</manifest>
注意,上面的value的值要和你的渠道名所对应。比如wandoujia里面要对应为你豌豆荚上的渠道名(如WANDOUJAI)。

然后在你的build.gradle的android{}节点里面,添加productFlavors节点,代码如下:

android {
    // 这里是你的其他配置

    productFlavors{
        umeng{  }
        wandoujai {  }
        yingyongbao{  }
    }
    // 你的其他配置
}
注意这里的flavors的名字要和你的文件夹的名字对应。这样配置之后,构建的就是多渠道的APK了。


第二种方法,不用创建那些文件,它使用的是Gradle Android插件里的另一个功能,manifestPlaceholders。

在这种方法中,你只需要在AndroidManifest.xml中,对友盟的渠道进行这样配置:

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

然后同样使用productFlavors,不过这时它的配置是这样的:

android {
    // 你的其他配置代码

    productFlavors {
        yingyongbao {
            manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]
        }
        umeng {
            manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]
        }
        wandoujia {
            manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]
        }

    }
    // 你的其他配置代码
}

在上面当中,我们也可以指定一个默认的渠道名,如果需要的话。指定默认的值是在defaultConfig节点当中添加如下内容:

        manifestPlaceholders = [ CHANNEL_NAME:"Unspecified"]
这里的Unspecified换成你实际上的默认的渠道名。

使用manifestPlaceholders的这种配置,同样适用于manifest的其他配置。比如你需要在不同渠道发布的apk里面,指定不同的启动Activity。比如在豌豆荚里面发布的,启动的Activity显示的是豌豆荚首发的界面,应用宝里面启动的是应用宝首发的界面(哈哈,有点坏),你就可以对你的activity的值使用${activity_name}的方式,然后在productFlavors里面配置这个${activity_name}的值。


本文原创,转载请注明CSDN博客上的出处:

http://blog.csdn.net/maosidiaoxian/article/details/42000913

或作者:Geek_Soledad

19
2
查看评论

使用gradle编译打包java项目

本文介绍使用gradle编译打包java项目,java项目仅仅为了演示,为了使用gradle脚本创建一个可执行的jar文件,即可以使用java命令直接执行,如:java –jar jarfile.jar。详细介绍脚本中常用元素,一目了然。
  • neweastsun
  • neweastsun
  • 2016-09-24 16:51
  • 10006

使用gradle打包jar包

最近用android studio来做android开发的IDE,它是使用gradle来构建的,于是开始学习gradle. 现在有一个项目,里面有一个android-library的模块。我想在做release的时候,把这个模块中我写的代码编译并打包成jar包,并且和依赖的jar包拷贝出来,但and...
  • maosidiaoxian
  • maosidiaoxian
  • 2014-04-25 10:32
  • 59482

Gradle编译打包小结

以前用Eclipse打包,比较笨,右键导出签名 现在一直是用的Android Studio来开发 用Gradle编译打包非常方便 笔者整理的平时编译打包的配置,记录一下,避免遗忘 1.自动签名 可以直接写在build.gradle里,如:signingConfigs { ...
  • byhook
  • byhook
  • 2016-07-12 20:58
  • 3388

Gradle学习笔记(基础,打包,多渠道打包,adb安装apk

Gradle学习笔记 ( 基础、打包、多渠道打包、adb安装apk) 版权声明:本文为博主原创文章,未经博主允许不得转载。 Gradle学习笔记 ( 基础、打包、多渠道打包、adb安装apk) By 吴思博 参考文献 http://stormzhang.com/devtoo...
  • qq_35114086
  • qq_35114086
  • 2016-10-29 15:59
  • 2878

Gradle多渠道打包

配置Gradle环境变量如何配置Gradle环境变量,请参考我的另一篇博客:Mac下配置Gradle环境变量 Windows用户配置Gradle环境变量应该也差不多,在这里就不介绍了如果电脑上不单独配置Gradle环境也没关系,因为Android Studio使用了Gradle Wrapper,它...
  • u014005316
  • u014005316
  • 2017-02-19 12:22
  • 560

android studio gradle 多版本多apk打包(打包系列教程之五)

通过上一篇gradle多渠道打包的介绍后,本篇我们就来介绍一下多版本apk的打包。在项目的开发过程,有可能我们会有需要打包多种版本apk的需求,比如当测试部门在测试需要我们提供两种当前正在开发的apk的版本,而且这两种版本都必须安装在同一台手机上,这时我们就需要在打包时打出两种不同包名的apk去满足...
  • javazejian
  • javazejian
  • 2016-02-27 23:40
  • 16342

gradle学习笔记,常用命令,多渠道打包等

本文整理自: http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/ http://stormzhang.com/devtools/2015/01/05/android-studio-tutorial5/ ht...
  • guoxiaolongonly
  • guoxiaolongonly
  • 2017-07-06 17:44
  • 1309

Gradle 的一个打包脚本

运行脚本命令: gradle -b package.gradle update package.gradle内容: apply plugin: 'java' def rootFilePath = "build/zip/LockerTheme/"; def d...
  • zhjali123
  • zhjali123
  • 2017-01-20 16:03
  • 422

gradle打包简介

一、gradle特点ANT是最早的构建工具,基于idea,好象是2000年有的,当时是最流行java构建工具,不过它的XML脚本编写格式让XML文件特别大。对工程构建过程中的过程控制特别好。 Maven它是用来给Ant补坑的,Maven第一次支持了从网络上下载的功能,仍然采用xml作为配置文件格式...
  • killer991684069
  • killer991684069
  • 2016-06-27 11:08
  • 849

gradle打包的使用

May 19 2013 用Gradle 构建你的android程序 前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目的用户指南全部...
  • u012157513
  • u012157513
  • 2015-04-22 11:07
  • 1441
    个人资料
    • 访问:2169968次
    • 积分:14471
    • 等级:
    • 排名:第996名
    • 原创:140篇
    • 转载:0篇
    • 译文:92篇
    • 评论:891条
    欢迎访问我的博客
    个人博客:http://githang.com
    QQ群
    博客专栏
    最新评论
    我的公众号
    微信关注我的公众号
    站长统计