文档

Native SDK接入

更新时间:

EMAS React-Native页面性能监控底层依赖的仍然是Native(iOS/Android)端的SDK,所以React-Native相关的SDK安装完毕后,还需要在Native(iOS/Android)端接入相应的Native SDK。

准备工作

接入SDK前,请确保在阿里云移动研发平台(EMAS)上创建相关产品,并获得相应的配置文件(包含appKey, appSecret, rsaPublicKey)等关键配置信息。

iOS SDK接入

本文档适用于使用cocoaPods管理依赖的Xcode项目,适用于iOS 8.0及以上版本的App编辑react-native项目iOS目录下的Podfile文件。

  1. 指定官方仓库和阿里云仓库

    Podfile中指定source。

    source "https://github.com/CocoaPods/Specs.git"
    source "https://github.com/aliyun/aliyun-specs.git"
  2. 添加SDK

    pod 'AlicloudCrash' , '~> 1.1.0'

    添加完SDK后执行如下命令:

    pod install
  3. 下载配置文件

    在EMAS平台上下载App对应的配置文件-AliyunEmasServices-Info.plist

    说明

    已经完成准备工作,即已经在EMAS平台上创建相关产品。

    将配置文件放到iOS的工程目录内, 如图所示:崩溃分析

  4. 初始化SDK

    打开AppDelegate.m,对SDK进行初始化:

    1. 引入头文件:

      #import <AlicloudCrash/AlicloudCrashProvider.h>
      #import <AlicloudHAUtil/AlicloudHAProvider.h>
    2. 在didFinishLaunchingWithOptions方法内对SDK进行初始化,示例代码:

      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      {
         ...
        
        //emas初始化
        @try {
          [self emasInit];
        } @catch (NSException *exception) {
          NSLog(@"Emas-->exception is %@", exception);
        } @finally {
        }
        
        return YES;
      }
      
      - (void) emasInit {
        // channel根据实际情况填写
        NSString* channel = @"emas-rn";
        // nick根据App实际情况填写
        NSString* nick = @"emas-rn-demo";
        NSString* appVersion = [self getAppVersion];
        
        [[AlicloudCrashProvider alloc] autoInitWithAppVersion:appVersion channel:channel nick:nick];
      
        [AlicloudHAProvider start];
      }
      
      - (NSString *)getAppVersion
      {
          NSDictionary *appinfo = [[NSBundle mainBundle] infoDictionary];
          NSString *version = [appinfo objectForKey:@"CFBundleShortVersionString"];
          if (!version) {
              version = @"1.0.0";
          }
          return version;
      }

Android SDK接入

  1. 添加Maven仓库。

    在ReactNative的android目录下的build.gradle文件中,添加仓库地址:

    buildscript {
        ...
        repositories {
            google()
            mavenCentral()
            maven {
                url 'http://maven.aliyun.com/nexus/content/groups/public/'
            }
            maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
        }
        dependencies {
            classpath("com.android.tools.build:gradle:4.1.2")
        }
    }
  2. 添加SDK。

    在android/app目录下的build.gradle文件中添加如下依赖:

    dependencies {
        ....
    
        //HA Adapter 高可用
        implementation('com.aliyun.ams:alicloud-android-ha-adapter:1.1.5.1-open')
         //crash reporter
        implementation('com.aliyun.ams:alicloud-android-ha-crashreporter:1.2.5')
       
    }
  3. 初始化SDK。

    打开MainApplication(一般的ReactNative都是使用自动创建的MainApplication,如果接入的App有自定义的Application,就在自定义的Application里面添加初始化代码),初始化代码一般放在onCreate方法中,示例代码:

    import com.alibaba.ha.adapter.AliHaAdapter;
    import com.alibaba.ha.adapter.AliHaConfig;
    import com.alibaba.ha.adapter.Plugin;
    
    ...
    @Override
    public void onCreate() {
     super.onCreate();
     SoLoader.init(this, /* native exopackage */ false);
     initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
    
     emasInit();
    }
     
    private void emasInit() {
      AliHaConfig config = new AliHaConfig();
      //设为自己的appKey
      config.appKey = "xxx";
      config.appVersion = BuildConfig.VERSION_NAME;
      //设为自己的appSecret
      config.appSecret = "xxxxx";
      //根据实际情况设置
      config.channel = "xxxx";
      //根据实际情况设置
      config.userNick = "xxxxx";
      config.application = this;
      config.context = this.getApplicationContext();
      config.isAliyunos = false;
      /* tlog公钥,在控制台下载aliyun-emas-services.json文件, 文件内的appmonitor.tlog.rsaSecret字段即为公钥信息 */
      config.rsaPublicKey = HA_RSA_PUBLIC_KEY;
      config.initAsync = false;
    
      AliHaAdapter adapter = AliHaAdapter.getInstance();
      adapter.addPlugin(Plugin.crashreporter);
      adapter.openDebug(true);
      //是否使用http,根据实际情况设置,默认是false,即使用https
      adapter.openHttp(true);
    
      adapter.start(config);
     }

  • 本页导读 (0)