目录

Taro工程转ASCF框架后,真机拉起元服务显示白屏

问题现象

ASCF框架转换Taro框架小程序,运行白屏,无法正常展示页面内容。

背景知识

ASCF(Atomic Service Cross Framework)是元服务为小程序生态定制的一套解决方案,能够使用类似于小程序的开发技术,高效开发元服务。其提供了系统级的运行时能力,开发阶段编译调试的工具链。同时提供了转换工具将已有的小程序项目快速转换为ASCF框架的元服务项目。

解决方案

可按照下面步骤排查问题:

  1. 接口是否做了完全的适配,未完整适配,需要先修改编译后的rawfile/app.js文件,顶部增加相应的Mock方法来避免运行的问题。详情可参考:转换为ASCF框架后运行白屏或异常;
  2. ASCF的异步化分包当前需要common=true标识,所以需要修改app.json的配置增加common=true;
    {
        "root": "scopeComponent",
        "pages": [],
        "common": true
    }
  3. 修改项目的hvigorfile.ts内容如下:
    import { appTasks } from '@ohos/hvigor-ohos-plugin';
    import ascfPlugin, { signByBuildModePlugin } from '@atomicservice/ascf-toolkit-hvigor-plugin';
    
    
    export default {
        system: appTasks,  /* Built-in plugin of Hvigor. It cannot be modified. */
        plugins: [
            ascfPlugin({ skipAscfCompile: true }),
            signByBuildModePlugin('default', 'release')
        ]
    }
  4. 上述步骤排查没问题,还是白屏,可以使用如下命令,查看下ASCF.HSP有没有预置进来,同时需要检查ASCF运行时版本是否匹配,可参考ASCF运行时版本对应关系,没有预置进来,需要按照ASCF开发流程,更新版本,重新编译。
    hdc shell bm dump-shared -a
    hdc shell bm dump-shared -n com.huawei.hms.ascfruntime

常见FAQ

Q:工程为分模块的Taro工程,只转换了单独模块的Taro工程,转换ASCF后运行,显示白屏也看不到报错信息。

A:1.升级ASCF的运行时以及Toolkit版本,具体方法请参考升级已有项目的ASCF运行时版本以及升级已有项目的ASCF Toolkit版本。2.在ascf/ascf_src/ascf.config.json配置文件中添加以下编译配置:"templateHoist": true,其他编译配置请参考ASCF的项目json配置。

{
  "swc": true,
  "miniprogramRoot": "./",
  "templateHoist": true // 添加该行配置
}