1. signIn导致弹窗无应用

问题复现:

该问题在集成HMSCore服务时出现,问题表现为多FA(Multi FA)集成的项目中,在entry模块中调用登录后没有反应,在该Demo测试中,使用的是JS UI模板构建的原子化服务,该Demo需要引用@hms-js-account 库,使用该库进行基本的登录,代码片段如下:

signIn: function() {
    //该登录方式依赖于"@hmscore/hms-jsb-account": "^1.0.300"
    var scopeList = [OPENID] //表示获取的
    var signInOption = new HuaweiIdAuthParamsHelper().setId().setProfile().setScopeList(scopeList).setAuthorizationCode().build();
    HuaweiIdAuthManager.getAuthApi().getSignInIntent(signInOption).then((result) = >{
        // 登录成功,获取用户的华为帐号信息
        console.info("signIn success");
        console.info(JSON.stringify(result));
        console.info("昵称:" + result.getDisplayName());
        console.info("头像:" + result.getAvatarUri());
    }).
    catch((error) = >{
        // 登录失败
        console.error("signIn fail");
        console.error(JSON.stringify(error));
    });

}

signIn2: function() {
    //该登录方式依赖于"@hmscore/hms-js-account": "5.2.0-300"
    HMSAccount.signIn(permissions, scopes).then((res) = >{
        //登录成功的处理代码
    }).
    catch((err) = >{
        switch (err.resultCode) {
            //处理异常,2005为网络异常代码
        }
    });
}

处理方式:

以上问题可以移除非entry模块中metaData闭包中关于com.huawei.hms.client.appid子闭包或者将其自闭包值改为和entry模块中对应的值一样,否则会出现无法登录的问题,该appid由OAuth 2.0生成,此处appid在AppGallery Connect页面中我的应用中可以查看,具体如下:

appid

"metaData": {
  "customizeData": [
    {
        //该闭包不应该在非enrty模块内添加
      "name": "com.huawei.hms.client.appid",
      "value": "10xxxxxx"
    },
    {
      "name": "hwc-theme",
      "value": "androidhwext:style/Theme.Emui.Translucent.NoTitleBar"
    }
  ]
}

增补:

对于使用HMS进行华为账号登录的时候,项目开发的appid可以前往华为开发者联盟凭证中去生成:

生成OAuth 2.0 ID

生成的应用类型选择移动应用,应用包名和SHA256指纹均需要和项目对应。

2. 代码修改后调试不生效

解决方案:

  1. 该问题主要是由于IDE工具的缓存问题,建议在不生效的时候先卸载app再安装,同时Rebuild项目,可以使用以下方式进行卸载:

    $ adb uninstall com.xxx.xxx #需要手机连接上电脑
  2. 另外一个问题可能是由于跨FA进行调用,这时候调试的时候记得开启Deploy Multi Hap Packages选项。
  3. 假设项目 hml组件比较多,比如开发人员单独写了一个 NavBarpage组件,如果在其他 Component中(指的是单独一个 Ability)引用,那么缓存的原因就不会更新该Ability引用的hml信息,最终也就在调试的时候看不到预期效果。

3. DevEco Studio无法下载SDK

Network connection failed. Check the network or HTTP proxy settings.

该问题主要是由于电脑端的语言设置问题,通过修改以下文件可以纠正:

C:\Users\username\AppData\Roaming\Huawei\DevEcoStudio3.1\options\country.region.xml

修改成:

<application>    
    <component name="CountryRegionSetting">        
        <countryregion name="CN"/>    
    </component>
</application>

再次运行软件即可正常下载SDKs。

4. 上架后无法自动下载调用的模块

该问题主要是由于原来FA程序的demo中的调用模块Flag缺少自动安装的标记,样例代码如下:

Operation operation = new Intent.OperationBuilder()
    .withDeviceId("")
    .withBundleName(BUNDLE_NAME)
    .withAbilityName(PARTIAL_DEVICE_ABILITY_NAME)
    .withFlags(Intent.FLAG_ABILITY_NEW_MISSION | Intent.FLAG_INSTALL_ON_DEMAND)
    .build();

如果调用的模块为单独的FA模块,那需要添加Intent.FLAG_INSTALL_ON_DEMAND标记才能自动下载对应模块。

5. Failure[INSTALL_FAILED_APP_SOURCE_NOT_TRUSTED]

该问题主要是由于证书和设备不匹配,在调试的时候我们要确保几点是相对应的:

  1. 设备的UDID已经添加到列表中
  2. 使用旧证书的时候需要重新下载*.cer文件(在证书管理页面直接下载对应的证书cer即可)
最后修改:2023 年 08 月 01 日
如果觉得我的文章对你有用,请随意赞赏