mPaaS Android 60 基线提供了多套开发环境间切换的能力,能够帮助开发者在多套开发环境间(如:开发 DEV/测试 TEST/体验 UAT/线上 PROD)方便自如地进行切换。
对于 mPaaS 开发者,在切换开发环境的过程中,涉及到以下配置文件的改动:
.config
配置文件 Ant-mpaas-xxx-Android.config
,配置在 portal 的 app ⽬录下,用于存放应用推送服务地址、网关服务地址等。详情参见 在控制台创建应用。mpaas_netconfig.properties
配置⽂件,配置在 portal
的 assets
⽬录下,⽤于存放 RPC 数据加密方式、加密公钥等。详情参见 数据加密 > Android 配置custom_config.json
配置文件,配置在 portal
的 assets
目录下,⽤于存放离线包验签开关、沉浸标题栏开关等。详情参见 H5 容器配置。Nebula
组件进行设置。详情参见 配置离线包。AndroidManifest
⽂件中。详情参见 添加 UC SDK。切换开发环境时,需要将项⽬中涉及到上述配置之处进行手动替换或者修改。下一节将介绍如何通过 gradle 配置实现开发环境的自由切换。
切换开发环境需要修改的配置有两种:
portal-app
下,根据项目需求新建各个开发环境目录,存放不同环境的配置文件。mpaas_netconfig.properties
拷贝至对应目录;custom_config.json
拷贝至对应目录。在 portal-app
的 gradle 中配置如下内容:
//配置 mPaaS App 开发环境,将 .config 配置文件拷贝到主 Module 下
def setAppConfigEnv(String type){
File configFile = file("${rootDir}/app").listFiles().find{File f ->
f.name.endsWith(".config")
}
if(configFile != null && configFile.exists()){
delete(configFile)
}
copy {
from "buildEnv/${type}"
into "${rootDir}/app"
include "**/*.config"
}
}
在 portal-app
的 gradle 中配置如下内容:
//配置 RPC 数据加密开发环境,将配置文件拷贝到 assets 资源目录下
def setNetConfigEnv(String type){
copy {
from "buildEnv/${type}/mpaas_netconfig.properties"
into "${rootDir}/app/src/main/assets"
}
}
在 portal-app
的 gradle 中配置如下内容:
//配置离线包开发环境,将配置文件拷贝到 assets 资源目录下
def setNebulaEnv(String type){
copy {
from "buildEnv/${type}/custom_config.json"
into "${rootDir}/app/src/main/assets/config"
}
}
custom_config.json
文件中:
[
{
"value": "YES",
"key": "h5_shouldverifyapp"
},
{
"value": "your public key",
"key": "h5_shouldverifyapp_pubkey"
}
]
通过读取 H5 容器配置 获取离线包验签公钥,通过切换 H5 容器配置 实现切换离线包验签公钥:
/**
* 根据H5容器配置文件解析离线包验签公钥
* @return 离线包验签公钥
*/
public String getAppVerificationPubkey(){
String configStr = getFromAssets("config/custom_config.json");
JSONArray jsonArray = JSON.parseArray(configStr);
if(jsonArray != null && jsonArray.size() > 0){
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String key = jsonObject.getString("key");
if(key.equals("h5_shouldverifyapp_pubkey")){
String value = jsonObject.getString("value");
return value;
}
}
}
return null;
}
/**
* 获取 portal assets 目录文件内容
* @param fileName 文件名称
* @return 文件内容
*/
public String getFromAssets(String fileName){
try {
MicroApplicationContext context = MPFramework.getMicroApplicationContext();
InputStreamReader inputReader = new InputStreamReader(context.getApplicationContext().getResources().getAssets().open(fileName));
BufferedReader bufReader = new BufferedReader(inputReader);
String line= "";
String Result= "";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
String pubkey = getAppVerificationPubkey();
if(!TextUtils.isEmpty(pubkey)){
MPNebula.enableAppVerification(pubkey);
}
UC SDK key 存放在 AndroidManifest.xml
中:
<application>
...
<meta-data android:name="UCSDKAppKey" android:value="${GRADLE_APP_UCKEY}"/>
...
</application>
可以通过在 portal-app
的 gradle 中配置 manifestPlaceholders
进行切换:
buildTypes {
release {
manifestPlaceholders = [GRADLE_APP_UCKEY : 'your release uc key']
...
}
debug {
...
manifestPlaceholders = [GRADLE_APP_UCKEY : 'your debug uc key']
...
}
}
在 portal-app
的 gradle 中配置,通过调用该方法,传入环境参数实现自动切换:
// 根据环境类型切换开发环境
// type = dev/test/uat/prod 可根据配置目录自由扩展
def switchBuildEnv(String type){
setAppConfigEnv(type)
if(file("buildEnv/${type}/custom_config.json").exists()){
setNebulaEnv(type)
}
if(file("buildEnv/${type}/mpaas_netconfig.properties").exists()){
setNetConfigEnv(type)
}
}
在 portal-app
的 gradle 中调用切换方法:
buildTypes {
// 切换开发环境
switchBuildEnv('prod')
release {
...
}
debug {
...
}
}
点击这里 下载代码示例。
在文档使用中是否遇到以下问题
更多建议
匿名提交