# ffsky-app-env
**Repository Path**: hljdrl/ffsky-app-env
## Basic Information
- **Project Name**: ffsky-app-env
- **Description**: android app env 环境组件,app env : dev、sit、uat、pro
- **Primary Language**: Android
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-11-19
- **Last Updated**: 2026-02-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: env, config, Android
## README
# ffsky-app-env
#### 介绍
app-env 环境组件
1. 基础组件,提供app运行环境。
2. 环境模型:dev、sit、uat、pre、pro
3. Env可扩展使用.
4. AppEnv默认实现,直接install后使用.
5. 支持多服务器API URL注入与调用(向下兼容单服务器API)。
#### 版本记录
- 1.0.2
- 新增多服务器 API URL 注入与调用(`install(env, baseUrls)`、`getBaseUrl(apiKey)`、`isServiceMatching(url, apiKey)`)
- 新增 API 常量(`API_BASE`、`API_BASE2`、`API_CDN`、`API_RES`)
- 补充 app 自测示例(多服务器、环境判断、匹配)
- 完善 README 文档与类图
- 1.0.1
- 新增 pre 环境支持
核心类说明(lib_env)
| 类名 | 说明 |
|--------------------|-----------------------------|
| EnvEvent | 环境能力接口(环境与API访问) |
| BaseEnv | 环境抽象基类 |
| AppEnv | 默认环境实现(单/多服务器) |
| Env | 管理入口(install/getInstance) |
| SimpleEnv | 简单静态使用方式 |
类图(完整字段/访问级别/线程安全/流程说明)
接口层API EnvEvent.java
| 方法 | 备注 |
|---------------------------------------|---------------|
| boolean isPro() | 是否-pro环境 |
| boolean isPre() | 是否-pre环境 |
| boolean isDev() | 是否-dev环境 |
| boolean isSit() | 是否-sit环境 |
| boolean isUat() | 是否-uat环境 |
| String getEnv() | 获取env |
| String getBaseUrl() | 获取baseUrl |
| String getBaseUrl(String apiKey) | 获取指定API的baseUrl |
| boolean isServiceMatching(String url) | 判断是否匹配baseUrl |
| boolean isServiceMatching(String url, String apiKey) | 判断是否匹配指定API |
| - | - |
多服务器API Key(EnvEvent 常量)
- API_BASE:默认服务器(对应旧 getBaseUrl)
- API_BASE2:备用基础服务器
- API_CDN:静态资源服务器
- API_RES:资源服务器
#### 使用说明
1. 引入库
```gradle
// 当前最新版本(支持多服务器 API)
api "com.gitee.hljdrl:env:1.0.2"
// 新增 pre 环境
api "com.gitee.hljdrl:env:1.0.1"
// 初始版本
api "com.gitee.hljdrl:env:1.0.0"
```
2. 初始化
```java
public class MyApplication extends FFKitApplication {
@Override
public void onCreate() {
super.onCreate();
//TODO 二选一方案:1.SimpleEnv 2. Env
//TODO 不可同时使用,同时使用会造成业务层开发、维护成本呢。
//SimpleEnv 初始化,
SimpleEnv.install(EnvEvent.ENV_DEV, "https://gitee.com/");
//Env初始化
Env.install(EnvEvent.ENV_PRO, "https://gitee.com/");
}
}
```
3. 多服务器API URL(新增能力,向下兼容)
```java
Map urls = new HashMap<>();
urls.put(EnvEvent.API_BASE, "https://base.xxx.com/");
urls.put(EnvEvent.API_BASE2, "https://base2.xxx.com/");
urls.put(EnvEvent.API_CDN, "https://cdn.xxx.com/");
urls.put(EnvEvent.API_RES, "https://res.xxx.com/");
// SimpleEnv
SimpleEnv.install(EnvEvent.ENV_DEV, urls);
// Env
Env.install(EnvEvent.ENV_PRO, urls);
EnvEvent env = Env.getInstance();
String cdn = env.getBaseUrl(EnvEvent.API_CDN);
boolean ok = env.isServiceMatching("https://cdn.xxx.com/a.png", EnvEvent.API_CDN);
```