uni-app 2.8.8升级到3.1.2版本后 widget方式离线打包运行未正常加载webview

uni-app 2.8.8升级到3.1.2版本后 widget方式离线打包运行未正常加载webview

开发环境 版本号 项目创建方式
Windows HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:windows10

HBuilderX类型:正式

HBuilderX版本号:3.1.2

手机系统:Android

手机系统版本号:Android 11

手机厂商:小米

手机机型:小米10

页面类型:vue

打包方式:离线

项目创建方式:HBuilderX

操作步骤:

  1. 在android10以内可以正常打开的widget方式集成uni-app示例
  2. 将libs替换为3.1.2版本SDK中对应的libs,并且替换assets内资源为HX3.1.2版本生成的资源包
  3. 运行

预期结果:

  • 加载webview,正常运行

实际结果:

  • 未加载webview,无法正常运行

bug描述: 使用widget方式集成:

  1. 2.8.8版本下正常,但是在android11上白屏。
  2. 分别尝试升级到3.0.7和3.1.2,相同的lib已经替换掉,也移除了gallery包,使用对应版本HX打出来的资源也替换了,试了Android10的三星note9和android11的小米10,运行后均直接白屏,根据断点判断SDK.startWebApp的相关回调甚至没有执行,webview未添加到页面中
SDK.startWebApp(activity, appBasePath, args, new IWebviewStateListener() {
    // 设置Webview事件监听,可在监监听内获取WebIvew加载内容的进度
    @Override
    public Object onCallBack(int pType, Object pArgs) {
        switch (pType) {
            case IWebviewStateListener.ON_WEBVIEW_READY:
                // WebApp准备加载事件
                // 准备完毕之后添加webview到显示父View中,
                // 设置排版不显示状态,避免显示webview时html内容排版错乱问题
                View view = ((IWebview) pArgs).obtainApp().obtainWebAppRootView().obtainMainView();
                view.setVisibility(View.INVISIBLE);

                if (view.getParent() != null) {
                    ((ViewGroup) view.getParent()).removeView(view);
                }
                rootView.addView(view, 0);
                break;
        }
})

更多关于uni-app 2.8.8升级到3.1.2版本后 widget方式离线打包运行未正常加载webview的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 2.8.8升级到3.1.2版本后 widget方式离线打包运行未正常加载webview的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个在uni-app 3.x版本中常见的widget集成问题。主要原因可能是:

  1. 3.x版本对Android 11的适配问题,需要确保AndroidManifest.xml中添加了正确的文件访问权限:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
  1. 检查assets/data/dcloud_control.xml文件是否正确配置,特别是appid和版本号需要与打包配置一致。

  2. 确认是否移除了所有旧版本依赖,包括:

  • 删除libs下的所有旧aar文件
  • 确保build.gradle中只引用了最新版本的uni-app SDK
  1. 尝试在Application初始化时添加:
UniSDKEngine.init(this, new UniSDKEngine.OnSDKEngineListener() {
    @Override
    public void onInitFinished(boolean b) {
        // 初始化完成回调
    }
});
  1. 检查webview初始化是否被阻塞,可以在startWebApp前添加:
WebView.setWebContentsDebuggingEnabled(true);
回到顶部