配置文件获取
开发人员从腾讯云小程序平台获取对应 App 的配置文件,该配置文件是一个 json 文件,包含该 App 使用小程序平台的所有信息,将配置文件引入到项目的 assets 根目录。获取配置文件操作,可参见 获取容器 SDK 凭证。
注意:
应用包名必须与配置文件中 packageName 保持一致,否则运行时无法通过校验。
如果不一致,不能直接修改配置文件包名,应通过下面两种方式来修正:
修改工程中应用包名,与配置文件中包名一致。
控制台修改应用包名,与工程中应用包名保持一致,并重新下载配置文件。
配置信息设置
实现 MiniConfigProxy 类
添加如下注解
@ProxyService(proxy = MiniConfigProxy.class)
参考代码:
@ProxyService(proxy = MiniConfigProxy.class)public class MiniConfigProxyImpl extends MiniConfigProxy {/*** 应用Application* @return*/@Overridepublic Application getApp() {return "app Application";}/*** 创建初始化配置信息* @return*/@Overridepublic 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*/@Overridepublic void init(boolean isX5) {}}