开始吧:产品-》移动统计-》进入新版-》创建新应用-》获取到appkey
一、在项目的build.gradle中添加
buildscript {
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/umsdk/release' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/umsdk/release' }
}
}
二、现在在module里添加依赖
// 下面各SDK根据宿主App是否使用相关业务按需引入。
// OAID目前为目前国内市场主流的Android Q设备标识,可根据需要选择。
// 友盟统计SDK
implementation 'com.umeng.umsdk:common:9.1.0' // (必选)
implementation 'com.umeng.umsdk:game:9.1.0+G' // 游戏统计SDK依赖(可选)
implementation 'com.umeng.umsdk:asms:1.1.3' // asms包依赖(必选)
implementation 'com.umeng.umsdk:crash:0.0.4' // native crash包依赖(必选)
implementation 'com.umeng.umsdk:oaid_lenovo:1.0.0' // (可选)
implementation 'com.umeng.umsdk:oaid_mi:1.0.0' // (可选)
implementation 'com.umeng.umsdk:oaid_oppo:1.0.4' // (可选)
implementation 'com.umeng.umsdk:oaid_vivo:1.0.0.1' // (可选)
三、清单文件中的权限
<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.INTERNET"/>
四、清单文件中的权限
<meta-data
android:name="UMENG_APPKEY"
android:value="你申请的友盟appkey" />
<!--value的值填写渠道名称,例如yingyongbao。这里设置动态渠道名称变量-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
五、初始化,在application的oncreate()方法里添加
//第一种 UMConfigure.init(this, "5f31f196b4b0*********", "ysj", UMConfigure.DEVICE_TYPE_PHONE, "");
/**
* 注意:如果您已经在AndroidManifest.xml中配置过appkey和channel值,可以调用此版本初始化函数。
*/
//第二种
UMConfigure.init(Context context, int deviceType, String pushSecret);
六、混淆配置
-keep class com.umeng.** {*;}
-keep class com.uc.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class com.zui.** {*;}
-keep class com.miui.** {*;}
-keep class com.heytap.** {*;}
-keep class a.** {*;}
-keep class com.vivo.** {*;}
七、配置渠道(与defaultConfig、signingConfigs、并列关系)
记得配置签名信息signingConfigs
/配置渠道/
flavorDimensions "default"
productFlavors{
loveeat {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "loveeat"]
}
yingyongbao {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
huawei {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei"]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360 "]
}
}
/*自定义打包apk名称*/
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
variant.productFlavors.each { flavor ->
def project = "acf"
def separator = "_"
def buildType = variant.variantData.variantConfiguration.buildType.name
def versionName = variant.versionName
def versionCode = variant.versionCode
def date = new Date()
def formattedDate = date.format('yyyyMMdd')
def apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + ".apk"
if (buildType == "release") {
apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + separator + formattedDate + ".apk"
}
output.outputFileName = apkName
}
}
}
八、 执行打包命令
只需在Android Studio的命令行Terminal下输入以下命令即可:
gradlew.bat assembleRelease