目錄
一、靜態函式庫的設定
三、 package.json 目錄
首頁 web前端 uni-app 聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

Mar 17, 2022 am 11:41 AM
ios uniapp

iOS端下uniAPP原生外掛程式是怎麼打包的?以下這篇文章就來帶大家聊聊iOS端下uniAPP 原生外掛程式打包流程,希望對大家有幫助!

聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

廢話開篇:uniAPP 打包採用的是雲端編譯的方式,也就是說,appiOS 原生部分的程式碼需要提交到uni 的後台進行編譯,可以理解為在uni 伺服器上有一個Xcode 運行環境,當然雲端應該是用Xcode 指令完成的,當HBuilderX 進行雲端編譯的時候,本地的所有原生函式庫會進行壓縮然後打包到雲端,最後,在將編譯好的ipa 套件下載到本地,這樣就可以安裝了。

一、靜態函式庫的設定

根據 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原生插件是怎麼打包的? (打包流程分享)

這樣HBuilderXmanifest.json 的設定就會告訴雲端編譯將IJKMediaFramework 給加到工程裡來。

2、DCTestUniPlugin 靜態函式庫工程

#在製作靜態函式庫的時候,這裡需要設定靜態函式庫架構的支援。

Build Setting -> Architectures 下進行設定

聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

並注意在編譯的時候,選擇Any iOS Device

聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

#靜態庫需要第三方函式庫怎麼辦?

在開發的時候一定會遇到需要第三方函式庫支援的情況,例如:AFNetWorking,這裡先查閱了uni 遠端是否支持,發現並沒有提高相應的靜態庫,那麼,就需要本地進行上傳。

因為,自製靜態函式庫最終是要載入到APP 的環境中,所有,自製靜態函式庫依賴第三方的策略就是將第三方函式庫.a 文件加入到HBuilder-uniPlugin 主工程下,因為自製靜態庫需要頭檔引入,那麼,就在DCTestUniPlugin 靜態庫工程下的Heard Search Paths 加入頭文件的引入。

HBuilder-uniPlugin 主工程

聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

DCTestUniPlugin 靜態函式庫工程Heard Search Paths

聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

二、設定iOS 原生外掛package.json

#所有的功能都開發完畢了,下一步就是本機外掛程式包配置

具體的打包步驟可以參考上面的鏈接,最後的文件目錄結構如下:

聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)

1、WSLUniPlugin 是整體文件,裡面可以包含androidios(官網上為標註ios 而不是iOS

2、ios 檔案內麵包含全部需要的第三方函式庫及自製靜態函式庫。

3、package.json 是相關的配置,透過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 文件里,所以直接写。
            ]
        }
    }
}
登入後複製

上面就是基本的設定。因為uni每天的雲編譯次數有限(10次左右),而且包體積要小於40M,超過次數2元每次,超過體積 10元每100M。是不是有點小坑,這樣,每天的試誤成本極高,所以,在這裡記錄一下。

推薦:《uniapp教學

以上是聊聊iOS端下uniAPP原生插件是怎麼打包的? (打包流程分享)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
蘋果iOS 18首版被曝Bug多到飛起:發熱嚴重 微信延遲 蘋果iOS 18首版被曝Bug多到飛起:發熱嚴重 微信延遲 Jun 13, 2024 pm 09:39 PM

一年一度的WWDC已經結束,iOS18無疑是大家關注的一大焦點。目前有許多iPhone用戶都搶先升級到了iOS18,但各種系統Bug讓人難受。有部落客表示,升級iOS18要謹慎,因為「Bug多到飛起」。部落客表示,如果你的iPhone是主力機,建議不要升級iOS18,因為第一版的Bug非常多。他也彙整了幾個目前遇到的系統Bug:1、切換圖示樣式卡頓,導致圖示不顯示2、手電筒示寬動畫經常遺失3、抖音App上傳不了影片4、微信訊息延遲10s左右推送5 、電話偶爾打不出去,顯示黑屏6、發熱嚴

蘋果重發 iOS / iPadOS 18 Beta 4 更新,版本號升至 22A5316k 蘋果重發 iOS / iPadOS 18 Beta 4 更新,版本號升至 22A5316k Jul 27, 2024 am 11:06 AM

感谢网友吉茵珂絲、xxx_x、番茄炒西红柿、Terrence、香辣鸡腿堡的线索投递!7月27日消息,苹果公司今天面向开发者,重新发布了iOS/iPadOS18Beta4更新,内部版本号从22A5316j升级到22A5316k,目前尚不清楚两个Beta4版本更新之间的区别。已经注册的开发者可以打开“设置”应用程序,进入“软件更新”部分,点击“测试版更新”选项,然后切换iOS18/iPadOS18开发者测试版设置来选择测试版。下载并安装测试版需要与开发者账户关联的AppleID。7月24日报道,iO

蘋果發布用於同態加密的開源 Swift 軟體包,已部署在 iOS 18 中 蘋果發布用於同態加密的開源 Swift 軟體包,已部署在 iOS 18 中 Jul 31, 2024 pm 01:10 PM

7月31日消息,蘋果昨天(7月30日)發布新聞稿,宣布推出新的開源Swift包(swift-homomorphic-encryption),用於在Swift程式語言中啟用同態加密。註:同態加密(HomomorphicEncryption,HE)是指滿足密文同態運算性質的加密演算法,即資料經過同態加密之後,對密文進行特定的計算,得到的密文計算結果在進行對應的同態解密後的明文等同於明文資料直接進行相同的計算,實現資料的「可算不可見」。同態加密技術可以計算加密數據,而且不會向操作過程洩漏底層的未加

更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite 更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite Aug 18, 2024 am 06:34 AM

更新:Saunders Tech 已將教學上傳到他的 YouTube 頻道(下面嵌入影片),解釋如何在歐盟境外的 iPad 上安裝 Fortnite 和 Epic Games Store。然而,該過程不僅需要特定的 iO 測試版

蘋果 iOS 18「無邊記」應用新功能:擴充 Scenes 功能、引入網格對齊 蘋果 iOS 18「無邊記」應用新功能:擴充 Scenes 功能、引入網格對齊 Jun 02, 2024 pm 05:05 PM

6月1日消息,科技媒體AppleInsider今天發布博文,表示蘋果將會在iOS18系統中,為「無邊記」(Freeform)應用程式擴充推出「Scenes」的全新導航功能,並新增物件對齊的新選項。 「無邊記」應用簡介先簡單介紹下「無邊記」應用,應用於2022年推出,目前已推出iOS、iPadOS、macOS15以及visionOS版本。蘋果官方介紹如下:「無邊記」是讓靈感變成現實的絕佳工具。在支援幾乎所有文件類型的靈活畫布上勾勒項目草圖、設計心情看板或開始腦力激盪。借助iCloud,所有看板

蘋果 iOS 17.5 RC 版發布:允許歐盟 iPhone 用戶從網站下載應用 蘋果 iOS 17.5 RC 版發布:允許歐盟 iPhone 用戶從網站下載應用 May 08, 2024 am 09:30 AM

【點此直達升級教學】5月8日訊息,蘋果今日向iPhone用戶推送了iOS17.5RC更新(內部版本號:21F79),這次更新距離上次發布隔了70天。如何升級iOS/iPadOS/watchOS/macOS開發版和公測版?升級iOS/iPadOS17開發者預覽版及公測版,可參考家友分享經驗:經驗貼一||經驗貼二||經驗貼三||經驗貼四。從iOS/iPadOS16.4開發者預覽版Beta1開始,需要註冊蘋果開發者計劃,註冊後開啟系統【設定】【軟體更新】即可看到升級選項。需注意,你的iPhone或iP

蘋果 iOS / iPadOS 18 開發者預覽版 Beta 4 發布:新增 CarPlay 桌布、梳理設定選項、增強相機控制 蘋果 iOS / iPadOS 18 開發者預覽版 Beta 4 發布:新增 CarPlay 桌布、梳理設定選項、增強相機控制 Jul 24, 2024 am 09:54 AM

感謝網友辣雞腿堡、軟媒新友2092483、手寫的從前、DingHao、小星_14、窩窩頭吃大口、非影Q、軟媒新友2168428、Slades、Aaron212、快樂小刺蝟、小伯爵、吃魚的小奶貓的線索投遞! 【點此直達升級教學】7月24日訊息,蘋果今日向iPhone和iPad用戶推送了iOS/​​iPadOS18開發者預覽版Beta4更新(內部版本號:22A5316j),這次更新距離上次發布隔了15天。 Carplay壁紙蘋果為CarPlay添加了壁紙,涵蓋淺色和深色兩種模式,其壁紙風格類似於iPhon

哈趣 K2 投影儀,讓奧運激情與夢想觸手可及 哈趣 K2 投影儀,讓奧運激情與夢想觸手可及 Jul 24, 2024 pm 01:34 PM

在剛結束的歐洲盃決賽中,你是否為自己支持的球隊瘋狂打call?在馬上到來的巴黎奧運中,你是否也期待能完美捕捉到各賽事的高光時刻?這其中,擁有一台優質的觀賽設備至關重要。哈趣K2投影機以其高性價比和出色的性能,當之無愧地成為觀賽良選。它不僅具備高亮度、清晰的畫質,還能提供沉浸式的觀影體驗,讓每一場比賽的精彩時刻都彷彿近在咫尺。這樣的設備,你是否已經心動了呢?它定能讓你在家中也能享受到奧運賽事的熱情與夢想。哈趣K2貼心最大的亮點就是它210°的超大角度調節,無論是天花板還是牆壁,都可以方便觀影。

See all articles