ホームページ > ウェブフロントエンド > uni-app > iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

青灯夜游
リリース: 2022-04-06 15:29:32
転載
5508 人が閲覧しました

uniAPP ネイティブ プラグインは iOS にどのようにパッケージ化されますか?次の記事では、iOS での uniAPP ネイティブ プラグインのパッケージ化プロセスについて説明します。お役に立てば幸いです。

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

ナンセンスの始まり: uniAPP はクラウド コンパイルを使用してパッケージ化されています。つまり、app NextiOS コードのネイティブ部分は、コンパイルのために uni のバックグラウンドに送信する必要があります。# 上に Xcode の実行環境があることがわかります。 ##uni サーバー。もちろん、#XXcode コマンドを使用してクラウドを完成させる必要があります。HBuilderX がクラウド コンパイルを実行すると、すべてのローカル ネイティブ ライブラリが圧縮され、最後に、コンパイルされた ipa パッケージをローカルにダウンロードして、インストールできるようにします。 1. 静的ライブラリの設定

uni

公式からダウンロードした デモ に基づいてプロジェクトの構造を理解するだけで済みます。 Webサイト。

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

1. HBuilder-uniPlugin メイン プロジェクト実際にはクラウド コンパイルとして大まかに理解できます。時間 #XXcode

のすべてのコンパイル環境、なぜそう言えるのですか?このプロジェクトのすべての依存関係を確認できます。

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)uni

はクラウド コンパイルのコストを考慮しているため、純粋にローカルな依存関係の数は

120 にもなります。ライブラリは開発者によってアップロードされるため、コンパイル リソースが大量に占有されるため、リモートのサードパーティ ライブラリを予約する方法が採用されています。これも 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 静的ライブラリ プロジェクト

静的ライブラリを作成するときは、静的ライブラリ アーキテクチャのサポートを設定する必要があります。

ビルド設定

->

アーキテクチャ

## で設定し、コンパイル時に注意して ## を選択します#任意の iOS デバイス

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

静的ライブラリにサードパーティのライブラリが必要な場合はどうすればよいですか? iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

開発中、次のようなサードパーティ ライブラリのサポートが必要な状況に必ず遭遇します。 AFNetWorking、ここではまず uni

Far を確認してください。クライアントがそれをサポートしていて、対応する静的ライブラリが改善されていないことが判明した場合は、ローカルにアップロードする必要があります。

自作の静的ライブラリは最終的に APP の環境にロードされるため、自作の静的ライブラリがサードパーティに依存する戦略は、サードパーティのライブラリを追加することです。ライブラリ .a

ファイル

HBuilder-uniPlugin メイン プロジェクトに追加します。自作の静的ライブラリはヘッダー ファイルをインポートしてから、Heard Search Paths# に追加する必要があるためです。 ##DCTestUniPlugin 静的ライブラリ プロジェクトの下にあるヘッダー ファイルの紹介。 HBuilder-uniPlugin メイン プロジェクト

##DCTestUniPlugin 静的ライブラリ プロジェクト

Heard Search Paths

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

2. iOS ネイティブ プラグインの設定package.json

すべての機能が開発されたので、次のステップはローカル プラグインです。 -in package Configuration

具体的なパッケージ化手順については、上記のリンクを参照してください。最終的なファイル ディレクトリ構造は次のとおりです:

iOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)

1 , WSLUniPlugin はファイル全体であり、androidios を含めることができます (iOS## ではなく ios とマークされています) # # 公式 Web サイトにあります)

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 文件里,所以直接写。
            ]
        }
    }
}
ログイン後にコピー

上記は基本的な構成設定です。 1 日あたりのユニ クラウド コンパイルの数は制限されており (約 10 回)、パッケージ サイズは 40M 未満でなければならないため、超過数は 1 回あたり 2 元、超過量は 100M あたり 10 元です。ちょっとした落とし穴はありませんか? このように、日々の試行錯誤のコストは非常に大きいので、ここに記録しておきます。

推奨: 「

uniapp チュートリアル

以上がiOS 上の uniAPP ネイティブ プラグインがどのようにパッケージ化されているかについて話しましょう。 (包装工程の共有化)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート