目录

Android-APP内选择切换开发环境测试环境阿里测试环境生产环境记录一下

目录

Android APP内选择切换开发环境、测试环境、阿里测试环境、生产环境记录一下

根据产品及测试需求,每次测试后需要来回切换环境测试,每次都需要重新设置请求域名环境然后进行打包,很麻烦!!!就想设计一键切换APP环境地址:

首先在应用中找一个触发事件(本人选择了设置长按监听事件,弹框选择需要切换的环境地址),并且设置一下只在debug运行模式下执行 (防止打生产环境上线包后,忘记关闭)

        长按设置事件  切换环境弹框
llSetting.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View view) {
        if (ConfigUtil.isDebugApp)//debug才能切换
            new ChooseIPDialog(getActivity()).show();//选择环境dialog弹框
        return true;
    }
});

判断当前APP是否debug模式  configUtil 工具类

/**
 * @param context
 * @return 判断APP是否是debug模式
 */
public static boolean isDebugApp(Context context) {
    try {
        ApplicationInfo info = context.getApplicationInfo();
        return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
    } catch (Exception x) {
        return false;
    }
}

弹框中点击事件

tvTest.setOnClickListener(new View.OnClickListener() {
            @SingleClick
            @Override
            public void onClick(View v) {           
                SPUtils.putStringValue(Constants.IpUrl, "http://180.167.199.230:7083");//保存切换测试环境后地址
                reStartApp();//重启
                dismiss();//关闭弹框
            }
        });

其它开发测试环境事件一样 地址修改一下就可以了

public void reStartApp() {//重启应用
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent LaunchIntent=mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName());
                LaunchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                mContext.startActivity(LaunchIntent);
                ConfigUtil.setIsLogin(false);//切换环境后 登陆会失效  我在这里处理标记(未登录)
                MyApp.getCustomApp().exitApp();
                System.exit(0);
            }
        }, 100);
    }

在这之前会设置一个默认的请求路径:

public static final String baseUrl = “http://180.167.199.230:7083”;

然后再公共请求类中获取当前的环境地址

String ipUrl= ConfigUtil.getIpUrl();//获取当前请求环境路径地址IP

替换公共请求头部 拼接请求路径这里就省了

public static String getIpUrl(){//获取请求路径IP
    String url = SPUtils.getStringValue(Constants.IpUrl,"");
    if (StringUtil.isEmpty(url)){//判断不为空
        url=HttpConfig.baseUrl;//为空设置默认请求路径
    }
    return url;
}

ok,是不是很简单!如果觉得简单 还不错就给个赞 谢谢!