1. 说明

神策 Android 埋点 SDK 插件从 v4.0.0-beta 版本起为适配 AGP 8.0+(Android Gradle Plugin )做了比较大的功能更新,其中包括:

  1. 适配 AGP 8.0+ 的 Instrumentation API,兼容 Transform API;
  2. 支持  Gradle Plugins DSL 集成方式;
  3. 优化插件配置,具体请参考插件配置一节。

2. Plugins DSL  集成方式

2.1. 添加 Maven 仓库

settings.gradle 文件中添加 Maven 仓库:

pluginManagement {
    repositories {        
        gradlePluginPortal()
        google()
        mavenCentral() //Maven 仓库
		//...
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral() //Maven 仓库
		//...
    }
}
...
GROOVY

2.2. 声明插件路径

project/build.gradle 中添加神策插件的声明:

plugins {
    id 'com.android.application' version '7.3.1' apply false //demo used
    id 'com.android.library' version '7.3.1' apply false //demo used
    id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
    id 'org.jetbrains.kotlin.jvm' version '1.7.20' apply false
	//...
	//添加神策插件路径声明
    id 'com.sensorsdata.analytics.android' version "4.0.1" apply false
}
GROOVY

2.3. 使用插件

在 app/build.gradle 中使用插件:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
	//...
	//使用神策插件
    id 'com.sensorsdata.analytics.android' 
}
GROOVY

3. 常用插件配置说明

3.1. 插件 4.0.0+ 版本变动

为了简化插件配置以及适配 AGP 8.0+,从插件 4.0.0+ 版本开始删除了以下插件配置:

  • disablePlugin
  • disableMultiThreadBuild
  • disableIncrementalBuild
  • disableJar
  • disableTrackPush
  • disableCheckSDK
  • autoHandleWebView
配置删除原因和替代方式
  • disablePlugin
冗余的配置。可通过不使用插件替代。
  • disableMultiThreadBuild
无法适用在 AGP 8.0+ 中。
  • disableIncrementalBuild
无法适用在 AGP 8.0+ 中。
  • disableJar
无法适用在 AGP 8.0+ 中。
  • disableTrackPush
请使用 disableModules 替代。
  • disableCheckSDK
请使用 disableModules 替代。
  • autoHandleWebView
请使用 disableModules 替代。

注意

  • 若项目中涉及到上述配置,可选择不升级到 4.0.0+ 插件
  • 若项目使用了 AGP 8.0+ 版本,则需要选择替代方式。

3.2. debug

默认值是 false

​ 表示是否开启 debug 模式。

​ 如果开启 debug 模式,在编译期间会打印详细日志信息。

sensorsAnalytics {
	debug = true
}
CODE

3.3. exclude

​ 黑名单,可以通过 exclude 来指定处理哪些 class、package。

配置示例:

sensorsAnalytics {
      exclude = ['a.b.c', 'a.b.c.A'] 
}
CODE

不处理某个特定的类或包下面的所有类。

3.4. 开启 UC 浏览器打通

用于 UC 浏览器内核的打通注解插码。

sensorsAnalytics {
      addUCJavaScriptInterface = true 
}
CODE

3.5. sensorsAnalytics.isHookOnMethodEnter

是否在方法进入时插入代码,默认值为 false。该配置仅适用于插件版本 3.1.9 及以上。

如需配置,在工程的 gradle.properties 中加入以下配置:

sensorsAnalytics.isHookOnMethodEnter = true
CODE

3.6. disableModules 禁用模块

用于指明禁用的模块,被禁用的模块不会进行插桩。该配置仅适用于插件版本 4.0.1及以上,目前支持的配置有:

  1. AUTOTRACK:忽略全埋点插码
  2. PUSH:忽略推送插码
  3. WEB_VIEW:忽略 H5 打通插码
  4. REACT_NATIVE:忽略 RN 插码(4.0.2 版本支持)

特别是使用模块化方式依赖神策 SDK 时,要特别注意添加禁用模块,例如:

sensorsAnalytics {  
   disableModules = ['PUSH'] 
}
CODE

上述配置表示不会对推送模块进行插桩。