You need to enable JavaScript to run this app.
导航
快速开始
最近更新时间:2024.07.29 16:54:02首次发布时间:2023.02.10 17:13:21

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

前提条件

您已完成加载 SDK 的集成准备

初始化与启动

单独集成加载 SDK

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

注意

  • SDK 支持在控制台输出日志,用于观察用户行为日志上报情况。但请您在上线前请关闭该能力,将setLogEnable设为false并删除setLogger配置。
  • 您可根据实际情况自主选择是否接入 SDK 的日志上报扩展功能。若不接入,将无法使用日志上报埋点日志上报回调自定义日志上报采样率云控配置。同时,导致 veImageX 控制台的下行网络监控客户状态监控感知指标监控告警管理无相关数据展示。
  • 日志上报能力依赖于 Applog 模块,为实现日志上报功能 Applog 会采集用户的 MEI、MEID、硬件序列号、Android ID、OAID、MAC 等信息(详见 veImageX 图片加载 SDK 隐私政策)。强烈建议您启用该功能模块,若您无需使用日志上报或不希望隐私数据被采集,请在初始化时删除 Applog 相关代码。
  • 如需使用 Applog ,请按照流程完成初始化 Applog,其次确保已经获得用户授权并进入业务场景后,调用 AppLog.start() 接口来手动启动 Applog 模块,开始进行日志上报和数据采集操作。
@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。请登录控制台我的应用获取。
通过此将数据进行隔离上报,同时通过 AppID 可以拉取对应的云控配置,比如客户端日志采样率、网络优化参数等。

deviceId设备 ID,根据实际业务填写,设备的唯一编号,用于统计区分使用。
appNameApp 名称,根据实际业务填写,用于统计使用。
versionNameApp 版本号,根据实际业务填写,主要用于数据统计与配置拉取。
versionCodeApp 版本 code,根据实际业务填写,主要用于数据统计与配置拉取。
channel渠道标识,根据实际业务填写。用于区分统计不同渠道来源的图片服务质量数据,如传入 huawei、oppo 等不同渠道标识。
uriConfig地区,根据实际业务填写。如果 App 为非中国区域用户服务,则需修改设置为海外,采样后的日志则自动上报到海外地区。
tokentoken,请如实填写,您可通过应用管理获取该账号唯一的 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

同时集成加载 SDK 和上传 SDK

在 3.1.0-tob 及之后版本,若您需要同时集成加载 SDK 和上传 SDK 时,需要根据日志上报所使用的 AppID 是否一致,区分 AppLog 的初始化操作

加载 SDK 和上传 SDK 使用相同的 AppID 上报日志信息时,请参考以下代码示例进行初始化。

说明

在使用相同 APPID 完成加载 SDK 和上传 SDK 的 AppLog 初始化后,您可参考单独集成加载 SDKinitFresco ,完成剩余加载 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 官方指南。