uniapp ios原生插件開發 (framework,cocopods)

来源:https://www.cnblogs.com/reyzhang/archive/2023/02/06/17094730.html
-Advertisement-
Play Games

一、瞭解UniApp 插件的開發方式 Xcode Framework 、 Static Library 基於Cocoapods開發 pod lib 已知UniApp的插件開發方式有兩種, 第一種 Xcode Framework的方式,這種方式是官方指定的方式。 這種方式的優點就是簡單直接, 但也有不 ...


一、瞭解UniApp 插件的開發方式

  • Xcode Framework 、 Static Library
  • 基於Cocoapods開發 pod lib

已知UniApp的插件開發方式有兩種, 第一種 Xcode Framework的方式,這種方式是官方指定的方式。 這種方式的優點就是簡單直接, 但也有不足,比如當插件需要引入一些三方庫時,操作起來就不是那麼方便。 而使用Cocoapods則可以很方便的引入三方庫。 接下來,本文探索使用Cocoapods的方式來進行UniApp插件開發。

探索之前可以先瞭解一下官方插件開發的流程及步驟:
iOS插件開發教程

二、準備

1.安裝Cocoapods

如果是首次使用Cocoapods ,則需要先安裝cocoapods。具體的安裝步驟非本文重點,可參考如下文章:
安裝Cocoapods的步驟

2. 下載UniApp iOS SDK

下載地址

三、將HBuilder-UniPluginDemo轉成Cocoapods

找到UniApp iOS SDK下載的目錄,看一下官方提供的目錄結構
在這裡插入圖片描述

podfile的創建及配置

打開“命令行”工具,cdHBuilder-uniPlugin.xcodeprj 工程所在目錄下, 並執行

pod init

來創建Podfile 文件模板
在這裡插入圖片描述
此時目錄下會多出一個 ‘Podfile’ 的文件
在這裡插入圖片描述
打開Podfile 文件, 配置相關設置如下 :

# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'

#忽略pod所有庫警告
inhibit_all_warnings!

workspace 'uniPlugins'

#關閉所有pod庫的BITCODE
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end


target 'HBuilder' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
 
end

配置忽略Pod所有庫的警告

inhibit_all_warnings!

配置workspace名稱

workspace 'uniPlugins'

關閉所有pod庫的BITCODE

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

使用pod lib 創建插件工程

在HBuilder-uniPluginDemo目錄下創建一個自定義插件目錄 ‘custom-plugins’ 用來存放自定義的插件工程,目錄結構如下:
在這裡插入圖片描述
使用命令行工具, cdcustom-plugins目錄下, 並執行

pod lib create rz-testplugin

在這裡插入圖片描述
按回車,執行命令。 會從github上載入創建pod工程的模板。 模板下載結束後,會出現如下引導:
在這裡插入圖片描述

按上述引導完成配置,在完成創建後會自動打開pod 工程, 目前用不到此工程,接著關閉即可

回到目錄 HBuilder-uniPluginDemo下,找到Podfile 文件,並打開
將本地新創建的pod工程配置進去

target 'HBuilder' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  
  #重要: 導入自定義組件庫
  pod 'rz-testplugin', :path =>'./custom-plugins/rz-testplugin'
end

完整的Podfile文件如下:

# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'

#忽略pod所有庫警告
inhibit_all_warnings!

workspace 'uniPlugins'

#關閉所有pod庫的BITCODE
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

target 'HBuilder' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  
  #重要: 導入自定義組件庫
  pod 'rz-testplugin', :path =>'./custom-plugins/rz-testplugin'
end

Podfile配置完成後, 使用命令行工具在Podfile所在目錄下,執行命令

pod install 

在這裡插入圖片描述
此時的目錄結構如下:
在這裡插入圖片描述
我們看到在HBuilder-uniPluginDemo目錄下 多了一個 uniPlugins.xcworkspace 的文件, 而這個文件名不正是我們在podfile中配置的嗎

workspace 'uniPlugins'

雙擊此文件打開, 工程結構如下
在這裡插入圖片描述
目前會有兩個工程如下: 一個DCTestUniPlugin, 一個HBuilder。 HBuilder 為主工程, DCTestUniPlugin為 SDK自帶的插件工程
在這裡插入圖片描述
預設如果在DCTestPlugin上,切換到HBuilder工程
在這裡插入圖片描述
好了,通過上面的操作,我們基本上已經把使用pod lib方式創建的插件工程集成到了workspace上了。 接下來就是插件開發了

四、第一個Module類型的插件

引用官方文檔:

插件擴展方式
原生插件是基於 DCUniPlugin 規範來實現,擴展原生功能有兩種方式:

  • module:不需要參與頁面佈局,只需要通過 API 調用原生功能,比如:獲取當前定位信息、數據請求等功能,通過擴展module的方式來實現;
  • component:需要參與頁面佈局,比如:map、image等需要顯示UI的功能,通過擴展component即組件的方法來實現;
    您需要根據實際的情況選擇擴展方式,當然插件中可以同時存在 module 和 component,也可以是多個 module 和 多個 component;

配置插件環境

更多內容詳情: https://zhanglei.blog.csdn.net/article/details/123221947

五、常見問題

1.涉及到UIViewController,開發時應該寫在module里還是component?

2. 在Module中如何跳轉原生 UIViewController?

更多內容詳情: https://zhanglei.blog.csdn.net/article/details/123221947

本文來自博客園,作者:reyzhang,轉載請註明原文鏈接:https://www.cnblogs.com/reyzhang/p/17094730.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 運行環境 OS:Windows 10 64位 前期準備 檢查是否刪除navicat歷史文件夾 使用工具everything搜索關鍵詞,將文件刪除 檢查註冊表是否刪除navicat 按鍵【win+R】輸入regedit打開註冊表,刪除【HKEY_CURRENT_USER->SOFTWARE】的【Pre ...
  • AggregatingMergeTree引擎繼承自 MergeTree,並改變了數據片段的合併邏輯。ClickHouse會將一個數據片段內所有具有相同主鍵(準確的說是排序鍵)的行替換成一行,這一行會存儲一系列聚合函數的狀態。 可以使用AggregatingMergeTree表來做增量數據的聚合統計, ...
  • 插入數據的多種方式 直接通過insert語句插入 語法: INSERT [INTO] tbl_name [(col_name [, col_name] ...)] { {VALUES | VALUE} (value_list) [, (value_list)] ... } 示例: # 插入數據 第一 ...
  • 一:背景 1. 講故事 在 SQLSERVER 的眾多阻塞場景中,有不小的一部分是由於 PFS 頁上的 閂鎖 等待造成的,畢竟寫頁操作一定是要串列化的,在面對 閂鎖(PAGELATCH_X) 等待問題上,一定要搞明白 PFS 頁到底是什麼? 這篇就來好好聊一聊。 二:PFS 詳解 1. 什麼是 PF ...
  • MySQL執行流程 select語句執行流程 增刪改語句執行流程 update語句的整體執行流程和select語句是一樣的。只是少了緩存的那一步驟。 mysql想完成數據的修改,會先從存儲引擎層讀取數據,把數據讀取到服務層進行數據的修改,再通過存儲引擎層把數據更新到資料庫中。 mysql每次讀取數據 ...
  • 閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。 摘要: GaussDB(DWS)支持根據業務系統的不同使用需求,對膨脹的數據進行冷熱分級管理,將數據按照時間分為熱數據、冷數 ...
  • 我們在談數倉之前,為了讓大家有直觀的認識,先來談數倉架構,“架構”是什麼?這個問題從來就沒有一個準確的答案。這裡我們引用一段話:在軟體行業,一種被普遍接受的架構定義是指系統的一個或多個結構。結構中包括軟體的構建(構建是指軟體的設計與實現),構建的外部可以看到屬性以及它們之間的相互關係。 ...
  • 近年來,AR版塊成為時下大熱,這是一種將現實環境中不存在的虛擬物體融合到真實環境里的技術,用戶藉助顯示設備可以擁有真實的感官體驗。AR的應用場景十分廣泛,涉及娛樂、社交、廣告、購物、教育等領域:AR可以讓游戲更具互動性;商品通過AR展示更真實;使用AR進行教育教學讓抽象事物更形象等,可以說AR技術已 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...