九吨Android统计SDK接入文档

版本: v2.1.3

更新日期: 2025.5.14

开发者: 重庆市九吨科技有限公司

主要功能: 进行APP数据统计分析

隐私政策协议 合规使用文档

Demo下载

引入SDK

maven自动集成

通过在Android Studio工程build.gradle配置脚本中添加maven线上依赖,导入最新版本统计SDK。

maven依赖配置

在工程build.gradle配置脚本中allprojects段中添加统计SDK maven仓库地址。

如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入:

allprojects {
            repositories {
                maven {
                    url = "http://coding.nineton.cn/api/v4/projects/404/packages/maven"
                    allowInsecureProtocol true
                    credentials(HttpHeaderCredentials.class) {
                        name = "Private-Token"
                        value = "glpat-sZXKypAo5hSYFm9wp5Fy"
                    }
                    authentication {
                        header(HttpHeaderAuthentication.class)
                    }
                }
        
                google()
                jcenter()
                mavenCentral()
                maven { url "https://jitpack.io" }
            }
        }
  

如果你的 Gradle 配置是 7.0 及以上,可能需要在 settings.gradle 文件中加入:

Groovy

dependencyResolutionManagement {
            repositories {
                maven {
                    url = "http://coding.nineton.cn/api/v4/projects/404/packages/maven"
                    allowInsecureProtocol true
                    credentials(HttpHeaderCredentials.class) {
                        name = "Private-Token"
                        value = "glpat-sZXKypAo5hSYFm9wp5Fy"
                    }
                    authentication {
                        header(HttpHeaderAuthentication.class)
                    }
                }
                
                google()
                jcenter()
                mavenCentral()
                maven { url "https://jitpack.io" }
            }
        }
  

Kotlin

dependencyResolutionManagement {
            repositories {
                maven("http://coding.nineton.cn/api/v4/projects/404/packages/maven") {
                    isAllowInsecureProtocol = true
                    credentials(HttpHeaderCredentials::class) {
                        name = "Private-Token"
                        value = "glpat-sZXKypAo5hSYFm9wp5Fy"
                    }
                    authentication {
                        create("header")
                    }
                }
                
                google()
                jcenter()
                mavenCentral()
                maven("https://jitpack.io")
            }
        }
  

在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库:

dependencies {
            implementation("com.smart.analytics.sdk:SmartAnalytics:2.1.3")
       }
  

集成

SDK初始化

在用户阅读您的《隐私政策》并取得用户授权之后,才调用正式初始化函数SmartAnalytics.init()初始化统计SDK,此时SDK才会真正采集设备信息并上报数据。反之,如果用户不同意《隐私政策》授权,则不能调用SmartAnalytics.init()初始化函数。 一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证在Application.onCreate函数中调用初始化函数SmartAnalytics.init()。

再次强调,初始化后会自动发送启动事件,所以会采集设备信息,请在用户同意隐私政策后调用

        
    val initConfig = AnalyticsInitConfig(
        appId = "您申请的appid",
        appKey = "您申请的appkey",
        channel = ChannelConfig.BAIDU, // 渠道枚举
        enableOAID = false, // SDK是否采集OAID,关闭OAID采集示例
        // 配置自定义OAID获取逻辑,默认不配置;若配置,则SDK自身不会有采集OAID的行为,会调用这个Callback获取
        customOaidCallback = {"自定义OAID获取"},  
        // 配置自定义Android_id获取逻辑,默认不配置;若配置,则SDK自身不会有采集android_id的行为,会调用这个Callback获取
        customAndroidIdCallback = {"自定义Android_ID获取"}
    )
        val isSuc = SmartAnalytics.init(initConfig)
        
    

日志显示

可通过SmartAnalytics.setDebug((boolean)接口控制统计SDK LOG的输出。 默认情况下 SDK运行调试日志关闭, 需要用户手动打开。注意: App正式上线前请关闭SDK运行调试日志, 避免无关Log输出。

混淆设置

如果您的应用使用了代码混淆,请添加如下配置,以避免统计SDK被错误混淆导致SDK不可用。


    #  oaid混淆配置
    # sdk
    -keep class com.bun.miitmdid.** { *; }
    -keep interface com.bun.supplier.** { *; }
    -keep class androidx.core.**{*;}
    # asus
    -keep class com.asus.msa.SupplementaryDID.** { *; }
    -keep class com.asus.msa.sdid.** { *; }
    # freeme
    -keep class com.android.creator.** { *; }
    -keep class com.android.msasdk.** { *; }
    # huawei
    -keep class com.huawei.hms.** {*;}
    -keep interface com.huawei.hms.** {*;}
    # lenovo
    -keep class com.zui.deviceidservice.** { *; }
    -keep class com.zui.opendeviceidlibrary.** { *; }
    # meizu
    -keep class com.meizu.flyme.openidsdk.** { *; }
    # nubia
    -keep class com.bun.miitmdid.provider.nubia.NubiaIdentityImpl
    # oppo
    -keep class com.heytap.openid.** { *; }
    # samsung
    -keep class com.samsung.android.deviceidservice.** { *; }
    # vivo
    -keep class com.vivo.identifier.** { *; }
    # xiaomi
    -keep class com.bun.miitmdid.provider.xiaomi.IdentifierManager
    # zte
    -keep class com.bun.lib.** { *; }
    # coolpad
    -keep class com.coolpad.deviceidsupport.** { *; }
    # EEBBK
    #None
    # honor
    -keep class com.hihonor.** {*; }
    #  oaid混淆配置结束

    # 中台sdk
    -keep class com.smart.analytics.sdk.** {*; }
  
  

方法说明

data class AnalyticsInitConfig (
    /**
     * appid, 必须
     */
    val appId: String,
        
    /**
     * appkey, 必须
     */
    val appKey: String,
        
    /**
     * 渠道枚举, 必须
     */
    val channel: ChannelConfig,
        
    /**
     * 登录用户id, 可选
     */
    var userId: String? = null,
        
    /**
     * 登录用户是否vip, >0: 是, 0: 不是,  可选
     */
    var isVip: Int? = null,
        
    /**
     * 自定义渠道名称,当[channel]为[ChannelConfig.OTHER]时使用, 可选
     */
    var customChannel: String? = null,
        
    /**
     * 接口地址, 国内可选,海外必须
     */
    var baseUrl: String? = null,
        
    /**
     * 是否后台上报
     */
    var isBackstageReport: Boolean = false,
       
    /**
     * 是否拦截获取应用列表方法
     */
    var isInterceptAppList: Boolean = true,
      
    /**
     * SDK是否采集OAID,默认为true
     */
    var enableOAID: Boolean = true,
      
    /**
     * 配置自定义OAID获取逻辑,默认不配置;若配置,则SDK自身不会有采集OAID的行为,会调用这个Callback获取
     */
    var customOaidCallback: ()->String = { "" },
      
    /**
     * 配置自定义Android_id获取逻辑,默认不配置;若配置,则SDK自身不会有采集android_id的行为,会调用这个Callback获取
     */
    var customAndroidIdCallback: ()->String = { "" }
)