安装流程:
步骤一:获取App Key
步骤二:安装Smart SDK,支持Gradle(Android Studio)打包方法
步骤三:编译工程
步骤四:嵌码验证
步骤五:打包配置
获取App Key
安装Smart SDK之前,您需要在透视宝的>App应用页面中创建一个应用来获取App Key。为方便查看采集的数据,您需要为App应用设置一个有代表性的名称,可以是中文、英文、数字或三者的任意组合,但不能为空,否则无法获取App Key。
1. 保存应用后,透视宝自动生成对应的App Key,安装Smart SDK时需要使用该App Key,如下图所示。
2. 选择移动平台类型(Android)后,选择安装类型。
Gradle(Android Studio)打包方法
1. 下载配置文件
选择Gradle(Android Studio),单击下载配置文件Android-版本.zip,下载最新版本的配置文件。解压下载的安装包后开始安装,详细说明如下。
2. 引入Cloudwise的gradle插件
打开工程的根目录下的build.gradle(Project)文件,如下图所示:
在buildscript模块内添加如下代码:
mavenCentral()classpath 'com.cloudwise.mobile.android.plugins:cloudwise-gradle-plugin:2.2.0'
打开build.gradle(Module:app)文件,添加以下代码,从而使用cloudwise提供的gradle插件功能:
apply plugin: 'cloudwise'
3. 引入cloudwise的SDK实现库
在build.gradle(Module:app)文件中,添加以下代码,从而下载cloudwise提供的SDK实现库:
implementation 'com.cloudwise.mobile.android.distribute:cloudwise-mobile-distribute:2.2.0'
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两个方法。
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文件下,如下图所示:
如果打包时无法将SO库打包到apk包中,则在相应的build.gradle(module:app)文件中添加如下代码:
sourceSets.main { jniLibs.srcDir 'libs' jni.srcDirs = []}
具体如下图:
编译工程
配置完成后,清理当前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"] } }
配置示例: