本文为您介绍 Android 加载 SDK 的初始化和基本使用。
您已完成加载 SDK 的集成准备。
请完成 Applog 和 Fresco 的初始化,代码示例如下所示:
注意
setLogEnable
设为false
并删除setLogger
配置。@Override public void onCreate() { super.onCreate(); initAppLog(); // 如果您需要使用日志上报扩展功能,则请按照以下顺序初始化 AppLog,并在已获得用户授权并进入业务场景后调用 AppLog.start() 接口手动启动。如果无需使用日志上报请注释或删除 Applog 相关代码。 initFresco(); // 初始化 BDFresco } private void initAppLog() { // 开始初始化 Applog,如果无需使用日志上报扩展功能,请注释或删除 Applog 相关代码 final com.bytedance.applog.InitConfig config = new com.bytedance.applog.InitConfig("your_appid", "your_channel"); // appid和渠道,channel 不能为空 config.setUriConfig (UriConstants.DEFAULT); // 国内上报地址,国外则有SINGAPORE,AMERICA,SINGAPORE_ALI,REGION_DEFAULT(=SINGAPORE) config.setLogEnable(true); // 是否在控制台输出日志,可用于观察用户行为日志上报情况,上线请关闭该能力 config.setLogger(new ILogger() { @Override public void log(String s, Throwable throwable) { Log.d("AppLog------->: ",""+s);//指定为 debug 包才会打印日志 } }); config.setH5CollectEnable (false);//关闭内嵌 H5 页面的无埋点事件 AppLog.setEncryptAndCompress(true); // 加密开关。false 为关闭加密,上线时建议设置为 true config.setAutoStart(false); AppLog.init(this, config); // Applog 初始化结束 } private void initFresco() { String aid = "xxx"; // App ID,应用管理获取 String deviceId = "xxx"; // 设备 ID,根据实际业务填写 String versionName = "0.0.1"; // App 版本号,根据实际业务填写 String versionCode = "1"; // App 版本 code,根据实际业务填写 String channel = "debug"; // 渠道,根据实际业务填写 String appName = "Sample"; // App 名称,业务方 app 名,根据实际业务填写 List<String> encodedAuthCode = new ArrayList<>(); encodedAuthCode.add("xxxxxxxxxxxxxxxxxxxxxxxxx"); com.bytedance.fresco.cloudcontrol.InitConfig initConfig = new com.bytedance.fresco.cloudcontrol.InitConfig( this, aid, appName, channel, versionName, versionCode, deviceId, InitConfig.CHINA, //国内版本设置为 CHINA;新加坡地区设置为 SINGAPORE; "M2ZmYzkzZjUtN2", // 传入获取的 Token 值 encodedAuthCode // 传入获取的授权码 List<String> ); // 注意须保持以下顺序! // 初始化云控及授权 CloudControl.init(initConfig); // TTNet FrescoTTNetFetcher frescoTTNetFetcher = new FrescoTTNetFetcher(initConfig); // 统计功能 Set<RequestListener> listeners = new HashSet<>(); listeners.add(new FrescoTraceListener()); // 开启用户感知日志上报。该能力依赖 Applog,若未完成初始化与启动 Applog,则无法使用该功能 DraweeConfig.Builder draweeConfigBuilder = DraweeConfig.newBuilder().addGlobalControllerListener(new FrescoControllerListener()); // 开启大图监控日志上报。该能力依赖 Applog,若未完成初始化与启动 Applog,则无法使用该功能 FrescoMonitor.setExceedTheLimitBitmapMonitorEnabled(true); // 设置网络库 ImagePipelineConfig.Builder builder = ImagePipelineConfig.newBuilder(this) .setNetworkFetcher(frescoTTNetFetcher) .setRequestListeners(listeners) // HEIF功能配置 .setImageDecoderConfig(ImageDecoderConfig.newBuilder().addDecodingCapability( HeifDecoder.HEIF_FORMAT, new HeifDecoder.HeifFormatChecker(),new HeifDecoder.HeifFormatDecoder(false)).build());// true表示优先使用硬解,false表示优先使用软解,推荐设置false Fresco.initialize(this, builder.build(), draweeConfigBuilder.build()); }
在确保已经获得用户授权并进入业务场景后,请调用以下方法手动启动 Applog 模块,开始日志上报和数据采集操作。
AppLog.start(); //启动 Applog 模块
InitConfig
构造参数均不能为null
。
InitConfig(@NonNull Application context, @NonNull String aid, @NonNull String appName, @NonNull String channel, @NonNull String versionName, @NonNull String versionCode, @NonNull String deviceId, int uriConfig, String token, List<String> encodedAuthCode)
部分参数说明如下所示:
参数 | 说明 |
---|---|
appID | SDK 用于打点监控上报的最小单元,简写为 aid。请登录控制台我的应用获取。 |
deviceId | 设备 ID,根据实际业务填写,设备的唯一编号,用于统计区分使用。 |
appName | App 名称,根据实际业务填写,用于统计使用。 |
versionName | App 版本号,根据实际业务填写,主要用于数据统计与配置拉取。 |
versionCode | App 版本 code,根据实际业务填写,主要用于数据统计与配置拉取。 |
channel | 渠道标识,根据实际业务填写。用于区分统计不同渠道来源的图片服务质量数据,如传入 huawei、oppo 等不同渠道标识。 |
uriConfig | 地区,根据实际业务填写。如果 App 为非中国区域用户服务,则需修改设置为海外,采样后的日志则自动上报到海外地区。 |
token | token,请如实填写,您可通过应用管理获取该账号唯一的 Token 值。 |
encodedAuthCode | 授权码,请如实填写,您可通过 License 授权管理获取购买 License 后下载至本地的授权码。 注意 建议您在授权码到期前完成续期操作,并在 SDK 中及时更新为最新授权码,以免影响您的业务使用。 |
如果图片库打点监控的信息上传成功,会有类似以下日志输出:
2021-06-16 21:48:44.516 8711-8988/com.dwz.DwzMobileApp D/AppLog------->:: setResult, [{pack, u1, 1, , 1623851324390}], [] 2021-06-16 21:48:44.520 8711-8988/com.dwz.DwzMobileApp D/AppLog------->:: sender 1 1
在 3.1.0-tob 及之后版本,若您需要同时集成加载 SDK 和上传 SDK 时,需要根据日志上报所使用的 AppID 是否一致,区分 AppLog 的初始化操作。
加载 SDK 和上传 SDK 使用相同的 AppID 上报日志信息时,请参考以下代码示例进行初始化。
说明
在使用相同 APPID 完成加载 SDK 和上传 SDK 的 AppLog 初始化后,您可参考单独集成加载 SDK 的 initFresco
,完成剩余加载 SDK 的初始化操作。
// 1. 执行上传 SDK 初始化 Env.init( Config.Builder() .setApplicationContext(context) .setAutoStartAppLog(false) .setAppID("your app id") .setAppName("your app English name") // 合法版本号应大于、等于 3 位,如:"1.3.2" .setAppVersion(BuildConfig.VERSION_NAME) .setAppChannel("channel name") .build()); // 2. 获取上传 SDK AppLog 实例 val applogInstance = AppLogWrapper.getAppLogInstance() // 加密开关。false 为关闭加密,上线时建议设置为 true applogInstance.encryptAndCompress = true // 3. 设置 AppLog 实例到图片加载 SDK AppLogTool.setMultiAppLogInstance(applogInstance) // 注意:如果 config 中 autoStart 设置为 false,那么您可使用以下任意一种方法手动启动 Applog 模块,开始日志上报和数据采集操作。 // 在确保已经获得用户授权并进入业务场景后,请调用以下方法手动启动 Applog 模块,开始日志上报和数据采集操作。 AppLogTool.start() // 或者 Env.startAppLog()
BDFresco 基于开源 Fresco 进行开发,具体使用能力和方式请参考 Fresco 官方指南。