跳到主要内容

接入细节

一、添加 SDK 依赖

  1. 添加 XDSDK 分享模块。在项目级别的 build.gradle 文件中添加 XDSDK 分享模块的依赖。

    // 基础库, 必须
    implementation files('libs/XDGCommon_6.23.5.aar')
    // 分享模块
    implementation files('libs/XDGSharing_6.23.5.aar')
  2. 添加第三方平台分享 SDK 依赖。请按需添加对应的分享平台集成。

    // QQ SDK 因 maven 版本较旧,所以使用本地 lib 依赖
    implementation(name: 'open_sdk_3.5.14.3_rc26220c_lite', ext: "jar", group: "", version: "")
    // 微信(同微信支付,如已有无需重复添加)
    implementation "com.tencent.mm.opensdk:wechat-sdk-android:${rootProject.ext.versions.wechatVersion}"
    // 微博
    implementation "io.github.sinaweibosdk:core:${rootProject.ext.versions.sinaweiboVersion}@aar"
    // 抖音
    implementation "com.bytedance.ies.ugc.aweme:opensdk-china-external:${rootProject.ext.versions.douYinSdkVersion}"
    implementation "com.bytedance.ies.ugc.aweme:opensdk-common:${rootProject.ext.versions.douYinSdkVersion}"
    // 小红书
    implementation(name: 'xhssharesdk_release_v1.1.4', ext: "aar", group: "", version: "")
    // TapTap
    implementation files("libs/taptapshare_1.0.1.jar")
    // Facebook
    implementation "com.facebook.android:facebook-share:15.2.0"
    // Twitter
    implementation "com.twitter.sdk.android:twitter:3.3.0"
    implementation "com.twitter.sdk.android:tweet-composer:3.3.0"
    // LINE 通过 scheme 形式进行分享,无需添加额外 SDK 依赖

    请注意,对于抖音平台的分享,需要在根目录级别的 build.gradle 文件中添加抖音分享的仓库,否则无法找到抖音 SDK 的依赖。

    allprojects {
    repositories {
    ...
    // 抖音
    maven { url 'https://artifact.bytedance.com/repository/AwemeOpenSDK' }
    }
    }
  3. 添加额外配置。

    a. 请将以下配置添加到项目级别的 AndroidManifest.xml 文件中。

    <manifest>
    <application>
    <!-- 微信 -->
    <!-- 将 {your_package_name} 替换为游戏正确包名,请注意全路径匹配格式,否则可能无法获取分享结果回调 -->
    <activity-alias
    android:name="{your_package_name}.wxapi.WXEntryActivity"
    android:exported="true"
    android:targetActivity="com.xd.sharing.mix.bridge.WXShareEntryActivity"/>

    <!-- QQ -->
    <!-- 将 {在QQ申请的应用ID} 替换为游戏正确的 QQ AppId(同 XDConfig.json 文件中 QQ 的配置),否则可能无法获取分享结果回调 -->
    <activity
    android:name="com.tencent.tauth.AuthActivity"
    android:noHistory="true"
    android:exported="true"
    android:launchMode="singleTask">
    <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="tencent{在QQ申请的应用ID}" />
    </intent-filter>
    </activity>

    <!-- Facebook -->
    <!-- 将 {your_facebook_application_id} 替换为 Facebook Application ID -->
    <meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="{your_facebook_application_id}" />
    <provider
    android:name="com.facebook.FacebookContentProvider"
    android:authorities="com.facebook.app.FacebookContentProvider{your_facebook_application_id}"
    android:exported="true" />

    </application>
    </manifest>

    b. 因 Android 11 以以上版本系统存储结构的变化,所以为了兼容对应系统的分享,需配置 FileProvider。 创建 XML 资源文件,存放在 res/xml 目录下,请参考以下配置进行文件内容撰写,详细可参考链接

    <?xml version="1.0" encoding="utf-8"?>
    <paths>
    <external-files-path
    name="share"
    path="." />

    <files-path
    name="images"
    path="."/>

    <root-path
    name="external_files"
    path=""/>

    <external-cache-path
    name="."
    path="." />

    </paths>

    c. 在项目级别的 AndroidManifest.xml 文件中添加 FileProvider 声明:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android">
    ...
    <application ... >
    ...
    <provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${应用包名}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/{资源文件名称}" />
    </provider>
    </application>

    </manifest>

    d. 构建应用。

二、老版本升级注意事项

  1. 从小于 XDSDK 6.17.0 版本升级至这个版本时请将旧版本模块的 SDK 移除,包含国内、海外两个模块,原有分享模块的依赖如下:

    // 第三方分享(海外)
    implementation files('libs/XDGShare_xxx.aar')
    // 第三方分享(国内)
    implementation files('libs/XDShare_xxx.aar')
  2. 移除 AndroidManifest.xml 文件中旧版本微信相关的配置,按照上述「额外配置」进行添加,旧版本微信相关的配置如下:

    <manifest>
    <application>
    <activity-alias
    android:name="{应用包名}.wxapi.WXEntryActivity"
    android:exported="true"
    android:targetActivity="com.xd.share.cn.bridge.WXEntryActivity"/>
    </application>
    </manifest>

三、其他注意事项

由于 Android 系统版本的更新,Android 在存储空间以及访问权限上有一些变化。如果在分享时传入的媒体文件是应用私有目录下的文件则无需关心权限问题,只需要保证上述设置 FileProvider 的内容即可。如果在使用的是公共媒体库中的媒体资源第三方平台可能没有权限访问对应的文件,对于这类资源需要游戏自助申请对应权限(android.permission.READ_EXTERNAL_STORAGE), 特别需要注意的是从 Android 13 开始,Android 系统的媒体权限被细化成了图片和照片权限(android.permission.READ_MEDIA_IMAGES)、视频权限(android.permission.READ_MEDIA_VIDEO),请注意额外区分。详情可参考 Android 13 影响应用的行为变更