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)

更新说明

  1. 内部逻辑优化

灰度版

【如需使用灰度版请和技术对接人员确认】
* Android SDK 下载:【目前暂无灰度版本】

环境要求

所需组件或内容版本备注
Android Studio3.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 目录下 20231016-165350.jpg

2. 修改 gradle 配置

2.1 在项目级的 build.gradle 修改以下内容

1280X1280 (1).PNG

buildscript {
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    ...
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    ...
}

2.2 在 app 级的 build.gradle 修改以下内容

1280X1280 (2).PNG

20240830-180758.jpg

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

20240830-184739.jpg

<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>