SDK 下载和配置
Google Play 合规要求
- Google Play 上架要求应用的 targetSdkVersion 为 34 及以上(需要 Gradle8+)
- 建议 compileSdkVersion 升到 34
- Google Play 上架要求应用必须支持 64 位,如包体包含 armeabi-v7a 库,则必须同时包含 arm64-v8a 库;如果包体包含 x86 库,则必须同时包含 x86_64 库
- 对于敏感权限,如非必需,不要使用
- 适配分区储存功能(Android10 及以上),禁止申请"MANAGE_EXTERNAL_STORAGE"权限(所有文件访问权限),否则可能被 Google 下架应用
SDK 下载
基本功能 SDK,包含登录支付等基础服务
稳定版(V5.5.2)
- Android SDK 下载:SuperSDKIntl_SDK_V5.5.2
更新说明
- 内部逻辑优化
灰度版
【如需使用灰度版请和技术对接人员确认】
* Android SDK 下载:【目前暂无灰度版本】
环境要求
所需组件或内容 | 版本 | 备注 |
---|---|---|
Android Studio | 3.3+ | |
Gradle 版本 | 8+ | |
Gradle 插件版本 | 4.1+ | |
AndroidX 库版本 | 1.7.0+ | |
SDK 最低支持 target 版本 | 34 |
SDK 包内容
SuperSDKIntl_SDK_VXXX.zip: IyaGameSDK基于Android Studio的版本库及对应Demo
├── SuperSDKIntl_Demo: SDK基于Android Studio的接入示例工程
│ ├── _demo: Demo模块
│ └── ...: 其它Android Studio工程文件
├── libs: SDK库文件
│ ├── EEvent_xxx.aar: SDK数据埋点功能组件
│ ├── SuperSDKIntl_VXXX_lib.aar: SDK接入模块
│ ├── SuperSDKIntl_VXXX_cp_module.aar: SDK功能模块
│ ├── SuperSDKIntl_VXXX_cp_params.aar: SDK参数模块
│ └── SuperSDKIntl_VXXX_cp_plugin.aar: SDK插件模块
└── SuperSDKIntl_Demo_V1_release.apk: SDK可运行Demo包
SDK 导入
1. 导入 SDK 文件
复制 SDK 文件到 libs 目录下
2. 修改 gradle 配置
2.1 在项目级的 build.gradle 修改以下内容
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
...
}
allprojects {
repositories {
google()
mavenCentral()
jcenter()
}
...
}
2.2 在 app 级的 build.gradle 修改以下内容
apply plugin: 'com.android.application'
ext {
//游戏相关参数, 也可直接写到代码中, 此处只是为了方便修改
appId = "10070"
signKey = "714e14868fe9eac6"
packetId = "11055"
//应用版本信息
appVersionCode = 1 //版本号
appVersionName = "1.0.0" //版本名
//Demo相关设置
appName = "EwDemo"
appPackageName = "com.iyagame.jwh"
enableMultiDex = true
enableExternalStorage = true
enableSplashView = false
enablePauseView = false
hideGameLoading = true
enableProgressLoading = false
}
android {
//FIXME IyaGame_Doc: 建议配置为33, 适配Android 13
compileSdkVersion 33
buildToolsVersion "31.0.0"
defaultConfig {
applicationId appPackageName //FIXME IyaGame_Doc: 包名
minSdkVersion 21 //FIXME IyaGame_Doc: 建议21及以上
targetSdkVersion 33 //FIXME IyaGame_Doc: 建议33
versionCode 1
versionName "1.0.0"
//FIXME IyaGame_Doc: so库必须包含64位
ndk {
// 指定要ndk需要兼容的架构: "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
...
}
//FIXME IyaGame_Doc: 添加以下配置, 避免编译时压缩so文件
packagingOptions {
doNotStrip "*/armeabi/*.so"
doNotStrip "*/armeabi-v7a/*.so"
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/x86/*.so"
doNotStrip "*/x86_64/*.so"
}
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false // 建议关闭混淆, SDK已实现混淆
shrinkResources false // 必须关闭资源混淆
zipAlignEnabled true
multiDexEnabled enableMultiDex
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
release {
debuggable false
minifyEnabled false // 建议关闭混淆, SDK已实现混淆
shrinkResources false // 必须关闭资源混淆
zipAlignEnabled true
multiDexEnabled enableMultiDex // FIXME IyaGame_Doc: 按需开启MultiDex功能, 如最低支持Android4.X, 则还需要在application中调用MultiDex.install
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release // FIXME IyaGame_Doc: 配置签名
}
}
}
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation 'androidx.multidex:multidex:2.0.1'
api 'androidx.annotation:annotation:1.9.0'
api 'androidx.appcompat:appcompat:1.7.0'
api 'androidx.browser:browser:1.8.0'
api 'androidx.legacy:legacy-support-v4:1.0.0'
api 'com.google.android.material:material:1.12.0'
api 'androidx.cardview:cardview:1.0.0'
api 'androidx.constraintlayout:constraintlayout:2.1.4'
}
3. 添加混淆规则
SDK 已经过混淆处理,如非必须可不使用混淆功能。如确实需要使用 proguard 混淆代码,需确保不要混淆 SDK 的代码。 请在 app 级的 proguard-rules.pro 文件(或其他混淆文件)尾部添加如下配置:
-keeppackagenames com.ew.intl*
-keeppackagenames com.supersdkintl*
-keep class com.supersdkintl.** {*;}
-keep class com.ew.intl.** {*;}
-keep class ijiami_*.** {*;}
-keep class androidx.** {*;}
-keep class android.support.** { *; }
-keep class com.android.** { *; }
-keep class com.appsflyer.** { *; }
-keep class com.crashlytics.** { *; }
-keep class com.facebook.** { *; }
-keep class com.twitter.** { *; }
-keep class com.google.** { *; }
-keep class com.mopub.** { *; }
-keep class com.moat.** { *; }
-keep class com.integralads.** { *; }
-keep class com.squareup.** { *; }
-keep class com.integralads.** { *; }
-keep class io.fabric.** { *; }
-keep class bolts.** { *; }
-keep class dagger.** { *; }
-keep class retrofit2.** { *; }
-keep class okhttp3.** { *; }
-keep class okio.** { *; }
-keep class org.** { *; }
-keep class com.gaa.** { *; }
-keep class module-info
-keep class com.naver.** {*;}
-keep class com.navercorp.** {*;}
-keep class com.nhn.** {*;}
-keep class cn.hutool.** { *; }
-dontwarn cn.hutool.**
-dontwarn com.squareup.**
-dontwarn com.mopub.**
-dontwarn com.gaa**
4. 配置 AndroidManifest.xml
<manifest ... >
...
<!-- FIXME IyaGame_Doc: 配置support screens -->
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<!-- FIXME IyaGame_Doc: SDK需要的权限 -->
<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" />
<!-- FIXME IyaGame_Doc: 建议移除涉及隐私的权限, 配置为remove时会在最终编译时删除该权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/>
<!-- FIXME IyaGame_Doc: 配置networkSecurityConfig: 可选以下两种: -->
<!-- FIXME IyaGame_Doc: ew_network_security_config(仅允许https请求, Google推荐) -->
<!-- FIXME IyaGame_Doc: 如果app已有自定义的application,请继承EwApp; 如果app没有自定义的application,请在此处添加EwApp信息 -->
<application
android:name="com.ew.intl.EwApp"
android:isGame="true"
android:largeHeap="true"
android:networkSecurityConfig="@xml/ew_network_security_config"
... >
<!-- FIXME IyaGame_Doc: 在应用启动Activity中加入android:exported="true"的属性, 适配Android12 -->
<activity
android:name="xxx.xxx.XXXActivity"
android:exported="true"
... >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
<meta-data
android:name="android.max_aspect"
android:value="2.4" />
</application>
</manifest>