如果您想查看英文文档,请点击这里:English Document
本项目参考 jenly1314 开源库 BaseUrlManager
如果你的项目BaseUrlManager能满足需求,可以直接使用BaseUrlManager。
由于实际开发中,每个环境会有多个域名需要配置, BaseUrlManager框架能满足一个域名的控制,但是我一个环境就有十来个域名需要控制。所以参考BaseUrlManager有了MultiUrlManager
MultiUrlManager for Android 的设计初衷主要用于开发时,每个环境有多个域名都需要打包APK的场景,通过BaseUrlManager提供的BaseUrl动态设置入口,只需打一 次包,即可轻松随意的切换不同的开发环境和测试环境的不同多个域名。在打生产环境包时,关闭BaseUrl动态设置入口即可。
你也可以直接下载 演示App 体验效果
-
在Project的 build.gradle 或 setting.gradle 中添加远程仓库
repositories { //... mavenCentral() }
-
implementation 'io.github.logan0817:multiurlmanager:1.0.3' // 替换为上方徽章显示的最新版本
集成步骤代码示例 (示例出自于app中)
Step.1 在您项目中的AndroidManifest.xml中通过配置meta-data来自定义全局配置
<!-- 在你项目中添加注册如下配置 -->
<activity
android:name="com.logan.multiurlmanager.library.BaseUrlManagerActivity"
android:exported="false"
android:theme="@style/BaseUrlManagerTheme"
android:windowSoftInputMode="adjustPan" />
<!-- 如果需要更新样式参考 android:theme="@style/AppBaseUrlManagerTheme" --> Step.2 在您项目Application的onCreate方法中初始化BaseUrlManager
//初始化BaseUrlManager ,默认加载 base_urls_config.json 配置[参考demo内容修改即可]
//默认数据可以有多个环境,默认提供了两个key:DEBUG_CONFIG_KEY、RELEASE_CONFIG_KEY代表两个环境。
// 你也可以参考在config文件中添加自定义 CUSTOM_CONFIG_KEY,可以通过setFileConfigKey来使用对应环境来实现打包时候默认数据切换。
BaseUrlManager.builder(this)
.setFileConfigKey(BaseUrlConfigLoader.DEBUG_CONFIG_KEY)
// .setFileConfigKey(BaseUrlConfigLoader.RELEASE_CONFIG_KEY)
// .setFileConfigKey("CUSTOM_CONFIG_KEY")
.build()
//获取baseUrl
String baseUrl = BaseUrlManager.instance?.getBaseUrl("mailDomain")
String baseUrl = BaseUrlManager.instance?.getBaseUrl("customKey") //初始化BaseUrlManager
BaseUrlManager.builder(this)
.setDefaultProvider {
listOf(
BaseUrl(configKey = "videoApiDomain", url = "https://www.douyin.com/", select = true, remark = "douyin Environment"),
BaseUrl(configKey = "videoApiDomain", url = "https://www.kuaishou.com//", select = false, remark = "kuaishou Environment"),
BaseUrl(configKey = "mailDomain", url = "https://mail.google.com/", select = true, remark = "mail google Environment"),
BaseUrl(configKey = "mailDomain", url = "https://mail.qq.com/", select = false, remark = "mail qq Environment")
)
}
.build()
//获取baseUrl
String baseUrl = BaseUrlManager.instance?.getBaseUrl("customKey")
String baseUrl = BaseUrlManager.instance?.getBaseUrl("mailDomain")Step.3 提供动态配置BaseUrl的入口(通过Intent跳转到BaseUrlManagerActivity界面)
写法
BaseUrlManagerActivity.startBaseUrlManager(this, SET_BASE_URL_REQUEST_CODE)Step.4 当配置改变了baseUrl时,在Activity或Fragment的onActivityResult方法中重新获取baseUrl即可
//方式1:通过BaseUrlManager获取baseUrl
String baseUrl = BaseUrlManager.instance?.getBaseUrl("customKey")
String baseUrl = BaseUrlManager.instance?.getBaseUrl("mailDomain")
//方式2:通过data直接获取baseUrls
val baseUrls = BaseUrlManagerActivity.parseActivityResult(data)
baseUrls?.find { it.configKey = "mailDomain" }?.url更多使用详情,请查看app中的源码使用示例或直接查看 API帮助文档
- BaseUrlManager 只需打一次包,即可轻松随意的切换不同的开发环境或测试环境。
