SDK 下载和配置
SDK 下载
基本功能 SDK,包含登录支付等基础服务
稳定版(V5.2.4)
- Android SDK 下载:Android_SDK_v5.2.4
更新说明
- 修复若干 bug
- 接入风控 sdk
- 大数据 sdk 更新到 V125
灰度版
【如需使用灰度版请和技术对接人员确认】
* Android SDK 下载:【目前暂无灰度版本】
注意事项
- SDK 的onCreate接口要先于init接口调用
- SDK 的 init 接口必须在游戏检测更新前调用
- SDK 初始化成功前请勿调用 SDK 其它接口(onCreate 除外)
- 游戏包名以".ewan"结尾
- 请从引擎版工程中导出 Android Studio 工程后对接 SDK
- 工程是否使用 AndroidX 的判断:项目根目录/gradle.properties 文件中, 是否配置了
android.useAndroidX=true
环境要求
所需组件或内容 | 版本 | 备注 |
---|---|---|
Android Studio | 3.3+ | |
Gradle 版本 | 4.10+ | |
Gradle 插件版本 | 3.3+ | |
Android Support 库版本 | 28.0.0+ | |
SDK 最高支持 target 版本 | 30 |
SDK 包内容
// 以下内容为SuperSDK_V5xx的内容,后续版本里的内容和结构可能会有更新,以版本更新说明的内容为准。
SuperSDK_V5xx.zip : SuperSDK基于Android Studio的版本库及对应Demo
├── libs : 基于Android Studio工程的SDK库文件
│ ├── SuperSDK_V5xx_lib_enc.aar : SDK主库文件
│ ├── SuperSDK_V5xx_lib_AndroidX_enc.aar : SDK主库文件(AndroidX版)
│ ├── SuperSDK_V5xx_lib_cp_module.aar : SDK模拟接入功能组件
│ ├── EEvent_125.aar : SDK数据埋点功能组件
│ ├── SuperAdSDK_V241_lib.aar : SDK广告相关功能组件(非必须)
│ └── SuperAdSDK_V241_lib_cp_module.aar : SDK模拟广告相关功能组件(非必须)
│ └── dx-captcha-without-risk-v5.4.3r.a33fe7f5.aar : 风控sdK
│ └── dx-risk-v7_3_14r_df6398ec-with-armeabi.aar : 风控sdK
│ └── EwRiskSDK_V100_lib_core.aar : 风控sdK
├── SuperSDK_V5xx_Demo : SDK基于Android Studio的接入示例工程
└── SuperSDK_V5xx_Demo.apk : SDK可运行Demo包
SDK 导入
修改 lib 级 build.gradle 文件
- 将SuperSDK_V5xx_lib_AndroidX.aar(如工程的配置非 AndroidX, 则使用SuperSDK_V5xx_lib.aar)、SuperSDK_V5xx_lib_cp_module.aar文件拷贝至 libs 目录下, XXX 的具体版本请按实际文件替换
...
//TODO 添加以下内容以便引入aar依赖
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
//TODO 以api的形式添加以下内容,以供其它module使用
api "com.android.support:support-v4:${rootProject.ext.supportLibVer}"
api(name: 'dx-captcha-without-risk-v5.4.3r.a33fe7f5', ext: 'aar')
api(name: 'dx-risk-v7_3_14r_df6398ec-with-armeabi', ext: 'aar')
api(name: 'EwRiskSDK_V100_lib_core', ext: 'aar')
api(name: 'EEvent_125', ext: 'aar')
api(name: 'SuperSDK_V5xx_lib_cp_module', ext: 'aar')
//api(name: 'SuperSDK_V5xx_lib_enc', ext: 'aar') // 非AndroidX工程使用此库
api(name: 'SuperSDK_V5xx_lib_AndroidX_enc', ext: 'aar') // AndroidX工程使用此库
// 广告功能(激励视频), 可选, 需要使用该功能时添加以下依赖
//api(name: 'SuperAdSDK_V241_lib', ext: 'aar')
//api(name: 'SuperAdSDK_V241_lib_cp_module', ext: 'aar')
}
...
修改 App Module 级 build.gradle 文件
apply plugin: 'com.android.application'// 包含application plugin的即为app module
android {
...
defaultConfig {
// TODO 设置应用包名
applicationId "cn.ewan.supersdk.demo"
...
ndk {
// TODO 根据app实际需求指定要ndk需要兼容的架构: "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
// TODO 为SDK添加AndroidManifest的横竖屏设置及包名占位值, 横竖屏及包名根据实际应用配置
manifestPlaceholders = [screen_orientation: "portrait", package_name: applicationId]
...
}
// TODO 避免混淆so文件
packagingOptions{
doNotStrip "*/armeabi/*.so"
doNotStrip "*/armeabi-v7a/*.so"
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/x86/*.so"
doNotStrip "*/x86_64/*.so"
}
// TODO 如果SDK的aar是在lib module引入的, 而不是在当前app module引入的, 则当前app module的gradle中, 还需要添加以下内容, dirs的值指向引入SDK的aar文件的lib module下的libs目录
//repositories {
// flatDir {
// dirs '../sdk_lib/libs'
// }
//}
...
}
修改 App Module 级 AndroidManifest.xml 文件
...
<!-- TODO networkSecurityConfig:添加网络安全配置, 以在Android9.0上访问http资源 -->
<!-- TODO requestLegacyExternalStorage:添加传统储存模式配置,以在Android 10上访问公共储存空间 -->
<!-- TODO preserveLegacyExternalStorage:添加传统储存模式配置,以在Android 11以上暂时关闭分区存储模式 -->
<application
...
android:networkSecurityConfig="@xml/super_network_security_config"
android:requestLegacyExternalStorage="true"
android:preserveLegacyExternalStorage="true" >
...
</application>
混淆
- 如需混淆, 请在app 级的 proguard-rules.pro 文件中添加以下规则, 建议不混淆(minifyEnabled 设为 false), SDK 本身已混淆处理:
-dontwarn android.support.**
-keep class android.support.** { *; }
-keep class com.android.** { *; }
-keep public class * extends android.support.** #如果有引用v4或者v7包,需添加
-keep public class * extends android.app.Dialog
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.support.multidex.MultiDexApplication
-keep public class * extends android.os.IInterface
-keep public class com.android.vending.licensing.ILicensingService
#-keep public class * extends android.view.View
# androidx
-keep class com.google.android.material.** {*;}
-keep class androidx.** {*;}
-keep public class * extends androidx.**
-keep interface androidx.** {*;}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
native methods;
}
#不混淆Serializable
-keepnames class * implements java.io.Serializable
# 保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static fields;
}
-keep public class * extends android.webkit.WebViewClient {
public methods;
}
-keep public class * extends android.webkit.WebChromeClient {
public methods;
}
-keepclassmembers class ** {
@android.webkit.JavascriptInterface public *;
}
# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclasseswithmembers class * { # 保持自定义控件类不被混淆
public init(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * { # 保持自定义控件类不被混淆
public init(android.content.Context, android.util.AttributeSet, int);
}
# 保留google下的所有类及其内部类
-keep class com.google.** {*;}
-dontwarn com.google.**
#============================================ 标准规则 end ============================================
-keeppackagenames com.ew.bdb.open*
-keeppackagenames cn.ewan.supersdk*
-keeppackagenames com.superad*
-keeppackagenames com.bangcle*
-keeppackagenames ijiami_*
-keep class com.bangcle.** {*;}
-keep class ijiami_** {*;}
-keep class cn.ewan.supersdk.** {*;}
-keep class com.superad.** {*;}
-keep class com.ew.bdb.** {*;}
#MiitSDK start
-keep class com.a.** {*;}
-keep class com.asus.** {*;}
-keep class com.b.** {*;}
-keep class com.bun.** {*;}
-keep class com.huawei.** {*;}
-keep class com.zui.** {*;}
-keep class com.heytap.** {*;}
-keep class com.meizu.** {*;}
-keep class com.samsung.** {*;}
#MiitSDK end
转换资源文件为 AndroidX
项目使用 AndroidX SDK 时,需要配置,否则无需配置
项目根目录下 gradle.properties 添加
android.useAndroidX=true
android.enableJetifier=true
同步 gradle 配置
- 修改完成后, 同步 gradle 配置