Wie ist das native uniAPP-Plug-in auf iOS verpackt? Im folgenden Artikel erfahren Sie mehr über den nativen Plug-in-Paketierungsprozess von uniAPP unter iOS. Ich hoffe, er ist hilfreich für Sie!
Der Anfang des Unsinns: uniAPP wird mit der Cloud-Kompilierungsmethode gepackt, das heißt, der Code des nativen Teils von app unter iOS muss an den Hintergrund übermittelt werden uni für die Kompilierung, was so verstanden werden kann: Es gibt eine Xcode-Laufumgebung auf dem uni-Server. Natürlich sollte die Cloud mit dem Xcode-Befehl vervollständigt werden, wenn HBuilderX die Cloud-Kompilierung durchführt Lokale native Bibliotheken werden komprimiert und in die Cloud gepackt. Anschließend wird das kompilierte ipa-Paket in die lokale Bibliothek heruntergeladen, damit es installiert werden kann.
Laut der von der offiziellen uni-Website heruntergeladenen Demo können Sie sich einfach mit der Projektstruktur vertraut machen.
1. HBuilder-uniPlugin-Hauptprojekt
Es kann tatsächlich grob als die gesamte Kompilierungsumgebung der Cloud Xcode während der Cloud-Kompilierung verstanden werden. Sie können sich alle Abhängigkeiten dieses Projekts ansehen.
Die Anzahl der rein lokalen Abhängigkeiten beträgt bis zu 120+, da uni die Kosten für die Cloud-Kompilierung berücksichtigt, werden die Kompilierungsressourcen stark beansprucht Es wurde die Remote-Speichermethode für Bibliotheken von Drittanbietern übernommen, die auch im Hintergrund von uni erlernt werden kann.
Die Versionsbeschreibung der Drittanbieter-Bibliothek, auf die sich die iOS-Seite verlässt
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/dependentLibrary
Also in Bearbeitung uni native Plug-in-Entwicklung Zu diesem Zeitpunkt können Sie zunächst prüfen, ob das Remote-Ende über einen unterstützten Drittanbieter verfügt, um Kompilierungssymbolkonflikte durch wiederholte Importe zu vermeiden.
Beispiel: Wenn das Plug-in beispielsweise die IJKMediaFramework-Bibliothek von Station B erfordert (ca. 160 MB, was wirklich groß ist), prüfen Sie zunächst, ob die Cloud-Kompilierung über diese Bibliothek verfügt,
und finden Sie sie Es ist bereits vorhanden. Zu diesem Zeitpunkt ist es nicht erforderlich, die lokale IJKMediaFramework-Bibliothek einzureichen. Sie müssen lediglich VideoPlayer unter der manifest.json-Konfiguration von HBuilderX überprüfen.
Auf diese Weise weist die Konfiguration von manifest.json von HBuilderX den Cloud-Compiler an, IJKMediaFramework zum Projekt hinzuzufügen.
2. Statisches DCTestUniPlugin-Bibliotheksprojekt
Beim Erstellen einer statischen Bibliothek müssen Sie die Unterstützung für die statische Bibliotheksarchitektur einrichten.
Se -up unter build Setting -& gt; -Parteibibliothek?
Während der Entwicklung werden Sie auf jeden Fall auf Situationen stoßen, die eine Bibliotheksunterstützung von Drittanbietern erfordern, wie zum Beispiel: AFNetWorking
Hier haben wir zunächst überprüft, obuni remote unterstützt wird, und festgestellt, dass die entsprechende statische Bibliothek nicht verbessert wurde . Also muss es nur lokal hochgeladen werden.
Da die selbst erstellte statische Bibliothek schließlich in dieAPP-Umgebung geladen wird, besteht die Strategie für selbst erstellte statische Bibliotheken, die sich auf Dritte verlassen, darin, die Datei
.ader Drittanbieterbibliothek zur hinzuzufügen Da die selbst erstellte statische Bibliothek die Header-Datei importieren muss, fügen Sie die Header-Datei zu den „Heard Search Paths“ unter dem statischen Bibliotheksprojekt „DCTestUniPlugin“ hinzu. HBuilder-uniPlugin
HauptprojektDCTestUniPlugin
Statisches Bibliotheksprojekt Heard Search Paths
Alle Funktionen wurden entwickelt, der nächste Schritt ist lokale Plug-in-Paketkonfiguration Spezifische Verpackungsschritte finden Sie unter dem Link oben und das endgültige Dateiverzeichnis Die Struktur ist wie folgt: 1, WSLUniPlugin ist eine Gesamtdatei, die android und ios enthalten kann (die offizielle Website trägt die Bezeichnung ios statt ). iOS) 2, ios in der Datei Enthält alle erforderlichen Bibliotheken von Drittanbietern und selbst erstellte statische Bibliotheken. 3, package.json sind verwandte Konfigurationen, die der Remote-Kompilierung mitteilen, welche Bibliotheken geladen werden und welche Ordnerspeicherorte die Bibliotheken enthalten welche dynamischen Bibliotheken signiert werden müssen (Sie können zwar Ihre eigene dynamische Bibliothek erstellen, diese muss jedoch signiert werden). Empfohlen: „Zweitens konfigurieren Sie das native iOS-Plug-in 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 文件里,所以直接写。
]
}
}
}
Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie das native uniAPP-Plug-in auf iOS verpackt ist. (Teilung des Verpackungsprozesses). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!