g***@qq.com
g***@qq.com
  • 发布:2025-03-27 10:41
  • 更新:2025-03-27 10:44
  • 阅读:1031

iOS原生插件是不是必须用静态库?

分类:uni-app

就是那个Mach-O Type是不是必须选择Static Library?
我这边的库是动态的,如果改静态,就会报一堆错误。

2025-03-27 10:41 负责人:无 分享
已邀请:
II优选

II优选 - 定制插件开发-联系QQ:770104707

没有这个要求

  • g***@qq.com (作者)

    然而我把这个动态库添加到原生插件目录,再制作自定义调试基座,然后再运行到真机上,就会找不到该插件,说是基座不含该插件。而我解压缩那个自定义基座发现这个framework是存在的。

    2025-03-27 10:51

  • II优选

    回复 g***@qq.com: package.json 怎么配置的,和目录结构图发一下

    2025-03-27 10:58

  • g***@qq.com (作者)

    回复 II优选:

    以下是/nativeplugins/下的目录结构:


    lijldebijibendiannao:nativeplugins lijl$ tree . -L 3  
    .
    ├── EMMSDK
    │   ├── ios
    │   │   └── EMMSDK.framework
    │   └── package.json
    └── lemonjk-FileSelect
    ├── android
    │   └── uniplugin_fileSelect-release.aar
    ├── ios
    │   └── LemonFileSelect.framework
    └── package.json

    8 directories, 3 files

    以下是EMMSDK/package.json:


    {  
    "name": "EMMSDK",
    "id": "EMMSDK",
    "version": "1.0.0",
    "description": "EMMSDK",
    "_dp_type": "nativeplugin",
    "_dp_nativeplugin": {
    "ios": {
    "plugins": [
    {
    "type": "module",
    "name": "EMMSDK",
    "class": "ESAuthUtil"
    }
    ],
    "integrateType": "framework",
    "deploymentTarget": "11.0"
    }
    }
    }

    以下是调用代码:


    export async function testSdk2() {  
    console.log('testSdk2')
    const EMMSDK = uni.requireNativePlugin('EMMSDK');
    console.log(`auth status: ${EMMSDK.getAuthStatus()}`)
    }

    以下是控制台打印:


    11:13:22.571 正在同步手机端程序文件...  
    11:13:27.832 同步手机端程序文件完成
    11:13:29.967 testSdk2 at pages/launch/iOS_test2.ts:5
    11:13:29.967 [JS Framework] 当前运行的基座不包含原生插件[EMMSDK],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座 __WARN

    2025-03-27 11:14

  • II优选

    回复 g***@qq.com: package.json这个配置的问题,看一下具体说明

    2025-03-27 11:33

  • g***@qq.com (作者)

    回复 II优选: 我这个是动态库,根据文档仔细看了一下,已经改成了下面这样,但是错误仍在:


    {  
    "name": "EMMSDK",
    "id": "EMMSDK",
    "version": "1.0.0",
    "description": "EMMSDK",
    "_dp_type": "nativeplugin",
    "_dp_nativeplugin": {
    "ios": {
    "plugins": [
    {
    "type": "module",
    "name": "EMMSDK",
    "class": "ESAuthUtil"
    }
    ],
    "integrateType": "framework",
    "frameworks": [
    "EMMSDK.framework"
    ],
    "embedFrameworks": [
    "EMMSDK.framework"
    ],
    "embedSwift": true,
    "deploymentTarget": "11.0",
    "validArchitectures": [ "arm64" ]
    }
    }
    }

    2025-03-27 15:02

  • II优选

    回复 g***@qq.com: 当前运行的基座不包含原生插件[EMMSDK 这个错误吗?这个应该是你这个文件里面格式不对,你也可以改一下版本号试试

    2025-03-27 15:06

  • g***@qq.com (作者)

    回复 II优选: 是的,错误内容就是[JS Framework] 当前运行的基座不包含原生插件[EMMSDK],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座 __WARN。你说的版本号是这个package.json文件中的"version"字段吗?还有就是格式,我已经检查了json格式本身,没问题;检查了所有字段,也没问题,至少没有大小写和拼写错误;然后就是各个值,唯一我拿不准的就是frameworks和embedFrameworks中的值是否需要带后缀.framework,其他应该是没错的,唉~

    2025-03-27 15:24

  • II优选

    回复 g***@qq.com: 都需要带,应该还是配置问题

    2025-03-28 09:39

  • II优选

    回复 g***@qq.com: 付费我给你解决

    2025-03-28 11:38

要回复问题请先登录注册