Install
openclaw skills install @squall0925/umeng-uapp-integration帮助用户在 Android 项目中快速集成友盟 U-APP 统计 SDK。包括自动配置依赖、权限、初始化代码、混淆规则等。触发:用户提到'友盟'、'umeng'、'U-APP'、'统计 SDK'、'集成友盟'、'移动统计'、'应用埋点'等关键词。
openclaw skills install @squall0925/umeng-uapp-integration✅ 使用此技能当:
❌ 不使用此技能当:
在项目根目录的 build.gradle 或 build.gradle.kts 中添加:
buildscript {
repositories {
google()
mavenCentral()
maven { url 'https://repo1.maven.org/maven2/' }
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://repo1.maven.org/maven2/' }
}
}
在 app/build.gradle 或 app/build.gradle.kts 的 dependencies 块中添加:
dependencies {
// 友盟统计 SDK - 必选
implementation 'com.umeng.umsdk:common:9.6.6'
implementation 'com.umeng.umsdk:asms:1.6.4'
// 高级运营分析功能依赖库 - 可选(使用卸载分析、反作弊时必选)
implementation 'com.umeng.umsdk:uyumao:1.1.2'
// ABTest 功能 - 可选
implementation 'com.umeng.umsdk:abtest:1.0.0'
}
在 AndroidManifest.xml 的 <manifest> 标签内添加:
<!-- 必选权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 可选权限(用于反作弊和地域分布) -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
创建或修改 Application 类:
package com.your.package
import android.app.Application
import com.umeng.analytics.MobclickSdk
import com.umeng.commonsdk.UMGlobals
class YourApplication : Application() {
override fun onCreate() {
super.onCreate()
// 合规初始化:预初始化(不会采集数据)
MobclickSdk.preInit(this, "YOUR_APP_KEY", "default")
}
// 在用户同意隐私政策后调用正式初始化
fun initUmengAfterPrivacyAgreed() {
MobclickSdk.init(this, "YOUR_APP_KEY")
MobclickSdk.setChannel("default")
// 调试模式(发布前请关闭)
UMGlobals.setDebugMode(true)
}
}
在 AndroidManifest.xml 中注册 Application:
<application
android:name=".YourApplication"
... >
</application>
重要:根据工信部要求,必须在用户同意隐私政策后再初始化 SDK:
// 在 Application.onCreate() 中 - 预初始化(不采集数据)
override fun onCreate() {
super.onCreate()
MobclickSdk.preInit(this, "YOUR_APP_KEY", "channel")
}
// 在用户同意隐私政策后 - 正式初始化
fun onPrivacyPolicyAgreed() {
MobclickSdk.init(this, "YOUR_APP_KEY")
MobclickSdk.setChannel("channel")
}
如果应用使用混淆,添加以下规则:
# 友盟 SDK
-keep class com.umeng.** { *; }
-keep class com.ut.** { *; }
-keep class org.android.** { *; }
-keep class org.agoo.** { *; }
-keep class anet.channel.** { *; }
-keep class anetwork.channel.** { *; }
-keep class com.ta.** { *; }
-keep class com.ut.device.** { *; }
-keep class org.json.** { *; }
-keep class com.uyumao.** { *; }
# 保留 R 文件
-keep public class com.your.package.R$* {
public static final int *;
}
在 AndroidManifest.xml 中添加 scheme 用于测试埋点:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 埋点验证 scheme -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="um.YOUR_APP_KEY" />
</intent-filter>
</activity>
override fun onResume() {
super.onResume()
MobclickSdk.onPageStart("PageName")
MobclickSdk.onResume(this)
}
override fun onPause() {
super.onPause()
MobclickSdk.onPageEnd("PageName")
MobclickSdk.onPause(this)
}
// 在 Compose 中手动统计
MobclickSdk.onPageStart("HomePage")
// ... 页面内容
MobclickSdk.onPageEnd("HomePage")
// 简单事件
MobclickSdk.onEvent(context, "button_click")
// 带参数的事件
val attributes = mapOf(
"button_id" to "submit",
"page" to "home",
"user_level" to "vip"
)
MobclickSdk.onEvent(context, "button_click", attributes)
// 带数值的事件(用于统计金额、时长等)
MobclickSdk.onEvent(context, "purchase", mapOf("item_id" to "123"), 99.0)
// 设置用户 ID(登录后调用)
MobclickSdk.setUserId("user_12345")
// 清除用户 ID(登出时调用)
MobclickSdk.clearUserId()
在隐私政策中需要包含以下说明:
我们接入了友盟+SDK,友盟+SDK需要收集您的设备信息(IMEI/MAC/Android ID/OAID/IDFA/OpenUDID/GUID/IP 地址/SIM 卡 IMSI 信息等)及粗略位置(可选),
用于统计分析服务,以帮助您了解应用使用情况。
友盟+隐私政策链接:https://www.umeng.com/page/policy
setDebugMode(false)