SDK 初始化

最近更新时间:2024-04-10 15:12:31

我的收藏

配置文件获取

开发人员从腾讯云小程序平台获取对应 App 的配置文件,该配置文件是一个 json 文件,包含该 App 使用小程序平台的所有信息,将配置文件引入到项目的 assets 根目录。获取配置文件操作,可参见 获取容器 SDK 凭证

注意:
应用包名必须与配置文件中 packageName 保持一致,否则运行时无法通过校验。
如果不一致,不能直接修改配置文件包名,应通过下面两种方式来修正:
修改工程中应用包名,与配置文件中包名一致。
控制台修改应用包名,与工程中应用包名保持一致,并重新下载配置文件。


配置信息设置

实现 MiniConfigProxy 类
添加如下注解
@ProxyService(proxy = MiniConfigProxy.class)
参考代码:
@ProxyService(proxy = MiniConfigProxy.class)
public class MiniConfigProxyImpl extends MiniConfigProxy {
/**
* 应用Application
* @return
*/
@Override
public Application getApp() {
return "app Application";
}

/**
* 创建初始化配置信息
* @return
*/
@Override
public MiniInitConfig buildConfig() {
MiniInitConfig.Builder builder = new MiniInitConfig.Builder();
MiniInitConfig config = builder
.configAssetName("tcmpp-android-configurations.json") //assets中配置文件名称
.imei("IMEI") //配置设备id,⽤于在管理平台上根据设备标识进⾏⼩程序的灰度发布使⽤(可选)
.autoRequestPermission(true) //配置小程序使用到需要权限的API时是否自动向用户申请对应的系统权限
.debug(true) //日志开关,默认关闭的
.build();
}
}
继承并实现 MiniConfigProxy 类后,就可以通过启动小程序接口打开小程序了,sdk 内部会自动进行初始化。
从 mini_core 1.5.1.1版本之后,可通过 MINI_SHARK 过滤日志,确定初始化是否成功,初始化成功会输出:shark init ok!



如果初始化失败会输出:shark init failed! 及具体错误原因。



如果初始化失败,可参考如下常见原因进行排查。

工程编译失败排查

原因一:出现如下错误

检查工程中是否有如下配置,如果有则去掉。
kapt.include.compile.classpath=false

小程序启动失败排查

原因一:配置文件路径错误,configAssetName 设置的是 assets 目录下文件的完整路径,如果配置文件在子目录下需要追加目录路径,例如:server/tcmpp-android-configurations.json。
原因二:不允许修改小程序配置文件内容,否则小程序无法正常运行。
原因三:配置文件中的 packageName 必须与应用的 applicationId 保持一致,否则 App 运行失败,因为初始化时会校验配置文件中的 packageName,可以通过如下设置不进行包名校验。
MiniInitConfig config = builder
.verifyPkg(false)//忽略包名校验
.build();


原因四:确定上面初始化注解@ProxyService是否生成了如下类ExtProxyServiceScope


隐私合规说明

sdk 的初始化是在用户调用 TmfMiniSDK 类的方法时调用的,所以在用户同意隐私合规授权之后,再调用 TmfMiniSDK 类中提供的方法即可。

其它初始化动作(非必须设置)

设置地区或者账号,方便进行灰度推送时使用。
/**
* 设置账号信息
* @param userId
*/
public static void setUserId(String userId)

/**
* 设置位置信息
* @param country
* @param province
* @param city
*/
public static void setLocation(String country, String province, String city)

X5初始化监听(非必须设置)

如果需要监听X5初始化是否成功,可通过如下方式获取初始化回调。
@ProxyService(proxy = IX5EventProxy.class)
public class X5EventProxyImpl implements IX5EventProxy {
/**
* X5初始化成功回调
* @param isX5
*/
@Override
public void init(boolean isX5) {
}
}