Skip to content

Repository files navigation

如果您想查看英文文档,请点击这里:English Document

本项目参考 jenly1314 开源库 BaseUrlManager

如果你的项目BaseUrlManager能满足需求,可以直接使用BaseUrlManager。

由于实际开发中,每个环境会有多个域名需要配置, BaseUrlManager框架能满足一个域名的控制,但是我一个环境就有十来个域名需要控制。所以参考BaseUrlManager有了MultiUrlManager

MultiUrlManager

MultiUrlManager for Android 的设计初衷主要用于开发时,每个环境有多个域名都需要打包APK的场景,通过BaseUrlManager提供的BaseUrl动态设置入口,只需打一 次包,即可轻松随意的切换不同的开发环境和测试环境的不同多个域名。在打生产环境包时,关闭BaseUrl动态设置入口即可。

效果展示

你也可以直接下载 演示App 体验效果

引入

Gradle:

  1. 在Project的 build.gradlesetting.gradle 中添加远程仓库

    repositories {
        //...
        mavenCentral()
    }
  2. 在Module的 build.gradle 中添加依赖项 Maven Central

    implementation 'io.github.logan0817:multiurlmanager:1.0.6' // 替换为上方徽章显示的最新版本

使用

集成步骤代码示例 (示例出自于app中)

Step.1 在您项目中的AndroidManifest.xml中通过配置theme来自定义样式

    <!-- 在你项目中添加注册如下配置 -->
    <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

方式一:使用base_urls_config.json配置

//初始化BaseUrlManager ,默认加载 base_urls_config.json 配置[参考demo内容修改即可]
//默认数据可以有多个环境,默认提供了两个key:DEBUG_CONFIG_KEY、RELEASE_CONFIG_KEY代表两个环境。
// 你也可以参考在config文件中添加自定义 CUSTOM_CONFIG_KEY,可以通过setFileConfigKey来使用对应环境来实现打包时候默认数据切换。
    BaseUrlManager.builder(this)
        .setFileConfigKey(
            if (BuildConfig.DEBUG) {
                BaseUrlConfigLoader.DEBUG_CONFIG_KEY
                //setFileConfigKey("CUSTOM_CONFIG_KEY")
            } else {
                BaseUrlConfigLoader.RELEASE_CONFIG_KEY
                //setFileConfigKey("CUSTOM_CONFIG_KEY")
            }
        )
        .build()

    // Get baseUrl
   val videoApiDomainUrl = BaseUrlManager.instance?.getBaseUrl("videoApiDomain")
   val mailDomainBaseUrl = BaseUrlManager.instance?.getBaseUrl("mailDomain")
   val customKeyDmomainUrl = BaseUrlManager.instance?.getBaseUrl("customKey")

方式二:使用代码配置,base_urls_config.json会失效。代码配置优先级高

//初始化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()

    // Get baseUrl
   val videoApiDomainUrl = BaseUrlManager.instance?.getBaseUrl("videoApiDomain")
   val mailDomainBaseUrl = BaseUrlManager.instance?.getBaseUrl("mailDomain")
   val customKeyDmomainUrl = BaseUrlManager.instance?.getBaseUrl("customKey")

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 只需打一次包,即可轻松随意的切换不同的开发环境或测试环境。

About

MultiUrlManager for Android 的设计初衷主要用于开发时,每个环境有多个域名都需要打包APK的场景 MultiUrlManager for Android was primarily designed for scenarios during development where multiple domains in each environment require packaging an APK.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages