uniAPP ネイティブ プラグインは iOS にどのようにパッケージ化されますか?次の記事では、iOS での uniAPP ネイティブ プラグインのパッケージ化プロセスについて説明します。お役に立てば幸いです。
ナンセンスの始まり: uniAPP はクラウド コンパイルを使用してパッケージ化されています。つまり、app NextiOS コードのネイティブ部分は、コンパイルのために uni のバックグラウンドに送信する必要があります。# 上に Xcode の実行環境があることがわかります。 ##uni サーバー。もちろん、#XXcode コマンドを使用してクラウドを完成させる必要があります。HBuilderX がクラウド コンパイルを実行すると、すべてのローカル ネイティブ ライブラリが圧縮され、最後に、コンパイルされた ipa パッケージをローカルにダウンロードして、インストールできるようにします。 1. 静的ライブラリの設定
uni公式からダウンロードした デモ に基づいてプロジェクトの構造を理解するだけで済みます。 Webサイト。
1. HBuilder-uniPlugin メイン プロジェクト実際にはクラウド コンパイルとして大まかに理解できます。時間 #XXcode
のすべてのコンパイル環境、なぜそう言えるのですか?このプロジェクトのすべての依存関係を確認できます。
uni
はクラウド コンパイルのコストを考慮しているため、純粋にローカルな依存関係の数は120 にもなります。ライブラリは開発者によってアップロードされるため、コンパイル リソースが大量に占有されるため、リモートのサードパーティ ライブラリを予約する方法が採用されています。これも uni の背景から学ぶことができます。 iOS が依存するサードパーティ ライブラリのバージョンの説明
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/dependentLibrary
## したがって、uni
ネイティブ プラグインを開発する場合は、コンパイルを回避するために、リモート エンドにサポートされているサードパーティがあるかどうかを最初に参照できます。インポートの繰り返しによって発生するシンボルの競合。例: たとえば、プラグインにはサイト B の IJKMediaFramework
ライブラリ (約 160M、非常に大きい) が必要です。次に、最初にクラウド コンパイルにこのライブラリがあるかどうかを確認します。
すでに存在することがわかりました。この時点では、ローカルの IJKMediaFramework
ライブラリを送信する必要はありません。HBuilderX の manifest.json を送信します。 設定の下の VideoPlayer を確認してください。
このように、HBuilderX
のmanifest.json の構成は、クラウド コンパイラーに IJKMediaFramework を追加するように指示します。 プロジェクトに来てください。
2. DCTestUniPlugin 静的ライブラリ プロジェクト静的ライブラリを作成するときは、静的ライブラリ アーキテクチャのサポートを設定する必要があります。
ビルド設定
->アーキテクチャ
## で設定し、コンパイル時に注意して ## を選択します#任意の iOS デバイス
静的ライブラリにサードパーティのライブラリが必要な場合はどうすればよいですか?
開発中、次のようなサードパーティ ライブラリのサポートが必要な状況に必ず遭遇します。 AFNetWorking、ここではまず uni
Far を確認してください。クライアントがそれをサポートしていて、対応する静的ライブラリが改善されていないことが判明した場合は、ローカルにアップロードする必要があります。自作の静的ライブラリは最終的に APP の環境にロードされるため、自作の静的ライブラリがサードパーティに依存する戦略は、サードパーティのライブラリを追加することです。ライブラリ .a
ファイルHBuilder-uniPlugin メイン プロジェクトに追加します。自作の静的ライブラリはヘッダー ファイルをインポートしてから、Heard Search Paths# に追加する必要があるためです。 ##DCTestUniPlugin 静的ライブラリ プロジェクトの下にあるヘッダー ファイルの紹介。 HBuilder-uniPlugin メイン プロジェクト
##DCTestUniPlugin 静的ライブラリ プロジェクト
Heard Search Paths
すべての機能が開発されたので、次のステップはローカル プラグインです。 -in package Configuration
具体的なパッケージ化手順については、上記のリンクを参照してください。最終的なファイル ディレクトリ構造は次のとおりです:
1 , WSLUniPlugin はファイル全体であり、android と ios を含めることができます (iOS## ではなく ios とマークされています) # # 公式 Web サイトにあります)
2.ios ファイルには、必要なすべてのサードパーティ ライブラリと自作の静的ライブラリが含まれています。
3 とpackage.json は関連する構成です。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 文件里,所以直接写。 ] } } }
uniapp チュートリアル 」
以上がiOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。