(4) 在代码中获取多渠道信息
Stringchannel=WalleChannelReader.getChannel(getApplicationContext());
(5) 在代码中获取多环境信息
intenvType=BuildConfig.ENV_TYPE;
这里的BuildConfig是由gradle动态生成的:
packagecom.soubu.walledemo;publicfinalclassBuildConfig{publicstaticfinalbooleanDEBUG=Boolean.parseBoolean("true");publicstaticfinalStringAPPLICATION_ID="om.soubu.walledemo.develop";publicstaticfinalStringBUILD_TYPE="debug";publicstaticfinalStringFLAVOR="develop";publicstaticfinalintVERSION_CODE=1;publicstaticfinalStringVERSION_NAME="1.0";//Fieldsfromproductflavor:developpublicstaticfinalintENV_TYPE=1;}
而ENV_TYPE这个字段其实就来自于我们的build.gradle:
productFlavors{//开发环境develop{buildConfigField"int","ENV_TYPE","1"applicationId'om.soubu.walledemo.develop'manifestPlaceholders=[app_name:"开-WalleDemo",app_icon:"@drawable/icon_develop"]}{
这里我们最好定义一个常量类区分这些环境的类型:
publicclassEnvType{publicstaticfinalintDEVELOP=1;//开发环境publicstaticfinalintCHECK=2;//测试环境publicstaticfinalintPRODUCT=3;//正式环境}
2、打包多环境
这里我们直接执行assemble命令 。打包所有的buildType*productFlavors

文章插图

文章插图
或者使用命令行也可以:
gradle assemble
执行结果:26秒搞定6个包:2个版本*3个环境

文章插图

文章插图

文章插图

文章插图
这里我们可以看到debug包都是1.4M,而release包都是0.7M 。显然 。我们的混淆和压缩配置是生效了的 。虽然这里我并没写混淆规则

文章插图

文章插图

文章插图

文章插图
我们分别安装3个环境的包到自己的手机上:

文章插图

文章插图
看三个包的名称和图标都不一样 。显然我们之前在manifest文件中配置的占位符生效了 。
然后我们点进去分别看看这3个app的区别:

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图
这样 。我们就可以在代码中 。根据环境字段envType的不同 。来选择不同的网络环境了 。
界面的代码如下:
publicclassMainActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextViewtvEnv=(TextView)findViewById(R.id.tv_env);TextViewtvChannel=(TextView)findViewById(R.id.tv_channel);TextViewtvPackage=(TextView)findViewById(R.id.tv_package);Stringchannel=WalleChannelReader.getChannel(this.getApplicationContext());intenvType=BuildConfig.ENV_TYPE;StringpackageName=getPackageName();switch(envType){caseEnvType.DEVELOP:tvEnv.setText("envType="+"开发环境");break;caseEnvType.CHECK:tvEnv.setText("envType="+"测试环境");break;caseEnvType.PRODUCT:tvEnv.setText("envType="+"生产环境");break;}tvChannel.setText("channel="+channel);tvPackage.setText("package="+packageName);}}
3、打包多渠道
在Project的根目录下新建channel文件:
anzhi#安智baidu#百度huawei#华为oppo#oppowdj#豌豆荚xiaomi#小米yyb#应用宝
执行gradle命令:
(1) 打包文件内的渠道包
gradle assembleProductRelease -PchannelFile=channel
- 化妆品怎么打包上飞机
- 如何打包微信语音分享 怎样语音打包发微信
- 请问有哪些免费好用的app打包网站,求推荐?
- 《王者荣耀》一生所爱和大圣娶亲2月14日0点上架,打包1314点卷,值得入手吗?
- 好用的Android浏览器有哪些?
- android p是什么版本
- 哪些手机使用android 7.0?安卓7.0的手机有哪些?
- 水稻打包到抽穗多少天,抽穗期的所需水分怎么管理
- 哪些化妆品不能带上飞机 坐飞机怎么打包化妆品
- 网友称海底捞水果仅限打包一份怎么回复 网友称海底捞水果仅限打包一份
