uni-app IOS打包后 renderjs不生效

uni-app IOS打包后 renderjs不生效

开发环境 版本号 项目创建方式
Windows Windows 10 专业版 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:Windows 10 专业版

HBuilderX类型:正式

HBuilderX版本号:3.2.9

手机系统:iOS

手机系统版本号:iOS 14

手机厂商:苹果

手机机型:iphone8

页面类型:vue

打包方式:离线

示例代码:

``` js
<script module="test" lang="renderjs">  
export default {  
         data() {  
            return {  
                 instance : null,  
            }  
         },  
        mounted() {   
             document.getElementById("interfaceContent").addEventListener("click", (e)=> {  
                 if (this.instance == null) {  
                    return;  
                 }   
                 console.log(e.target.classList)  
                 let classList = e.target.classList;   
                 if (classList == "domain") { // 打开链接  
                     this.instance.callMethod('onClickDomain', {  
                         link: e.target.innerText  
                     });  
                 }  
             });    
        },  
        methods: {   
            onInterfaceClick (e,ownerInstance) {  
                this.instance = ownerInstance;   
            },  
        }  
    }  
</script>

操作步骤: 任意页面 renderjs 都不生效

预期结果: 正常可以监听点击

实际结果: 这是一个简单的页面 其他页面也不能使用

bug描述: 本地调试 renderjs 可以使用 , 但是离线打包后 renderjs 不执行 ,无法使用


更多关于uni-app IOS打包后 renderjs不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

安卓也是一样的问题

更多关于uni-app IOS打包后 renderjs不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


Vue3.0 项目

使用HX内置基座是否正常?

是正常的,但打包出来以后就不正常了,很多功能在基座运行是没有问题的,但打包完以后就不行,包括静态资源也是部分没导出

this.instance.callMethod 没有相应

回复 2***@qq.com: 保证离线打包使用的sdk版本和HX版本一致

回复 DCloud_iOS_XHY: 你好 确认版本是一致的 并且打包后打印出来 this.instance.callMethod 该方法是存在的但是没有相应

回复 n***@126.com: 是3.2.9 版本? 离线SDK的库和资源文件 都全部替换的吗 而不是部分替换的吗?

回复 天生DR: 是的 3.2.9版本 都替换了 标注的注意事项 也都进行了比对 资源文件指的是哪些

回复 天生DR: 使用SDK 中hello 那个项目 直接导入官方项目使用VUE3.0 uni-swipe-action组件中 change事件 和 参数 autoClose 无效

回复 n***@126.com: 资源文件就是 Bundles 下的一些js文件

回复 天生DR: 有更新

这是一个典型的离线打包配置问题。在 iOS 离线打包环境下,renderjs 不生效通常是因为缺少必要的配置。

核心原因是:iOS 离线打包时,默认的 WebView 配置可能禁用了 JavaScript 执行或存在安全限制。

解决方案:

  1. 检查 manifest.json 配置: 确保在 manifest.jsonapp-plus -> distribute -> ios 节点下,已正确配置 WebView 相关设置:
{
  "app-plus": {
    "distribute": {
      "ios": {
        "webview": {
          "allowsInlineMediaPlayback": true,
          "javaScriptEnabled": true,
          "javaScriptCanOpenWindowsAutomatically": true
        }
      }
    }
  }
}
  1. 检查离线打包工程配置: 如果你使用的是原生工程离线打包:

    • 确保 WKWebViewconfiguration 中已启用 JavaScript:
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    configuration.preferences.javaScriptEnabled = YES;
    configuration.preferences.javaScriptCanOpenWindowsAutomatically = YES;
    
  2. 检查权限配置: 在 iOS 项目的 Info.plist 文件中,确保已添加必要的权限:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
回到顶部