Android Studio 多版本地址切换
来源:互联网 发布:js 瀑布流布局插件 编辑:程序博客网 时间:2024/06/05 05:42
在app开发过程中,从测试到发布至少有两个接口域名或者二级域名,以便区别开发版本与上线版本。因为在开发过程中是绝对不能影响到正式上线的版本。所以需要方便地切换测试接口地址和正式接口地址。
接下来介绍本人使用的方法,如果您们有更好的方式,请尽情交流哦。
- 前提:所有的接口域名都抽离出来,如下所示
/** * <pre> * author : Haitao * e-mail : haitao_ni@foxmail.com * time : 2017/05/16 * desc : 接口地址 * version: 1.0 * </pre> */public class HttpInterface { static String SERVICE_STOCK_OA = "/api/"; private static String getPrefixAuto() { switch (BuildConfig.API_ENV) { case 0: return getPrefixHttps(GlobalVar.OA_HOST, GlobalVar.OA_PORT_HTTPS); case 1: return getPrefixHttp(GlobalVar.OA_HOST, GlobalVar.OA_PORT_HTTP); default: return getPrefixHttp(GlobalVar.OA_HOST, GlobalVar.OA_PORT_HTTP); } } private static String getPrefixAuto(String sub) { switch (BuildConfig.API_ENV) { case 0: return getPrefixHttps(GlobalVar.OA_HOST, GlobalVar.OA_PORT_HTTPS, sub); case 1: return getPrefixHttp(GlobalVar.OA_HOST, GlobalVar.OA_PORT_HTTP, sub); default: return getPrefixHttp(GlobalVar.OA_HOST, GlobalVar.OA_PORT_HTTP, sub); } } private static String getPrefixHttp(String host) { return String.format(Locale.CHINA, "http://%s", host); } private static String getPrefixHttp(String host, int port) { return String.format(Locale.CHINA, "http://%s:%d", host, port); } private static String getPrefixHttp(String host, int port, String sub) { return String.format(Locale.CHINA, "http://%s:%d%s", host, port, sub); } private static String getPrefixHttps(String host, int port) { return String.format(Locale.CHINA, "https://%s:%d", host, port); } private static String getPrefixHttps(String host, int port, String sub) { return String.format(Locale.CHINA, "https://%s:%d%s", host, port, sub); } public interface Stock { String URL_HOST = getPrefixAuto(); String URL_PREFIX = getPrefixAuto(SERVICE_STOCK_OA); String URL_QUOTATION_DETAIL = URL_PREFIX + "quotation"; String URL_QUOTATION_SIMPLE = URL_PREFIX + "quotation/list"; String URL_QUOTATION_MINUTES = URL_PREFIX + "quotation/minute"; String URL_QUOTATION_KLINE = URL_PREFIX + "quotation/k-line"; String URL_STOCK_INFO = URL_PREFIX + "purchase"; String URL_HOME_INDEX = URL_PREFIX + "index"; String URL_ALL_STOCK_LIST = URL_PREFIX + "stock-list"; String URL_MINE_STOCK_LIST = URL_PREFIX + "user-stock"; String URL_ADD_MINE_STOCK = URL_PREFIX + "user-stock/add"; String URL_REMOVE_MINE_STOCK = URL_PREFIX + "user-stock/destroy"; String URL_SERVICE_TIME = URL_PREFIX + "server/time"; String URL_QUERY_UPDATE = URL_PREFIX + "version-detection"; String URL_QUERY_TRADE_RANK = URL_PREFIX + "policy-release-list"; String URL_POLICY_RANK = URL_PREFIX + "trader"; String URL_POLICY_RANK_LOGINED = URL_PREFIX + "trader-with-followed"; String URL_QUERY_NOTICS = URL_PREFIX + "announcement-list"; String URL_NOTICE_DETAIL_PRE = URL_PREFIX + "announcement-content/"; String URL_CONFIG = URL_PREFIX + "configs"; String URL_BUY_CONTRACT = URL_PREFIX + "buy-agreement-list"; String URL_DEL_ALIAS = URL_PREFIX + "delete-alias"; } }
其中GlobalVar是地址切换的配置,其中最主要的是toggleServiceAddres(BuildConfig.API_ENV);中的BuildConfig.API_ENV,默认情况下BuildConfig中是没有API_ENV这个值的,这需要处理一下,GlobalVar代码如下
/** * <pre> * author : Haitao * e-mail : haitao_ni@foxmail.com * time : 2017/05/16 * desc :请求地址配置 * version: 1.0 * </pre> */public class GlobalVar { public static String OA_HOST; public static int OA_PORT_HTTP = 0; public static int OA_PORT_HTTPS = 0; public static String TEST_HOST; public static int TEST_PORT_HTTP = 0; public static int TEST_PORT_HTTPS = 0; public static int COLOR_RED_UP; public static int COLOR_GREEN_DOWN; public static int COLOR_GRAY; static { toggleServiceAddres(BuildConfig.API_ENV); } public static void toggleOperatingEnvironment(int sRunTimeHttp) { toggleServiceAddres(sRunTimeHttp); } private static void toggleServiceAddres(int runTimeHttp) { switch (runTimeHttp) { case 0: {//测试地址 OA_HOST = "api.dullme.com"; OA_PORT_HTTPS = 443; OA_PORT_HTTP = 80; TEST_HOST = "nhtzj.com"; TEST_PORT_HTTPS = 443; TEST_PORT_HTTP = 80; break; } case 1: { //正式地址 OA_HOST = "api.zjzyjt.cn"; OA_PORT_HTTPS = 443; OA_PORT_HTTP = 80; break; } default: { } } }}
在BuildConfig中的API_ENV值是通过gradle文件配置的自定义值,只需在app的build.gradle文件内的android内添加如下代码
buildTypes { debug { buildConfigField "boolean", "LOG_DEBUG", "true" buildConfigField "int", "API_ENV", "0" } release { buildConfigField "boolean", "LOG_DEBUG", "false" buildConfigField "int", "API_ENV", "1" } }
buildTypes是用于打包apk时选择打包的版本的配置信息。buildConfigField用于在BuildConfig中添加自定义值,其中第一个参数是添加值的类型,第二个值是新添值的名称,第三个参数是新添值的值。
build.gradle文件修改后需要点击“Sync Now“,或者是build一下。之后就可以直接调用BuildConfig类中新添的全局变量了。
之后调试时需要切换服务器地址,遍只要修改build.gradle中对应的值便可以了。
其中LOG_DEBUG是我用来控制log输出的控制变量
API_ENV变量的类型也可以根据各位的需求进行修改
阅读全文
0 0
- Android Studio 多版本地址切换
- Android Studio 手动下载 gradle 版本地址
- android studio gradle各个版本下载地址
- android studio 重新切换版本控制 Enable Version Control Integration
- android studio 多版本打包
- Activity 切换(Android studio)
- Android studio切换分支
- Android studio 切换主题
- android版本JDK切换
- Android应用程序版本切换
- Android studio 下载地址
- Android Studio 视频教程地址
- android studio 学习地址
- Android Studio 下载地址
- Android Studio下载地址
- android studio 下载地址
- android studio下载地址
- android studio 下载地址
- html5初学3
- Visual Studio 快捷键
- 虚拟机1.图解虚拟机安装Mac系统
- Delphi Debug模式下可以但是Release模式下报错原因之一
- 程序员开发项目中7款可提高工作效率的几款工具!
- Android Studio 多版本地址切换
- 二叉树中和为某一值的路径
- U盘安装win7+centos7双系统
- POJ 2378 Tree Cutting——树形dp
- Makefile 详解一(含通用模板)
- Session 'app': Error Launching activity的解决方案
- 一个方法返回两个值
- Visual Studio下C++第三方库的配置方法总结
- 深度学习_BP神经网络