>  기사  >  웹 프론트엔드  >  iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

青灯夜游
青灯夜游앞으로
2022-03-17 11:41:165438검색

iOS에서는 uniAPP 네이티브 플러그인이 어떻게 패키지되어 있나요? 다음 기사에서는 iOS의 uniAPP 기본 플러그인 패키징 프로세스에 대해 설명하겠습니다. 도움이 되기를 바랍니다.

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

말도 안 되는 이야기의 시작: uniAPP은 클라우드 컴파일을 사용하여 패키징됩니다. 즉, iOS에서 app의 기본 부분 코드를 uni의 배경에 제출해야 합니다. 컴파일용, uni 서버에 Xcode 실행 환경이 있다고 이해하면 됩니다. 물론 HBuilderX가 클라우드 컴파일을 수행할 때는 모두 로컬 네이티브를 사용하여 클라우드를 완료해야 합니다. 마지막으로 라이브러리가 압축되어 클라우드에 패키징되고 컴파일된 ipa 패키지를 로컬에 다운로드하여 설치할 수 있습니다. 1. 정적 라이브러리 설정

uni

공식 웹사이트에서 다운로드한 Demo에 따르면 프로젝트 구조를 간단히 익힐 수 있습니다.

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

1.HBuilder-uniPlugin 메인 프로젝트실제로 클라우드 컴파일시 클라우드

Xcode

전체 컴파일 환경으로 이해하시면 됩니다. 이 프로젝트의 모든 종속성을 살펴볼 수 있습니다.

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)순수 로컬 종속성 수는

120

+만큼 높습니다. 왜냐하면 uni는 개발자가 모든 라이브러리를 업로드하는 경우 컴파일 리소스를 많이 차지하기 때문입니다. uni 백그라운드에서도 학습이 가능한 원격 타사 라이브러리 저장 방식을 채택했습니다.

iOS 측이 의존하는 타사 라이브러리의 버전 설명

https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/dependentLibrary

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)그래서 진행 중

uni

네이티브 플러그인 개발 이때 반복적인 가져오기로 인해 발생하는 컴파일 기호 충돌을 피하기 위해 원격 측에 지원되는 타사가 있는지 먼저 확인할 수 있습니다. 예: 예를 들어 플러그인에 스테이션 B의

IJKMediaFramework

라이브러리(약 160M, 정말 큰 크기)가 필요한 경우 먼저 클라우드 컴파일에 이 라이브러리

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)가 있는지 확인하고 이를 찾으세요. 이미 존재한다면 현재로서는 로컬

IJKMediaFramework

라이브러리를 제출할 필요가 없습니다. HBuilderXmanifest.json 구성에서 VideoPlayer만 확인하면 됩니다.

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)이러한 방식으로

HBuilderX

manifest.json 구성은 클라우드 컴파일러에게 프로젝트에 IJKMediaFramework를 추가하도록 지시합니다.

2.DCTestUniPlugin 정적 라이브러리 프로젝트 정적 라이브러리를 만들 때 정적 라이브러리 아키텍처에 대한 지원을 설정해야 합니다.

빌드 설정

-> Architectures에서 설정하고 컴파일할 때 Any iOS Device

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

을 선택하세요. 정적 라이브러리에 타사 라이브러리가 필요한 경우 어떻게 해야 하나요?

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

개발 중에

AFNetWorking과 같은 타사 라이브러리 지원이 필요한 상황에 직면하게 됩니다. 여기서는 먼저 uni가 원격으로 지원되는지 확인한 결과 해당 정적 라이브러리가 개선되지 않았음을 발견했습니다. . 따라서 로컬로 업로드하면 됩니다.

자체 제작 정적 라이브러리는 결국

APP 환경에 로드되기 때문에 자체 제작 정적 라이브러리가 타사에 의존하는 전략은 타사 라이브러리 .a 파일을 에 추가하는 것입니다. HBuilder-uniPlugin

메인 프로젝트 자체 제작한 정적 라이브러리는 헤더 파일을 가져와야 하므로

DCTestUniPlugin 정적 라이브러리 프로젝트 아래의 Heard Search Paths에 헤더 파일을 추가하세요. HBuilder-uniPlugin 메인 프로젝트

DCTestUniPlugin 정적 라이브러리 프로젝트

Heard Search Paths

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

두 번째, iOS 네이티브 플러그인 구성 package.json

모든 기능이 개발되었으며 다음 단계는 로컬 플러그인 패키지 구성

구체적인 패키징 단계는 링크를 참조하세요. 위와 최종 파일 디렉터리 구조는 다음과 같습니다.

iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)

1, WSLUniPluginandroidios를 포함할 수 있는 전체 파일입니다(공식 웹사이트에는 대신 ios로 표시되어 있습니다). iOS)

2, ios 파일 내부에는 필요한 모든 타사 라이브러리와 자체 제작 정적 라이브러리가 포함되어 있습니다.

3, package.json은 관련 구성입니다. package.json을 통해 내부 정보는 로드할 라이브러리와 라이브러리의 폴더 위치를 원격 컴파일에 알려줍니다. 동적 라이브러리에 서명이 필요합니다. (자신만의 동적 라이브러리를 만들 수도 있지만 서명이 필요합니다.)

3.package.json 디렉토리

{
    "name": "WSLUniPlugin",//插件名称
    "id": "WSLUniPlugin",//插件ID
    "version": "1.0",
    "description": "功能描述",//功能描述这里进行功能描述,添加后会在HBuilder下展示
    "_dp_type":"nativeplugin",//原生组件类型
    "_dp_nativeplugin":{
        "ios": {
            "plugins": [
                {
                    "type": "component",//插件类型,是功能组件(module)还是视图组件(component)
                    "name": "wsl-component",//在nvue文件内的标签tag
                    "class": "WSLComponent" //iOS 原生对象class,继承自 DCUniComponent
                },
            ],
            "integrateType": "framework",//自制库类型
            "hooksClass": "",这里声明 app 生命周期勾子对象,它会同时响应appDelegate 事件
            "frameworks": [
				"libAFNetworking.a",//uni远端非储备库,需要标注声明
				"Masonry.framework",//Masonry 为uni远端储备库,ios 文件夹里不需要再添加,否则编译出现符号重复错误
            ],
            "embedFrameworks": [
                "IDLFaceSDK.framework",//动态库
            ],
            "capabilities": {
                "entitlements": {
                },
                "plists": {
                }
            },
            "plists": {
            },
            "assets": [
                 "WSLUniPlugin.xcassets"//图片资源文件,这里填写的是与 ios 文件夹的相对路径,因为 WSLUniPlugin.xcassets 就在 ios 文件里,所以直接写。
            ],
            "privacies": [
            ],
            "embedSwift": false,
            "deploymentTarget": "8.0",//支持iOS版本
            "validArchitectures": [
                 "arm64"//架构
            ],
            "parameters": {
            },
            "resources": [
                "WSLUniPlugin.bundle",//这里是一些资源文件,比如 bundle,这里填写的是与 ios 文件夹的相对路径,因为 WSLUniPlugin.bundle 就在 ios 文件里,所以直接写。
            ]
        }
    }
}

위는 기본 구성 설정입니다. 일일 유니 클라우드 편집 횟수가 제한되어 있고(약 10회) 패키지 크기가 40M 미만이어야 하기 때문에 초과 횟수는 시간당 2위안, 초과 볼륨은 100M당 10위안입니다. 약간의 함정이 있는 걸까요? 이런 식으로 매일 시행착오를 하는 데 드는 비용이 엄청나게 높기 때문에 여기에 기록하겠습니다.

추천: "uniapp 튜토리얼"

위 내용은 iOS의 uniAPP 네이티브 플러그인이 어떻게 패키징되어 있는지 이야기해 볼까요? (포장공정 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제