From 9c96fa601bc083db1cbd5e6ab2571b05a96d6406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Wed, 22 Apr 2026 11:46:07 +0800 Subject: [PATCH] =?UTF-8?q?refactor(build):=20=E9=87=8D=E6=9E=84=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E9=85=8D=E7=BD=AE=E4=BB=A5=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E4=BA=A7=E5=93=81=E9=A3=8E=E5=91=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 config.gradle 中为 dev、fiveg 和 external 环境添加版本代码维度 - 将硬编码的语音服务凭据移至对应的产品风味配置中 - 为不同环境添加 API 授权、令牌、Cookie 等构建配置字段 - 更新 HeaderInterceptor 使用 BuildConfig 中的动态配置值 - 修改 TaskListVM 使用构建配置中的当前用户 ID - 移除应用级别的硬编码敏感配置信息 --- app/build.gradle | 36 ++++++++++++++++--- .../glass/repository/HeaderInterceptor.kt | 11 +++--- .../nova/brain/glass/viewmodel/TaskListVM.kt | 3 +- config.gradle | 9 +++++ 4 files changed, 49 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 603b8d5..4a00123 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,10 +19,6 @@ android { APP_ID : apps.applicationId, ] buildConfigField("String", "APP_Name", "\"" + apps.applicationName + "\"") - - buildConfigField("String", "SPEECH_DOMAIN", "\"172.16.26.73:16443\"") - buildConfigField("String", "SPEECH_AK", "\"94c535874d7147dd81f7657ddd0cb1b0\"") - buildConfigField("String", "SPEECH_SK", "\"ewKSoNvn8mP2W93kmnzWAT5iVPsmKnMD\"") buildConfigField("String", "SPEECH_UID", "\"demo-user\"") buildConfigField("String", "SPEECH_DEVICE_ID", "\"demo-device\"") buildConfigField("String", "SPEECH_ASR_PATH", "\"/ar/audio/api/ws/asr/streaming\"") @@ -30,6 +26,38 @@ android { flavorDimensions "versioncode" } + productFlavors { + dev { + buildConfigField("String", "SPEECH_DOMAIN", "\"172.16.26.73:16443\"") + buildConfigField("String", "SPEECH_AK", "\"94c535874d7147dd81f7657ddd0cb1b0\"") + buildConfigField("String", "SPEECH_SK", "\"ewKSoNvn8mP2W93kmnzWAT5iVPsmKnMD\"") + buildConfigField("String", "API_AUTHORIZATION", "\"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJyb2tpZCIsInJuU3RyIjoiQTU3NlV1VVV3V2s5NEpxSjlQcU9keDE1bE1tdU5JYmMiLCJ1c2VySW5mbyI6eyJzdGFmZk5vIjoicm9raWQifX0.qp1zWjYjqtmFS7Udo7Ga-a_XhVNwRUByXYomu6P6yxg\"") + buildConfigField("String", "API_TOKEN", "\"3760384-DWuKlfwAYwWBsKAprAXF2lEAdKcyz1\"") + buildConfigField("String", "API_COOKIE", "\"__itrace_wid=87125211-8742-4f12-b5ca-32b9b6c860e4; locale=zh-Hans; _webtracing_device_id=t_13501877-b9b303fc-d3f52eb530e026b0\"") + buildConfigField("String", "API_ENVIRONMENT", "\"1\"") + buildConfigField("String", "API_CURRENT_USER_ID", "\"rokid\"") + } + fiveg { + buildConfigField("String", "SPEECH_DOMAIN", "\"172.16.26.73:16443\"") + buildConfigField("String", "SPEECH_AK", "\"94c535874d7147dd81f7657ddd0cb1b0\"") + buildConfigField("String", "SPEECH_SK", "\"ewKSoNvn8mP2W93kmnzWAT5iVPsmKnMD\"") + buildConfigField("String", "API_AUTHORIZATION", "\"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJyb2tpZCIsInJuU3RyIjoiQTU3NlV1VVV3V2s5NEpxSjlQcU9keDE1bE1tdU5JYmMiLCJ1c2VySW5mbyI6eyJzdGFmZk5vIjoicm9raWQifX0.qp1zWjYjqtmFS7Udo7Ga-a_XhVNwRUByXYomu6P6yxg\"") + buildConfigField("String", "API_TOKEN", "\"3760384-DWuKlfwAYwWBsKAprAXF2lEAdKcyz1\"") + buildConfigField("String", "API_COOKIE", "\"__itrace_wid=87125211-8742-4f12-b5ca-32b9b6c860e4; locale=zh-Hans; _webtracing_device_id=t_13501877-b9b303fc-d3f52eb530e026b0\"") + buildConfigField("String", "API_ENVIRONMENT", "\"1\"") + buildConfigField("String", "API_CURRENT_USER_ID", "\"rokid\"") + } + external { + buildConfigField("String", "SPEECH_DOMAIN", "\"172.16.26.73:16443\"") + buildConfigField("String", "SPEECH_AK", "\"94c535874d7147dd81f7657ddd0cb1b0\"") + buildConfigField("String", "SPEECH_SK", "\"ewKSoNvn8mP2W93kmnzWAT5iVPsmKnMD\"") + buildConfigField("String", "API_AUTHORIZATION", "\"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJyb2tpZCIsInJuU3RyIjoiQTU3NlV1VVV3V2s5NEpxSjlQcU9keDE1bE1tdU5JYmMiLCJ1c2VySW5mbyI6eyJzdGFmZk5vIjoicm9raWQifX0.qp1zWjYjqtmFS7Udo7Ga-a_XhVNwRUByXYomu6P6yxg\"") + buildConfigField("String", "API_TOKEN", "\"3760384-DWuKlfwAYwWBsKAprAXF2lEAdKcyz1\"") + buildConfigField("String", "API_COOKIE", "\"__itrace_wid=87125211-8742-4f12-b5ca-32b9b6c860e4; locale=zh-Hans; _webtracing_device_id=t_13501877-b9b303fc-d3f52eb530e026b0\"") + buildConfigField("String", "API_ENVIRONMENT", "\"1\"") + buildConfigField("String", "API_CURRENT_USER_ID", "\"rokid\"") + } + } buildTypes { debug { minifyEnabled false diff --git a/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt b/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt index affa054..1162518 100644 --- a/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt +++ b/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt @@ -1,6 +1,7 @@ package com.nova.brain.glass.repository import android.content.Context +import com.nova.brain.glass.BuildConfig import com.xuqm.base.common.SHARE_UESR_TOKEN import com.xuqm.base.extensions.getStringForPreferences import com.xuqm.base.extensions.log @@ -24,12 +25,12 @@ class HeaderInterceptor(val context: Context) : Interceptor { //请求定制:添加请求头 val requestBuilder = original.newBuilder() - .header("Authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJyb2tpZCIsInJuU3RyIjoiQTU3NlV1VVV3V2s5NEpxSjlQcU9keDE1bE1tdU5JYmMiLCJ1c2VySW5mbyI6eyJzdGFmZk5vIjoicm9raWQifX0.qp1zWjYjqtmFS7Udo7Ga-a_XhVNwRUByXYomu6P6yxg") - .addHeader("token", "3760384-DWuKlfwAYwWBsKAprAXF2lEAdKcyz1") + .header("Authorization", BuildConfig.API_AUTHORIZATION) + .addHeader("token", BuildConfig.API_TOKEN) .addHeader("Content-Type", "application/json;charset=UTF-8") - .addHeader("Cookie", "__itrace_wid=87125211-8742-4f12-b5ca-32b9b6c860e4; locale=zh-Hans; _webtracing_device_id=t_13501877-b9b303fc-d3f52eb530e026b0") - .addHeader("Environment", "1") - .addHeader("currentUserId", "rokid") + .addHeader("Cookie", BuildConfig.API_COOKIE) + .addHeader("Environment", BuildConfig.API_ENVIRONMENT) + .addHeader("currentUserId", BuildConfig.API_CURRENT_USER_ID) .addHeader("terminal", "1") .addHeader("modulename", "web") .addHeader("currentUserName", "") diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt index 12e63ea..9cd2ad4 100644 --- a/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt @@ -1,6 +1,7 @@ package com.nova.brain.glass.viewmodel import androidx.lifecycle.MutableLiveData +import com.nova.brain.glass.BuildConfig import com.nova.brain.glass.MyApplication import com.nova.brain.glass.model.TaskItem import com.nova.brain.glass.model.data.TaskListData @@ -24,7 +25,7 @@ class TaskListVM : BaseListViewModel() { override fun loadData(page: Int, onResponse: Response) { val finalParams = searchParams.copy( - userId = searchParams.userId.ifBlank { "rokid" } + userId = searchParams.userId.ifBlank { BuildConfig.API_CURRENT_USER_ID } ) add( HttpManager.getApi(Service::class.java) diff --git a/config.gradle b/config.gradle index 088b28a..160adef 100644 --- a/config.gradle +++ b/config.gradle @@ -22,6 +22,15 @@ ext { ] productF = { + dev { + dimension "versioncode" + } + fiveg { + dimension "versioncode" + } + external { + dimension "versioncode" + } } androidx = [