You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们
导航

快速开始

最近更新时间2023.05.25 10:08:07

首次发布时间2023.02.10 17:13:21

本文为您介绍 Android 加载 SDK 的初始化和基本使用。

前提条件

初始化

请完成 Applog 和 Fresco 的初始化,代码示例如下所示:

注意

  • SDK 支持在控制台输出日志,用于观察用户行为日志上报情况。但请您在上线前请关闭该能力,将setLogEnable设为false并删除setLogger配置。
  • 初始化 Applog 时会采集用户信息,请确保您采集用户信息之前已经获得用户授权。合规建议:用户授权后再进行 Applog 的初始化,取得用户授权前所有信息不会采集,预置事件也不会被采集。
@Override
public void onCreate() {
    super.onCreate();
    initApplog(); // 初始化Applog
    initFresco(); // 初始化Fresco
}
private void initApplog() {
    /* 初始化开始 */   
    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(true);
    AppLog.init(this, config);
    /* 初始化结束 */
}
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 = "xxx";          // 渠道,根据实际业务填写
    String appName = "xxx";         // App 名称,业务方 app 名,根据实际业务填写
    com.bytedance.fresco.cloudcontrol.InitConfig initConfig = new com.bytedance.fresco.cloudcontrol.InitConfig(
            this,
            aid,
            appName,
            channel,
            versionName,
            versionCode,
            deviceId,
            InitConfig.CHINA   //国内版本设置为 CHINA;美东地区设置为 US_EAST;新加坡地区设置为 SINGAPORE;
    );
    
    // 请保持以下初始化顺序!
    //初始化云控
    CloudControl.init(initConfig);
    // 初始化TTNet
    FrescoTTNetFetcher frescoTTNetFetcher = new FrescoTTNetFetcher(initConfig);
    // 统计功能
    Set<RequestListener> listeners = new HashSet<>();
    listeners.add(new FrescoTraceListener());
    // 开启用户感知日志上报
    DraweeConfig.Builder draweeConfigBuilder = DraweeConfig.newBuilder().addGlobalControllerListener(new FrescoControllerListener());
    // 开启大图监控日志上报
    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());
}

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)

部分参数说明如下所示:

参数说明

appID

SDK 用于打点监控上报的最小单元,简写为 aid。请登录控制台我的应用获取。
通过此将数据进行隔离上报,同时通过 AppID 可以拉取对应的云控配置,比如客户端日志采样率、网络优化参数等。

deviceId设备 ID,根据实际业务填写,设备的唯一编号,用于统计区分使用。
appNameApp 名称,根据实际业务填写,用于统计使用。
versionNameApp 版本号,根据实际业务填写,主要用于数据统计与配置拉取。
versionCodeApp 版本 code,根据实际业务填写,主要用于数据统计与配置拉取。
channel渠道标识,根据实际业务填写。用于区分统计不同渠道来源的图片服务质量数据,如传入 huawei、oppo 等不同渠道标识。

如果图片库打点监控的信息上传成功,会有类似以下日志输出:

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

使用

BDFresco 基于开源 Fresco 进行开发,具体使用能力和方式请参考 Fresco 官方指南。