安装流程:

步骤一获取App Key

步骤二:安装Smart SDK,支持Gradle(Android Studio)打包方法

步骤三编译工程

步骤四嵌码验证

步骤五:打包配置



获取App Key

安装Smart SDK之前,您需要在透视宝的image.png>App应用页面中创建一个应用来获取App Key。为方便查看采集的数据,您需要为App应用设置一个有代表性的名称,可以是中文、英文、数字或三者的任意组合,但不能为空,否则无法获取App Key。

1.    保存应用后,透视宝自动生成对应的App Key,安装Smart SDK时需要使用该App Key,如下图所示。

 1658284831987957.png

2.    选择移动平台类型(Android)后,选择安装类型。

Gradle(Android Studio)打包方法

1.      下载配置文件

选择Gradle(Android Studio),单击下载配置文件Android-版本.zip,下载最新版本的配置文件。解压下载的安装包后开始安装,详细说明如下。

2.      引入Cloudwise的gradle插件

打开工程的根目录下的build.gradle(Project)文件,如下图所示:

1658282318944803.png

在buildscript模块内添加如下代码:

mavenCentral()classpath 'com.cloudwise.mobile.android.plugins:cloudwise-gradle-plugin:2.2.0'

1658282381382762.png

打开build.gradle(Module:app)文件,添加以下代码,从而使用cloudwise提供的gradle插件功能:

apply plugin: 'cloudwise'

1658282425152291.png

3.      引入cloudwise的SDK实现库

在build.gradle(Module:app)文件中,添加以下代码,从而下载cloudwise提供的SDK实现库:

implementation 'com.cloudwise.mobile.android.distribute:cloudwise-mobile-distribute:2.2.0'

1658282486214980.png

4.      配置网络权限

在AndroidManifest.xml 文件中,添加以下命令到<application></application>前面,从而使App具有访问网络和网络信息的权限。

<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" />

5.      配置混淆信息

如果您的App工程使用了混淆,为了保证Smart SDK可以正常使用,请在proguard-project.txt文件的最后添加以下命令:

-keep class com.cloudwise.agent.app.** {*;}-dontwarn com.cloudwise.agent.app.**-keepattributes Exceptions, Signature, InnerClasses

6.      初始化SDK

Application 中的 onCreate() 方法初始化Android SDK。

/*** appKey: 创建应用时生成的App Key* domain: 透视宝部署平台域名 例如:https://seagull-data.toushibao.com*/CWSDK.withAppKey(appKey, domain)        .start(context); /*** 开启logcat日志、默认关闭,可省略,生产上建议关闭*/       CWSDK.withAppKey(appKey, domain)        .enableLogging(true) //打开logcat日志开关        .start(context);

提醒:App Key在创建应用时生成;应用创建完成后,可以在透视宝平台上单击App列表>选择对应应用>设置>常规>自定义,就可以查看AppKey了。

7.      WebView配置

注意:

采集 WebView 数据需调用 setWebViewClient() 方法,若嵌码 App 中未调用该方法,请添加以下内容:

webview.setWebViewClient(new WebViewClient(){});

如果存在自定义WebViewClient,需要重写onPageStarted、onPageFinished两个方法。

1658283122884226.png

8.      集成Android NDK

如果要对Native类型的崩溃信息进行解析和还原,您还需要集成Android NDK。

注意:目前Android的SO库支持armeabi-v7a、arm64-v8a、x86_64、x86 CPU架构。如果libs架构数与上述架构不一致,可能会出现“java.lang.UnsatisfiedLinkError”异常。

如果项目中已经有SO库使用的情况,下载后解压zip包, 将Android NDK中的全部内容(CPU架构目录及对应的SO库)拷贝到应用项目现有的SO库对应的目录即可。

如果项目中没有SO库使用的情况,下载后解压zip包,将Android NDK 中的全部内容(CPU架构目录及对应的SO库)拷贝到app 目录下的libs文件下,如下图所示:

image094.png

如果打包时无法将SO库打包到apk包中,则在相应的build.gradle(module:app)文件中添加如下代码:

sourceSets.main {    jniLibs.srcDir 'libs'    jni.srcDirs = []}

具体如下图:

1658283221947509.png

编译工程

配置完成后,清理当前App工程并重新编译,确保Android SDK配置生效。

嵌码验证

嵌码完成后可通过LogCat查看SDK日志输出结果,用来进行数据收集服务器校验是否成功, 在标准日志中过滤TAG 为 CLOUDWISE的输出,结果如下所示:

// SDK版本
CWSDK Version = [2.2.0]
//SDK初始化成功
CWSDK Init Success.
// NDK Crash初始化日志
W/[CLOUDWISE-NativeCrash]: ------------------ CLOUDWISE Native Crash
------------------
I/[CLOUDWISE-NativeCrash]: [init] Native Crash init...
I/[CLOUDWISE-NativeCrash]: [init] Native Crash Version : [V 2.2.0]
I/[CLOUDWISE-NativeCrash]: [init] Native Crash api_level = [29]
W/[CLOUDWISE-NativeCrash]:
W/[CLOUDWISE-NativeCrash]: ------------------------------------------------------------
 
//NDK Http初始化日志
I/[CLOUDWISE]: Native http init...
W/[CLOUDWISE-NativeHttp]: ------------------ CLOUDWISE Native Http ------------------
I/[CLOUDWISE-NativeHttp]: [init] Native Http init...
I/[CLOUDWISE-NativeHttp]: [init] Native Http Version : [V 2.2.0]
I/[CLOUDWISE-NativeHttp]: [init] Native Http PackageName = [com.cw.tsb]
I/[CLOUDWISE-NativeHttp]: [+] sym 0x793b1c9e90, symidx 300.
I/[CLOUDWISE-NativeHttp]: [+] sym 0x793b1c9e60, symidx 298.
I/[CLOUDWISE-NativeHttp]: [+] sym 0x793b1c9cc8, symidx 281.
I/[CLOUDWISE-NativeHttp]: [+] sym 0x793b1ca088, symidx 321.
I/[CLOUDWISE-NativeHttp]: [+] sym 0x7949557c68, symidx 277.
I/[CLOUDWISE-NativeHttp]: [+] sym 0x79495582b0, symidx 344.
I/[CLOUDWISE-NativeHttp]: [+] sym 0x7949557d58, symidx 287.
I/[CLOUDWISE-NativeHttp]: [+] sym 0x7947d087f8, symidx 59.
W/[CLOUDWISE-NativeHttp]: ------------------------------------------------------------

至此,Smart SDK已经安装部署完成,在模拟器或真实设备中运行App。Smart SDK开始收集数据并生成分析报告,只需要稍等片刻,您就能在移动应用列表中查看数据。

打包配置

n  打印注入日志

Java
cloudwise {
    injectDebug = true // 默认false
}

n  增量编译

Java
cloudwise {
    incremental = true // 默认true
}


n  清理注入后的class文件

Java
cloudwise {
    isCleanProject = true //默认false
}

n  自定义冷启动mainActivity

Java
cloudwise {
    mainActivity = "com.cw.tsb.activity.MainActivity" 
    //默认读取清单文件中的mainActivity 标志:android.intent.action.MAIN
}

n  注入日志前缀

Java
cloudwise {
    logPrefix = true // 默认false
}

n  自动上传符号表

Java
cloudwise {
    uploadSymbol {
        autoUpload = true //开启自动上传符号表,默认关闭
        appKey = "App Key" // 透视宝前端创建移动应用时的appKey
        uploadDomain = "http://..." //数据上传域名
        versionName = VersionName  //App版本
    }
}


n  排除包名中的字节码注入/修改

Java
cloudwise {
    excludePackage { //两者可同时生效
        //若不为空,只注入到配置的包名下,若打包没有问题无需配置
        includePackage = ["com.cw.tsb"]
        //若不为空,以下配置的报名不会注入,若打包没有问题无需配置
        filterPackage = ["com.cw.tsb.activity.h5", "com.ccc", "com.aaa.ccc"]
    }
}

配置示例:

1658283386759390.png