美文网首页多渠道打包Android技术知识
Android利用productFlavors 打包不同版本AP

Android利用productFlavors 打包不同版本AP

作者: Joe_zShare | 来源:发表于2015-12-21 14:14 被阅读15755次

功能背景:

因公司项目要求,每次打包都需要打包三个版本,两个测试版本和一个线上的版本,

并且调用不同的baseURL,最开始的做法是每次打包一次就换一个baseURL,然后一个个打包,分别需要打包三次,如果编译很慢会浪费了很多时间,还需要注释掉不同的baseURL,于是想到应该如何一次性打包三个版本的apk并且调用不同的baseURL,如果有类似需求的,可以参照我下面自己实现的方式。

首先在 src 目录下新建几个自己需要打包对应名称的包,比如我要打包如下三个版本, uat ,nduat,product,新建各自java文件夹,可以直接复制main文件下的java包到各个新建目录下,然后只新建和声明自己需要类和对应常量(需一致)。

public class Constant {public static String BASE_URL = "http://www.*****";}

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

在代码中调用的是当前选择对应的productFlavors版本的代码,比如当前选择的是nduat版,其他版本会显示下面好像报错的红圈,编译正常,当我们打包成功后,它会调用对应目录下面常量

然后签名打包,配置gradle文件,这些按照基本流程走,按照下面基本的配置可以得到打包得到三个对应的版本,id 根据你自己的需要设置是否可以同时在一个手机上运行多个自己的app。


以上过程完成了开始提到的需求,具体实现代码起来很简单,以此类推,资源文件等也可以通过以上方式。

源码:JoeGitHub 

相关文章

网友评论

  • 301537de9297:那这里Constant编写的时候导包怎么解决。
    Joe_zShare:@MrRain丶 打包的时候选择多个或者用命令行打包
    301537de9297:我知道了,我定义了两个productflavor,但是为什么只有一个是成功的,包名和申明的地方都没打错啊啊啊啊啊
  • 爱听调频的大叔:第一步是不是可以不要新建包? productFlavors里面 不是有个可以指定变量值的属性么?类似: buildConfigField 'String', 'BASE_URL', '"地址"'
    直接这样加上就可以吧?
    Joe_zShare:我这个是 按照google 文档 实践的一次 :wink:
    Joe_zShare:对 这样也是可以的 你这样更方便
  • applixy:我的会报 Error:(57, 8) 错误: 类重复: com.xxx.xxx.xxx.MainActivity
    香辣牛肉面:@Joe_zShare 我也报冲突,这个怎么解决的
    Joe_zShare:这个 应该不会吧 你自己新建一个项目 原理差不多 看贴图
  • 皮球二二:src添加不同渠道的类的时候,你的打包的方式是单独打包?
    Joe_zShare:@r17171709 你可以按照上面的 原理去试试
    皮球二二:@齊葩 我不会啊。。。
    齊葩:@r17171709 大神有什么方法么

本文标题:Android利用productFlavors 打包不同版本AP

本文链接:https://www.haomeiwen.com/subject/kyumhttx.html