使用gradle多渠道打包

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

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

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

[plain] view
plain
copy

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="your.package.name">
  3. <application>
  4. <meta-data android:name="UMENG_CHANNEL" android:value="UMENG"/>
  5. </application>
  6. </manifest>

注意,上面的value的值要和你的渠道名所相应。比方wandoujia里面要相应为你豌豆荚上的渠道名(如WANDOUJAI)。

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

[plain] view
plain
copy

  1. android {
  2. // 这里是你的其它配置
  3. productFlavors{
  4. umeng{  }
  5. wandoujai {  }
  6. yingyongbao{  }
  7. }
  8. // 你的其它配置
  9. }

注意这里的flavors的名字要和你的目录的名字相应。这样配置之后,构建的就是多渠道的APK了。

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

在这样的方法中。你仅仅须要在AndroidManifest.xml中。对友盟的渠道进行这样配置:

[plain] view
plain
copy

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

然后相同使用productFlavors。只是这时它的配置是这种:

[plain] view
plain
copy

  1. android {
  2. // 你的其它配置代码
  3. productFlavors {
  4. yingyongbao {
  5. manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]
  6. }
  7. umeng {
  8. manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]
  9. }
  10. wandoujia {
  11. manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]
  12. }
  13. }
  14. // 你的其它配置代码
  15. }

在上面其中。我们也能够指定一个默认的渠道名。假设须要的话。指定默认的值是在defaultConfig节点其中加入例如以下内容:

[plain] view
plain
copy

  1. manifestPlaceholders = [ CHANNEL_NAME:"Unspecified"]

这里的Unspecified换成你实际上的默认的渠道名。

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

时间: 2024-10-12 19:25:41

使用gradle多渠道打包的相关文章

厦门之旅第一篇Gradle多渠道打包(动态设定App名称,应用图标,背景图片,状态栏颜色)

我不是诗人,写不出厦门的美:我不是歌手,唱不出厦门的情:我不是画家,画不出厦门的景. 我只是一名程序员,我只能用我的眼,我的心去看去感受,那久违的海风吹拂着脸颊,好似内心那一份烦躁与沉重也随着海风飘向了远方 . . . . . . 一.Gradle多渠道打包之缘由 时间要追溯到两年前,当时我还在使用 eclipse 开发工具.兄弟事业部有款产品需要封包(使用webview打包成app),并提出了相关的需求: 针对不同商家地址(webview加载url),App名称,应用图标,欢迎页背景,状态栏颜

Android Studio之Gradle多渠道打包

Android Studio之Gradle多渠道打包 由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这事就简单了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID&qu

【转】Android Studio系列教程六--Gradle多渠道打包

原文链接:http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ 由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_

Android Studio系列教程六--Gradle多渠道打包

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" /> 里面的Channel_ID就是渠

Android Studio + gradle多渠道打包

通过工具栏的Build->Build Apk 好像只能打包第一个Module(eclipse里面是Project的概念),怎么多渠道打包呢?目前好像只能一个一个的打 首先在清单文件里设置个变量: 这个变量可以在Application里这样获得,从而app内就知道是哪个渠道了, 然后在build.gradle里设置productFlavors 如yingyongbao就填充到清单文件里面的CHANEL_NAME变量了 找到Gradle任务单元,进入build单元,右键run,就能生产出该渠道的ap

Gradle多渠道打包

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" /> 里面的Channel_ID就是渠

Gradle多渠道打包[umeng]

前言 国内Android应用市场品种太多,血统不纯,每次上线App都打包打到手软,上传上到吐血!好在我们有了Android studio和gradle,一条命令打包各种渠道版本App! 正文 Umeng多渠道 我们在项目中会使用统计SDK,用的最流行的当属umeng了吧.这里我们就用友盟来说明.用了友盟的App的清单文件AndroidManifest.xml中都会写上meta-data,来区分不同的渠道: <meta-data android:name="UMENG_CHANNEL&quo

转-Android Studio系列教程六--Gradle多渠道打包

友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" /> 里面的Channel_ID就是渠道标示.我们的目标就是在编译的时候这个值能够自动变化. 第一步 在AndroidManifest.xml里配置PlaceHolder <meta-data android:na

android studio中使用gradle多渠道打包

尝试了用android studio中使用gradle打多渠道的程序包,果然如传说中那样神奇.本文中部分是参考Google上的内容,权当学习记录在这里吧 1.配置好AndroidManifest.xml中的渠道信息,这里以友盟统计为例吧 在<application>  ...  </application>节点中增加: <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_C