导入SDK
使用以 Android 本地仓库的形式导入本地依赖项。
SDK 以 zip 包的形式提供,下载后,会得到一份 Sample 源码,以及 repo.zip. 将解压的 repo 文件夹放到工程根目录中。repo 包含 SDK 所需的依赖库 【禁止调整包内文件的结构与命名,将会导致集成依赖不正常】
环境要求
名称 | 版本 |
---|---|
Java | 11 |
AGP | 4.2.0 + |
Gradle | 6.7.1 + |
支持的最低系统版本为 5.0(API 21):
minSdkVersion 21
目标 Android SDK 版本:
targetSdkVersion 30
环境配置
Android Studio 的代码库配置在 Gradle 插件 7.0 以下版本、7.0 及以上版本有所不同。请根据您当前的 Gradle 插件版本,选择对应的配置过程。
7.0 以下版本
- 打开根目录下的
build.gradle
(Project 视图下)添加如下配置。
groovy
buildscript {
repositories {
// 本地仓库
maven { url "${rootProject.getRootDir()}/repo" }
//Huawei官方maven仓库,华为离线推送
maven { url 'https://developer.huawei.com/repo/' }
//个推官方maven仓库,个推离线推送
maven { url "https://mvn.getui.com/nexus/content/repositories/releases/" }
//荣耀官方maven仓库,荣耀离线推送
maven { url 'https://developer.hihonor.com/repo/' }
maven { url 'https://maven.aliyun.com/repository/google' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/public' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }// 可选配置
maven { url 'https://jitpack.io' }// 可选配置
...
}
dependencies {
classpath 'com.android.tools.build:gradle:{version}' // 最低版本要求 4.2.0
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:{version}' // 最低版本要求 1.6.20
// 华为离线推送
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
allprojects {
repositories {
// 本地仓库
maven { url "${rootProject.getRootDir()}/repo" }
//Huawei官方maven仓库,华为离线推送
maven { url 'https://developer.huawei.com/repo/' }
//个推官方maven仓库,个推离线推送
maven { url "https://mvn.getui.com/nexus/content/repositories/releases/" }
//荣耀官方maven仓库,荣耀离线推送
maven { url 'https://developer.hihonor.com/repo/' }
maven { url 'https://maven.aliyun.com/repository/google' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/public' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }// 可选配置
maven { url 'https://jitpack.io' }// 可选配置
...
}
}
- 在应用的
build.gradle
中,添加编译配置项和 SDK 依赖
groovy
android {
buildToolsVersion "30.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
manifestPlaceholders = [
GETUI_APPID : "请填写您的个推APP ID",
MEIZU_APPKEY: "请填写您的魅族APP KEY",
MEIZU_APPID : "请填写您的魅族APP ID",
AMAP_API_KEY: "请填写您的高德API_KEY",
VIVO_APP_ID : "请填写您的VIVO APP_ID",
VIVO_API_KEY: "请填写您的VIVO API_KEY",
]
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
viewBinding true
dataBinding true
}
}
dependencies {
...
// repo/com/kingsoft/kim/sdk/woasdk下目录文件名即为版本号, 使用版本号替换$latestVersion
api 'com.kingsoft.kim.sdk:woasdk:$latestVersion'
api 'com.wps.woa.sdk:image-glide4wrap:1.0.13'
// 以下按需依赖不同厂商的推送SDK
api 'com.wps.woa.sdk:pushHuawei:0.0.7'
api 'com.wps.woa.sdk:pushOppo:0.0.7'
api 'com.wps.woa.sdk:pushVivo:0.0.7'
api 'com.wps.woa.sdk:pushXiaomi:0.0.9'
api 'com.wps.woa.sdk:pushHonor:0.0.4'
api 'com.wps.woa.sdk:pushMeizu:0.0.6'
api 'com.wps.woa.sdk:pushGetui:0.0.4'
}
- 在项目中使用 androidx 库
groovy
android.useAndroidX=true
android.enableJetifier=true
7.0 及以上版本
- 打开根目录下的
settings.gradle
(Project 视图下)添加如下配置。
groovy
pluginManagement {
repositories {
// 本地仓库
maven { url "${rootProject.getRootDir()}/repo" }
//Huawei官方maven仓库,华为离线推送
maven { url 'https://developer.huawei.com/repo/' }
//个推官方maven仓库,个推离线推送
maven { url "https://mvn.getui.com/nexus/content/repositories/releases/" }
//荣耀官方maven仓库,荣耀离线推送
maven { url 'https://developer.hihonor.com/repo/' }
maven { url 'https://maven.aliyun.com/repository/google' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/public' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }// 可选配置
maven { url 'https://jitpack.io' }// 可选配置
...
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
// 本地仓库
maven { url "${rootProject.getRootDir()}/repo" }
//Huawei官方maven仓库,华为离线推送
maven { url 'https://developer.huawei.com/repo/' }
//个推官方maven仓库,个推离线推送
maven { url "https://mvn.getui.com/nexus/content/repositories/releases/" }
//荣耀官方maven仓库,荣耀离线推送
maven { url 'https://developer.hihonor.com/repo/' }
maven { url 'https://maven.aliyun.com/repository/google' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/public' }// 可选配置
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }// 可选配置
maven { url 'https://jitpack.io' }// 可选配置
...
}
}
- 打开根目录下的
build.gradle
(Project 视图下)添加如下配置。
groovy
buildscript {
dependencies {
// 增加Android Gradle插件版本号配置,{version}为实际的Gradle插件版本号
classpath 'com.android.tools.build:gradle:{version}'
// 华为离线推送
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
...
}
}
plugins {
id 'org.jetbrains.kotlin.android' version '{version}' apply false // kotlin-gradle插件版本,与相应Gradle版本匹配
...
}
- 在应用的
build.gradle
中,添加编译配置项和 SDK 依赖
groovy
plugins {
...
// 华为离线推送插件
id 'com.huawei.agconnect'
}
android {
defaultConfig {
...
minSdk 21
targetSdk 29
manifestPlaceholders = [
GETUI_APPID : "请填写您的个推APP ID",
MEIZU_APPKEY: "请填写您的魅族APP KEY",
MEIZU_APPID : "请填写您的魅族APP ID",
AMAP_API_KEY: "请填写您的高德API_KEY",
VIVO_APP_ID : "请填写您的VIVO APP_ID",
VIVO_API_KEY: "请填写您的VIVO API_KEY",
]
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
dataBinding true
}
}
dependencies {
...
// repo/com/kingsoft/kim/sdk/woasdk下目录文件名即为版本号, 使用版本号替换$latestVersion
api 'com.kingsoft.kim.sdk:woasdk:$latestVersion'
api 'com.wps.woa.sdk:image-glide4wrap:1.0.13'
// 以下按需依赖不同厂商的推送SDK
api 'com.wps.woa.sdk:pushHuawei:0.0.7'
api 'com.wps.woa.sdk:pushOppo:0.0.7'
api 'com.wps.woa.sdk:pushVivo:0.0.7'
api 'com.wps.woa.sdk:pushXiaomi:0.0.9'
api 'com.wps.woa.sdk:pushHonor:0.0.4'
api 'com.wps.woa.sdk:pushMeizu:0.0.6'
api 'com.wps.woa.sdk:pushGetui:0.0.4'
}
- 在项目中使用 androidx 库
groovy
android.useAndroidX=true
android.enableJetifier=true
混淆配置
groovy
##---------------start: proguard configuration for meizu push ----------
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** { *; }
##---------------end: proguard configuration for meizu push ----------
# 小米推送
-keep class com.wps.woa.sdk.push.manufactory.xiaomi.XiaomiMessageReceiver {*;}
#可以防止一个误报的 warning 导致无法成功编译,如果编译使用的 Android 版本是 23。
-dontwarn com.xiaomi.push.**
# 华为推送
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
# OPPO推送
-keep public class * extends android.app.Service
-keep class com.heytap.msp.** {*;}
# VIVO推送
-dontwarn com.vivo.push.**
-keep class com.vivo.push.**{*;}
-keep class com.vivo.vms.**{*;}
-keep class com.wps.woa.sdk.push.manufactory.vivo.VivoMessageReceiver {*;}
#amap 3dmap
-keep class com.amap.api.** {*;}
-keep class com.autonavi.** {*;}
#location
-keep class com.amap.api.location.** {*;}
-keep class com.amap.api.fence.** {*;}
-keep class com.autonavi.aps.amapapi.model.** {*;}
#amap search
-keep class com.amap.api.services.** {*;}
# kotlin 相关
-dontwarn kotlin.**
-keep class kotlin.** {*;}
-keep interface kotlin.** {*;}
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
-keepclasseswithmembers @kotlin.Metadata class * {*;}
-keepclassmembers class **.WhenMappings {
<fields>;
}
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}
-keep class kotlinx.** {*;}
-keep interface kotlinx.** {*;}
-dontwarn kotlinx.**
-dontnote kotlinx.serialization.SerializationKt
-keep class org.jetbrains.** {*;}
-keep interface org.jetbrains.** {*;}
-dontwarn org.jetbrains.**
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
##---------------End: proguard configuration for Gson ----------