跳到主要内容
版本:v7

接入细节

添加 SDK 依赖

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

    // 基础库, 必须
    implementation files('libs/XDGCommon_7.2.0.aar')
    // 分享模块
    implementation files('libs/XDGSharing_7.2.0.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:6.8.0"
// 微博
implementation "io.github.sinaweibosdk:core:12.5.0@aar"
// 抖音
implementation "com.bytedance.ies.ugc.aweme:opensdk-china-external:0.1.9.9"
implementation "com.bytedance.ies.ugc.aweme:opensdk-common:0.1.9.9"
// 小红书
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:17.0.2"
// Twitter
implementation files('libs/twitter-core-3.3.1.aar')
implementation files('libs/twitter-3.3.1.aar')
implementation files('libs/tweet-ui-3.3.1.aar')
implementation files('libs/tweet-composer-3.3.1.aar')
// LINE 通过 scheme 形式进行分享,无需添加额外 SDK 依赖

// TikTok
implementation "com.tiktok.open.sdk:tiktok-open-sdk-core:2.2.0"
implementation "com.tiktok.open.sdk:tiktok-open-sdk-share:2.2.0"
// 快手
implementation "com.github.kwaisocial:kwai-opensdk-withauth:3.7.6"

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

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

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

    <manifest>
    <application>
    <!-- 微信 -->
    <!-- 将 {your_package_name} 替换为游戏正确包名,请注意全路径匹配格式,否则可能无法获取分享结果回调 -->
    <activity-alias
    android:name="{your_package_name}.wxapi.WXEntryActivity"
    android:exported="true"
    android:targetActivity="com.xd.sdk.sharing.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. 由于快手 SDK 的限制,如集成快手分享,则需要配置快手特殊配置,有两种方式(二选一),否则跳过:

    1. 在 app 的 build.gradle 文件中添加如下配置:

    android {
    ...
    defaultConfig {
    ...
    // 将 {在快手申请的应用ID} 替换为游戏正确的快手 AppId(同 XDConfig.json 文件中 快手 的配置),否则可能无法获取分享结果回调
    manifestPlaceholders = [
    "KWAI_APP_ID": "ks703687443040312600", // 申请分配的appId
    ]
    }
    }
    1. 或者在 AndroidManifest.xml 文件中添加如下配置:

          <manifest>
      <application>
      <!-- 快手 -->
      <!-- 将 {在快手申请的应用ID} 替换为游戏正确的快手 AppId(同 XDConfig.json 文件中 快手 的配置),否则可能无法获取分享结果回调 -->
      <meta-data
      android:name="KWAI_APP_ID"
      android:value="{在快手申请的应用ID}"
      tools:replace="android:value" />

      <meta-data
      android:name="APP_ID"
      android:value="{在快手申请的应用ID}"
      tools:replace="android:value" />
      </application>
      </manifest>

    e. 构建应用。

其他注意事项

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