zoukankan      html  css  js  c++  java
  • 使用gradle多渠道打包

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

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

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

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     package="your.package.name">  
    3.     <application>  
    4.   
    5.           <meta-data android:name="UMENG_CHANNEL" android:value="UMENG"/>  
    6.   
    7.     </application>  
    8. </manifest>  
    注意,上面的value的值要和你的渠道名所相应。比方wandoujia里面要相应为你豌豆荚上的渠道名(如WANDOUJAI)。

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

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    1. android {  
    2.     // 这里是你的其它配置  
    3.   
    4.     productFlavors{  
    5.         umeng{  }  
    6.         wandoujai {  }  
    7.         yingyongbao{  }  
    8.     }  
    9.     // 你的其它配置  
    10. }  
    注意这里的flavors的名字要和你的目录的名字相应。这样配置之后,构建的就是多渠道的APK了。


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

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

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    1. <meta-data  
    2.     android:name="UMENG_CHANNEL"  
    3.     android:value="${CHANNEL_NAME}" />  

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

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    1. android {  
    2.     // 你的其它配置代码  
    3.   
    4.     productFlavors {  
    5.         yingyongbao {  
    6.             manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]  
    7.         }  
    8.         umeng {  
    9.             manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]  
    10.         }  
    11.         wandoujia {  
    12.             manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]  
    13.         }  
    14.   
    15.     }  
    16.     // 你的其它配置代码  
    17. }  

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

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    1. manifestPlaceholders = [ CHANNEL_NAME:"Unspecified"]  
    这里的Unspecified换成你实际上的默认的渠道名。

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

  • 相关阅读:
    Python循环语句
    Python基本数据类型
    Python条件句句
    Python基础
    jmeter用户自定义变量和CSV可变参数压测、和多参数的使用
    App资源在线升级更新
    javaweb项目启动报错org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/cab-web]]
    mui移动端日期选择器的使用
    java把json字符串转成实体
    MUI集成个推实现消息推送
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7392329.html
Copyright © 2011-2022 走看看