zoukankan      html  css  js  c++  java
  • Gradle实现的两种简单的多渠道打包方法

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

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

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

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

    眼下我掌握的方法有两种。都很easy,用的都是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

  • 相关阅读:
    bzoj3224 普通平衡树
    bzoj 1067 分情况讨论
    bzoj 1269 bzoj 1507 Splay处理文本信息
    bzoj 2733 Splay 启发式合并,名次树
    bzoj1502 simpson求面积
    b_lq_晚会界面单(线段树维护区间最大值表+预留m个位置)
    a_lc_统计子树中城市之间最大距离(枚举子集 + floyd / 2*dfs 求直径)
    b_lq_城市建设 & 公路修建水题 & 新的开始(虚拟结点+MST)
    b_lg_无线通讯网 & 北极通讯网络(问题转化+kruskal)
    b_lg_搭配购买(并查集+01背包)
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6888929.html
Copyright © 2011-2022 走看看