gradle多渠道打包和同一App打包不同版本Api调用

来源:互联网 发布:linux 制作iso 编辑:程序博客网 时间:2024/05/17 22:19

gradle多渠道打包

多渠道打包,以友盟统计为例。
  1. 配置好AndroidManifest.xml中的渠道信息
    在Application节点中添加如下:

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


  2. 在相应打包程序的module中的build.gradle里面做如下修改:在android{ ... }里面新增:

    productFlavors {
        wandoujia {}
        qihu360 {}
        baidu {}
        xiaomi {}
        uc {}

        productFlavors.all {
            flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }
    }

  3. 配置好gradle的环境变量,将gradle中的bin文件路径加入到path中(此步可省略)

  4. 签名打包呢。 选择Build->Generate Signed APK... 
    Flavors中:Ctrl+鼠标左键 >> 选择多渠道 Ctrl+A >>选择全部渠道
      
  5. 点击Finish后即开始多渠道打包

同一App打包不同版本API的调用

对于测试版和正式版等有多个版本的app,每次打包需要替换不同的api地址。可以使用productFlavors 打包不同版本API的调用。
  1. 在 src 目录下新建几个自己需要打包对应名称的包,比如我要打包如下两个版本, myrelease和mydebug,新建各自java文件夹,可以直接复制main文件下的java包到各个新建目录下,然后只新建和声明自己需要类和对应常量(需一致)。

    myrelease的GlobalVar中
    public static String dateIp="http://www.baidu.com";

    mydebug的GlobalVar中
    public static String dateIp="http://www.google.com";


  2. 在主程序main需要的地方调用对应的常量,实际开发中是调用api去请求数据

    在代码中调用的是当前选择对应的productFlavors版本的代码,比如当前选择的是myrelease版,其他版本会显示下面好像报错的红圈,编译正常,当我们打包成功后,它会调用对应目录下面常量
  3. 签名打包,配置gradle文件,在相应打包程序的module中的build.gradle里面做如下修改:在android{ ... }里面新增:id 根据你自己的需要设置是否可以同时在一个手机上运行多个自己的app)

    productFlavors {
        myrelease {
            applicationId 'myrelease.apitest.nht.com.multiapi'
            versionName '1.0-release'
        }
        mydebug {
            applicationId 'mydebug.apitest.nht.com.multiapi'
            versionName '1.0-debug'
        }
    }

  4. 结果

     
项目源码:MultiApi
参考文献:
红黑联盟、 简书



0 0