- 创建 assets 配置文件
- 使用 AssetManager 读取配置文件内容
- 使用 fastjson 解析配置文件内容
这是一个简单而实用的小需求,在 App 开发的过程中往往需要经历,开发、测试、发布等各个阶段,在每一个阶段使用的 数据请求地址,App信息往往是不同的,这个时候使用一个配置文件将这些信息统一管理起来就显得很必要。
一、创建 assets 配置文件
- 创建 assets 文件夹,位置 src -> main 下,如图:

- 在 assets 文件夹下创建配置文件
config.json
,内容如下:
{
"isDebug": true,
"debug": {
"hostUrl": "https://www.hao123.com",
"flag": "test"
},
"release": {
"hostUrl": "https://www.baidu.com",
"flag": "online"
}
}
二、使用 AssetManager 读取配置文件内容
创建工具文件 AssetsUtil.kt
,内容如下:
@file:JvmName("AssetsUtil") // 1️⃣
package cn.ak.kot
import android.content.Context
import java.io.BufferedInputStream
/**
* 读取assets中的【文本文件】内容
*/
fun <R> readText4Assets(ctx: Context, fileName: String, callback: (String?) -> R): R { // 2️⃣
var text: String? = null
try {
ctx.assets.open(fileName).use { ins -> // 3️⃣
BufferedInputStream(ins).use { bis ->
text = bis.reader().readText()
}
}
} finally { // 4️⃣
return callback(text)
}
}
涉及 Kotlin 知识点:
- 1️⃣Java调用Kotlin
- 2️⃣泛型函数、函数类型
- 3️⃣自动资源管理
- 4️⃣finally 代码块
三、使用 fastjson 解析配置文件内容
-
build.gradle
中引入fastjson
,如下:
dependencies {
......
implementation 'com.alibaba:fastjson:1.2.58'
}
- 使用
readText4Assets()
得到配置内容,并解析:
fun readConfig() {
readText4Assets(this, "config.json") { // 1️⃣
it ?: return@readText4Assets // 2️⃣
JSON.parseObject(it).run { // 3️⃣
Configuration().run {
isDebug = getBoolean("isDebug")
val hostInfo = getString(if (isDebug) "debug" else "release") // 4️⃣
JSON.parseObject(hostInfo).run {
hostUrl = getString("hostUrl")
flag = getString("flag")
}
Log.e("readConfig", toString())
}
}
}
}
涉及 Kotlin 知识点:
- 1️⃣尾随 Lambda 表达式
- 2️⃣Elvis运算符
- 3️⃣内联函数
网友评论