智能客服
你问我答,随时在线为你解决问题
日落公告:HMS Toolkit服务当前已不再进行版本更新。中国区域的服务将在2026-11-30日落下线,日落后将不再提供服务。
Convertor工具是为您提供的代码转换工具,支持Java和Kotlin工程。能够帮助您基于已有的调用第三方API的Android应用代码,快速转换为集成HMS Core的应用代码。工具提供了如下功能来帮助您完成转换:
代码转换流程如下:

使用此转换策略的一大优势在于,您可以用一套业务代码来完成对第三方API或HMS API的调用以及同时上架第三方应用市场和华为应用市场。工具为您自动生成的xmsadapter模块实现第三方API与HMS API的调度,将业务代码与适配代码分离/解耦,您只需要关注业务,无需为第三方API和HMS API间的差异耗费过多精力。
更详细的原理描述请参见Add HMS API策略的原理介绍。
Convertor工具菜单入口如图所示:

转换工具仅支持基于代码的转换(选定的代码工程),不包含工程依赖的第三方包。
若您在工程中使用compile关键字引入依赖,请将其修改为implementation。
各Kit支持转换的情况如下表(仅列举出了支持HMS API转换的Kit):
Kit | To HMS API | Add HMS API |
|---|---|---|
Account | 支持 | 支持 |
In-App Purchases | 支持 | 不支持 |
Push | 支持 | 支持 |
Ads | 支持 | 支持 |
Analytics | 支持 | 支持 |
Location | 支持 | 支持 |
Map | 支持 | 支持 |
Game Service | 支持 | 支持 |
Drive | 支持 | 不支持 |
Wallet | 支持 | 支持 |
Health | 支持 | 支持 |
ML | 支持 | 支持 |
Awareness | 支持 | 支持 |
Scan | 支持 | 支持 |
Nearby Service | 支持 | 支持 |
Safety Detect | 支持 | 支持 |
Dynamic Tag Manager | 支持 | 不支持 |
Identity | 支持 | 支持 |
Panorama | 支持 | 支持 |
HMS Core base | 支持 | 支持 |
FIDO | 支持 | 支持 |
Remote Configuration | 支持 | 支持 |
Crash | 支持 | 支持 |
Cloud Functions | 支持 | 支持 |
App Linking | 支持 | 支持 |
Auth Service | 支持 | 支持 |
App Messaging | 支持 | 支持 |
APM | 支持 | 支持 |
Cloud Storage | 支持 | 支持 |
对于Add HMS API策略,如果出现如下场景,您需要手动修改:
对于Add HMS API策略,如果出现如下场景,您需要手动修改:
如果使用到intent.getXXX()或者intent.putXXX()方法时,需要手工书写Add HMS API策略代码,例如。
使用GMS API的代码:
DetectedActivity detectedActivity = ...; Intent intent = new Intent(BROADCAST_INTENT_ACTION); intent.putExtra(DETECTED_ACTIVITY_EXTRA_ID, detectedActivity);
DetectedActivity detectedActivity = ...;
Intent intent = new Intent(BROADCAST_INTENT_ACTION);
if (org.xms.g.utils.GlobalEnvSetting.isHms) {
intent.putExtra(DETECTED_ACTIVITY_EXTRA_ID, (com.huawei.hms.location.ActivityIdentificationData)detectedActivity.getHInstance());
} else {
intent.putExtra(DETECTED_ACTIVITY_EXTRA_ID, (com.google.android.gms.location.DetectedActivity)detectedActivity.getGInstance());
} 下面的动画演示了一个项目的分析和转换过程。



如果“Project Type”选择了“App”,会在xmsadapter文件下生成XMS代码。显示页面是:

如果“Project Type”选择“Library”,显示页面是:

关键字段 | 说明 |
|---|---|
Update the following items before analysis | 需要您在转换前注意以下几点:
|
Analysis Result | 工程使用GMS API的情况统计,可以点击Details查看当前工程中使用GMS服务的API情况。 |
Add HMS API |
|
To HMS API | 将GMS API转换为HMS API,使您的App能在华为手机上运行。 |
HMS API First | 您的应用面向支持HMS API但是不支持GMS API的设备发布,可以配置您的路由策略优先调用HMS API。 |
GMS API First | 您的应用面向支持GMS API但是不支持HMS API的设备发布,可以配置您的路由策略优先调用GMS API。 |
Dependent GMS APIs | 当前项目使用到的GMS API和GMS method情况。 |
Convertible GMS Methods | 两种转换策略下,可自动转换和手动修改的GMS API方法数,以及自动转换率。 |
Unconvertible GMS APIs | 两种转换策略下,分别不支持转换的GMS API情况。请根据该结果选择适合您的转换策略。 |
Unconvertible GMS Methods | HMS不支持的GMS方法总数。详情请点击Details。 |
Select a conversion policy | 选择支持的转换策略。其中Add HMS API可以设置HMS API优先还是GMS API优先。 |
Generate code for creating app dependent only on GMS SDK | Add HMS API转换策略下,提供差异化的adapter代码生成能力,支持您构建只依赖GMS服务的APK包。勾选该复选框会显示提示信息,点击提示信息的链接可以查看文档中的详细描述。 |
Generate code for creating app dependent only on HMS SDK | Add HMS API转换策略下,提供差异化的adapter代码生成能力,支持您构建只依赖HMS服务的APK包。勾选该复选框会显示提示信息,点击提示信息的链接可以查看文档中的详细描述。 |
Path for storing the generated code (for Add HMS API only) | Add HMS API转换策略下,XMS代码存放在工程根目录下xmsadapter module。 |
Export analysis result | 工程使用GMS API的情况统计,可以点击“Export analysis result”导出当前工程中使用GMS服务的API情况。 |
结合转换过程中选择的HMS API或者GMS API路由优先策略,您需要在工程中调用GlobalEnvSetting.init方法,决定App程序运行在HMS环境或者GMS环境。路由设置方法请参见Add HMS API场景下路由初始化策略介绍。
init方法用于检测当前手机环境是否可以运行HMS服务或者GMS服务。

关键字段 | 说明 |
|---|---|
Show Converted |
说明 只能展示本次扫描结果的处理记录。如果您已经处理过后再次扫描项目,则上次扫描后的处理记录无法查看。 |
Convert | 对选中的记录执行转换操作。 |
Revert | 对选中的已经执行自动转换的记录进行回退。当前不支持“Ctrl+Z”的回退方式。 |
Total | 扫描出需要处理的总条目数。 |
Converted | 已经执行自动转换或者手动修改的记录总数。 |
Conversion Type | 扫描结果可以进行转换的类型,分为三类:
|
Content | 扫描结果需要进行转换的原始内容。 |
Description | 转换修改说明。 |
下面的动画演示了如何处理分析结果的过程。

从分析结果来看,部分GMS的API接口是可以通过IDE自动进行转换的,但是部分API接口不支持自动转换,需要手工进行转换。
Auto、Dummy类型支持如下三种方式进行转换修改。



Fix File不能编辑修改。
转换完成回到转换分析结果页面,对应的转换项置灰且被勾选。如果要回退转换,勾选需要回退转换的条目,然后点击“Revert”即可。

Manual类型转换方法:点击待修改条目定位到具体修改点,然后根据扫描结果中的Description描述进行手动修改。修改完成后,手动将修改条目的复选框由
修改为
状态。
全部转换项转换完成且转换项状态为
或
后,会提示您是否进行完整性检查,点击“Jump”即可跳转到完整性检查页面。

手工指导窗口说明(目前只支持Map Kit和Location Kit):
手工指导窗口为使用HMS Toolkit的过程中需要进行手工转换的开发者提供帮助,点击Conversion tab页面中Location/Map Kit的手工修改条目,点击下图中“Go to Manual Instruction”即可跳转到手工指导窗口。

手工指导窗口如图所示:


成功后在右下角有如下所示弹框,点击“Open Project”即可用Android Studio打开该工程。

Add HMS API场景下,您需要根据业务上下文实现Add HMS API的代码逻辑转换。提供了以下API供您使用,具体的使用方法可以参见各个Kit的手工转换指导书(可通过手工修改条目中的Description链接获取)。
接口 | 描述 |
|---|---|
org.xms.g.utils.GlobalEnvSetting.isHms() | 手动转换,进行路由判断。 |
org.xms.g.utils.GlobalEnvSetting.useGms() | 帐号登入,进行动态切换路由,设置GMS路由。 |
org.xms.g.utils.GlobalEnvSetting.useHms() | 帐号登入,进行动态切换路由,设置HMS路由。 |
Object getGInstance() | 从Adapter实例中获取对应的GMS或者HMS实例。 |
Object getHInstance() | |
org.xms.g.utils.Utils.getXmsObjectWithGmsObject(Object object) | 从GMS实例获取对应的Adapter实例。
|
org.xms.g.utils.Utils.getXmsObjectWithHmsObject(Object object) | 从HMS实例获取对应的Adapter实例。
|
isInstance | IDE插件等价替换Java中instanceof关键字,obj instanceof G转换成X.isInstance(obj)。 |
dynamicCast | IDE插件等价替换Java中的类型强转,(G)obj转换成X.dynamicCast(obj)。 |
确认所有的记录都处理完成后,进行编译,编译通过则转换完成。
在菜单栏选择,可以打开上次转换结果,即直接进入到上次转换的扫描分析结果界面。

当您没有处理完所有的待转换条目,关闭Android Studio或者工程再重新打开该工程时,选择该操作可以加载关闭前的记录继续进行转换。其他场景下不建议使用该操作。
备份当前工程以及转换信息。
对于大型项目,当您执行了部分转换,希望对转换中的工程代码以及转换列表进行存量备份时,点击“Save All”可以实现当前转换中的工程代码以及转换列表备份。后续可以通过进行恢复,然后从备份时的进度继续完成转换。
备份路径固定为您在上一次执行扫描时设置的“Backup Path”目录。备份的zip文件名称为“工程名+时间戳+注释模式+转换策略+转换进度”。
在菜单栏选择,打开备份工程的恢复设置界面,可以将指定备份目录下的文件恢复到目标目录。
恢复文件后,需要手动在work tree选中当前工程目录,然后右键选择进行刷新。当前备份分为两种:

您对XMS代码进行了修改或者添加了新的Kit。再次使用转换工具,为了让您能更好的感知新、旧XMS代码前后的差异。工具会根据新的gradle依赖生成新的XMS代码。有以下两种场景。
您重新使用工具生成XMS代码。重新生成一份代码到xmsadapter文件夹中,旧的XMS代码会被备份,并且提供新旧XMS代码比较功能。



您在原来的工程上通过Repository引入新的Kit,生成新的XMS代码。
只有当工程初始化完毕后,才能在此场景下操作Repository。