iOS SDK升级指南

本文档指导开发者从原有的崩溃分析、性能分析和远程日志三个独立SDK升级到阿里云移动监控All In One SDK的替换

一、前提条件

  • 已接入崩溃分析、性能分析和远程日志一个或者多个产品

  • 顶层独立依赖以下Framework

    • 崩溃分析:AlicloudCrash、AlicloudApmCrashAnalysis

    • 性能分析:AlicloudAPM

    • 远程日志:AlicloudTLog

二、移除SDK依赖

  1. 去除依赖

    target 'YourTarget' do
      # pod 'AlicloudCrash'            删除依赖
      # pod 'AlicloudApmCrashAnalysis' 删除依赖
      # pod 'AlicloudAPM'              删除依赖
      # pod 'AlicloudTLog'             删除依赖
    end
  2. 执行安装命令:

    pod install

三、接入新SDK

方式一:Cocoapods集成(推荐)

  1. 创建/修改Podfile:

    source 'https://github.com/CocoaPods/Specs.git'
    source 'https://github.com/aliyun/aliyun-specs.git'
    
    platform :ios, '13.0'
    use_frameworks!
    
    target 'YourTarget' do
      pod 'AlicloudApmAll', '~> 2.0.0'
    end
    说明

    Xcode项目的根目录中,定位并编辑Podfile文件,以添加AlicloudApmAll依赖项(执行pod search AlicloudApmAll命令,查询其最新版本)。如果根目录中没有Podfile文件,可以通过在终端中运行pod init命令来创建一个新的Podfile。如果您的计算机上尚未安装CocoaPods,请先参考CocoaPods官网完成安装。

  2. 执行安装命令:

    pod repo update AliyunRepo
    pod install
    
    # 如果您尚未添加阿里云Cocoapods仓库,请先执行以下命令添加仓库
    # pod repo add AliyunRepo https://github.com/aliyun/aliyun-specs.git

方式二:手动集成

  1. 参考快速入门文档下载最新SDK

  2. 解压并添加Framework:

    1. 将以下xcframework拖入工程

      AlicloudAPM.xcframework

      AlicloudApmAll.xcframework

      AlicloudApmCore.xcframework

      AlicloudApmCrashAnalysis.xcframework

      AlicloudApmPerformance.xcframework

      AlicloudApmRemoteLog.xcframework

      AlicloudNetworkMonitor.xcframework

      AlicloudTLog.xcframework

      AliHACore.xcframework

      AliHAMemoryMonitor.xcframework

      AliHAPerformanceMonitor.xcframework

      AliyunOSSiOS.framework

      EMASRest.xcframework

      FBRetainCycleDetector.xcframework

      TRemoteDebugger.xcframework

      UTDID.xcframework

    2. 详细操作步骤如下图所示。image

  3. 相同方式引入开源库文件:

  4. 打开Build Phases > Link Binary With Libraries,添加Xcode自带的公共包文件:

    • libc++.tbd

    • libz.tbd

    • libresolv.tbd

    • CoreTelephony.framework

    • SystemConfiguration.framework

说明
  • Xcode兼容性

    使用较低版本的 Xcode 时,可能需要手动添加以下系统库以确保兼容性:

    • libz.tbd

    • libresolv.tbd

    • CoreTelephony.framework

    • SystemConfiguration.framework

  • 链接设置

    如果在运行时遇到问题,可以尝试在以下位置添加 -ObjC 参数:

    1. 打开项目设置。

    2. 导航到 TARGETS。

    3. 选择 Build Settings。

    4. 找到 Linking 部分。

    5. 在 Other Linker Flags 中添加 -ObjC。

四、升级API

1. 崩溃分析

  • 如果应用依赖AlicloudApmCrashAnalysis SDK,则不需要升级API

老接口

新接口

#import <AlicloudCrash/AlicloudCrashProvider.h>

/*!
* @brief 设置用户信息
* @details 设置用户信息,崩溃时带上。总数据量要求小于10Kb
* @param key key
* @param value value
*/
+ (void)configCustomInfoWithKey:(NSString *)key value:(NSString *)value;
/**
 * 设置自定义维度的键值对
 *
 * @param value 值
 * @param key   唯一键
 */
- (void)setCustomValue:(nullable id)value forKey:(NSString *)key;

/**
 * 批量设置自定义维度的键值对
 *
 * @param keysAndValues 键值对
 */
- (void)setCustomKeysAndValues:(NSDictionary *)keysAndValues;
#import <AlicloudCrash/AlicloudCrashProvider.h>

/*!
* @brief 用户自定义错误上报
* @details 用户自定义错误上报
* @param error 用户把错误封装为标准NSError
*/
+ (void)reportCustomError:(NSError *)error;
/**
 * 记录异常对象
 *
 * @param error 异常对象
 */
- (void)recordError:(NSError *)error;

/**
 * 记录异常对象
 *
 * @param error 异常对象
 * @param userInfo 附加键值对
 */
- (void)recordError:(NSError *)error
           userInfo:(nullable NSDictionary<NSString *, id> *)userInfo;
#import <AlicloudCrash/AlicloudCrashProvider.h>

/*!
* @brief 设置崩溃回调信息
* @details 设置崩溃回调信息
* @param crashReporterAdditionalInformationCallBack 返回字典不超过10kb,不要有耗时操作,只支持字符串
*/
+ (void)setCrashCallBack:(NSDictionary * (^)(NSString * type))crashReporterAdditionalInformationCallBack;
  • 暂不支持

2. 远程日志

老接口

新接口

// 老接口示例
#import <TRemoteDebugger/TLogBiz.h>
#import <TRemoteDebugger/TLogFactory.h>

+ (TLogBiz *)createTLogForModuleName:(NSString*)moduleName;
#import "AlicloudApmRemoteLog/EAPMRemoteLog.h"

+ (EAPMRemoteLog *)createLogForModuleName:(NSString*)moduleName;
#import <TRemoteDebugger/TLogBiz.h>
#import <TRemoteDebugger/TLogFactory.h>

- (void)debug:(NSString *)message;
- (void)debug:(NSString *)message exception:(NSException *)exception;

- (void)info:(NSString *)message;
- (void)info:(NSString *)message exception:(NSException *)exception;

- (void)warn:(NSString *)message;
- (void)warn:(NSString *)message exception:(NSException *)exception;

- (void)error:(NSString *)message;
- (void)error:(NSString *)message exception:(NSException *)exception;
#import "AlicloudApmRemoteLog/EAPMRemoteLog.h"

/**
 * 记录debug级别日志
 *
 * @param message 要记录的日志内容
 */
- (void)debug:(NSString *)message;

/**
 * 记录debug级别日志,附带异常对象
 *
 * @param message 要记录的日志内容
 * @param exception 异常对象
 */
- (void)debug:(NSString *)message exception:(NSException *)exception;

/**
 * 记录info级别日志
 *
 * @param message 要记录的日志内容
 */
- (void)info:(NSString *)message;

/**
 * 记录info级别日志,附带异常对象
 *
 * @param message 要记录的日志内容
 * @param exception 异常对象
 */
- (void)info:(NSString *)message exception:(NSException *)exception;

/**
 * 记录warn级别日志
 *
 * @param message 要记录的日志内容
 */
- (void)warn:(NSString *)message;

/**
 * 记录warn级别日志,附带异常对象
 *
 * @param message 要记录的日志内容
 * @param exception 异常对象
 */
- (void)warn:(NSString *)message exception:(NSException *)exception;

/**
 * 记录error级别日志
 *
 * @param message 要记录的日志内容
 */
- (void)error:(NSString *)message;

/**
 * 记录error级别日志,附带异常对象
 *
 * @param message 要记录的日志内容
 * @param exception 异常对象
 */
- (void)error:(NSString *)message exception:(NSException *)exception;
#import <TRemoteDebugger/TRDManagerService.h>

+ (TLogLevel)updateLogLevel:(TLogLevel)logLevel;
#import "AlicloudApmRemoteLog/EAPMRemoteLog.h"

+ (EAPMRemoteLogLevel)updateLogLevel:(EAPMRemoteLogLevel)logLevel;

3. 性能分析

说明

性能分析不涉及API