接入 Android

如果应用有国际化需求,请执行如下操作:

  • 多语言适配(英/法/俄)

  • 检查接入的组件

    检查接入了哪些组件,部分组件依赖的高德 SDK 或热修复组件可能无法通过 Google Play 的审核,需要替换或移除相关 SDK 或组件,以及部分三方 SDK 可能会向中国大陆发送数据,可根据需求决定是否移除相关组件。

  • 使用蓝盾

    使用蓝盾替换无线保镖,并根据需求决定是否配置多张蓝盾图片

多语言适配

英语

自 mPaaS Android 10.2.3.68 基线起,mPaaS SDK 已整体适配多语言 - 英语环境,可以将基线升级到 10.2.3.68 及以上版本,并使用 Android 官方 API Locale 手动设置语言为英语,或跟随手机系统语言。

法语/俄语

如还需要支持法语/俄语环境,请搜索群号 41708565 加入钉钉群或 提交工单 联系 mPaaS 技术支持人员获取对应的语言包,将相关资源放到工程的 res/values-fr/strings.xmlres/values-ru/strings.xml 中,并使用 Android 官方 API Locale 手动设置法语/俄语,或跟随手机系统语言。

检查接入的组件

高德定位 & 地图

高德定位和地图 SDK 部分版本无法通过 Google Play 审核,请检查应用是否接入了以下组件:

  • 小程序

  • Mriver 小程序

  • 原生小程序(专有云)

  • 智能投放

由于这些组件依赖了高德定位或地图 SDK,您需要根据您的接入方式手动移除相关依赖:

移除高德 SDK 依赖

  • 原生 AAR 接入方式

在主 module 的 build.gradle 中配置如下内容:

configurations.all {
    exclude group:'com.mpaas.group.amap', module: 'amap-build'
    exclude group:'com.alipay.android.phone.thirdparty', module: 'amap3dmap-build'
    exclude group:'com.alipay.android.phone.mobilecommon', module: 'lbs-build'
}
  • 组件化(Portal & Bundle)接入方式

在主 module 的 build.gradle 中配置如下内容:

mpaascomponents {
    excludeDependencies = [
        "com.mpaas.group.amap:amap-build",
        "com.alipay.android.phone.thirdparty:amap3dmap-build",
        "com.alipay.android.phone.mobilecommon:lbs-build",
    ]
}

使用定位组件

如接入了定位组件,需要按照上文所述的方式移除 amap-buildamap3dmap-build,但不能移除 lbs-build,并引入高德官网提供的可以通过 Google Play 审核的版本。以下是 mPaaS 所使用的高德 SDK 版本,以便选取相同或相近的过审版本。

'com.alipay.android.phone.mobilecommon:AMap-2DMap:5.2.1_20190114@jar'
'com.alipay.android.phone.mobilecommon:AMapSearch:6.1.0_20180330@jar'
'com.alipay.thirdparty.amap:amap-location:4.7.2.20190927@jar'

热修复

由于 Google Play 禁止应用动态下发可执行的代码文件,接入热修复可能会导致您的应用存在拒审风险,推荐您不接入热修复组件。

三方 SDK 数据发送

mPaaS SDK 中引入的三方 SDK 可能会向设立于中国大陆的服务器发送请求,如不希望应用向中国大陆发送数据,请您检查并确保未引入以下组件:

  • UC 内核

  • 分享

  • 推送 - 小米

  • 定位

  • 优酷播放器

并参考前述章节 移除高德 SDK 依赖

使用蓝盾

使用蓝盾替换无线保镖

由于 mPaaS SDK 中的无线保镖已停止维护,无法保证适配 targetSdkVersion 34 及以上版本,请参考 mPaaS 10.2.3 支持无线保镖&蓝盾切换 进行替换。

蓝盾配置多张图片

mPaaS 组件向网关发送请求时会使用蓝盾加签,相关信息保存在蓝盾图片中,蓝盾图片与应用使用的签名绑定,如果应用的签名发生变化,需要重新生成蓝盾图片,否则请求会验签失败。

如您的应用需要在不同场景下使用多个签名,例如:

  • 启用了 Google Play 的重签名机制

  • 使用 v3 签名的密钥轮替功能

您可以按照以下步骤操作:

  1. 使用签名 1 构建 apk,参考文档 生成蓝盾图片,默认的图片路径为 assets/abs_1222.jpg,将该图片重命名,如 abs_1222_jks1.jpg

  2. 使用签名 2 构建 apk,参考文档 生成蓝盾图片,将该图片重命名,例 abs_1222_jks2.jpg

  3. (可选)如使用 Google Play 重签名机制,可直接从商店下载重签名后的 apk 来生成蓝盾图片。

  4. 此时您的工程 assets 目录下有两张蓝盾图片:

    • assets/abs_1222_jks1.jpg

    • assets/abs_1222_jks2.jpg

  5. 在应用启动时调用以下 API,设置需要使用的蓝盾图片:

    MPBS.setBSAuthCodeDynamically(String bsAuthCode);
    • 支持该 API 的基线版本为 10.2.3.67 及以上版本。

    • 参数 bsAuthCode 为蓝盾图片名,不带后缀,例如图片为 abs_1222_jks1.jpg 则参数应传入 abs_1222_jks1,如不调用则会使用默认图片名 abs_1222

    • 调用时机必须在 mPaaS 初始化前,推荐在 attachBaseContext 方法中调用,一旦 mPaaS 初始化完成,再次调用该 API 则无法生效。

  6. 您可以根据需要自行判断使用哪一张图片,示例代码如下。

    // v3 签名从 Android 9 开始支持
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        MPBS.setBSAuthCodeDynamically("abs_1222_jks2");
    } else {
        MPBS.setBSAuthCodeDynamically("abs_1222_jks1");
    }
    
    // Google Play 重签名的应用会下发到 Android 13+ 设备
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        MPBS.setBSAuthCodeDynamically("abs_1222_jks2");
    } else {
        MPBS.setBSAuthCodeDynamically("abs_1222_jks1");
    }