美文网首页
Kandroid代码篇 (2) 从assets读取配置

Kandroid代码篇 (2) 从assets读取配置

作者: 狼性代码人 | 来源:发表于2019-07-30 19:04 被阅读0次
  • 创建 assets 配置文件
  • 使用 AssetManager 读取配置文件内容
  • 使用 fastjson 解析配置文件内容

  这是一个简单而实用的小需求,在 App 开发的过程中往往需要经历,开发、测试、发布等各个阶段,在每一个阶段使用的 数据请求地址,App信息往往是不同的,这个时候使用一个配置文件将这些信息统一管理起来就显得很必要。

一、创建 assets 配置文件

  • 创建 assets 文件夹,位置 src -> main 下,如图:
assets文件夹位置
  • 在 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 知识点:

三、使用 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 知识点:

相关文章

网友评论

      本文标题:Kandroid代码篇 (2) 从assets读取配置

      本文链接:https://www.haomeiwen.com/subject/pkonrctx.html