1. 程式人生 > >iOS-ReactNative私有庫指南

iOS-ReactNative私有庫指南

建立RN私有庫

開始之前,需要搞清楚兩個概念:

cocoapods 是通過spec repos + pod source code repo 來進行程式碼版本管理,cocoapods 的master spec repo來管理所有的第三方庫 spec,每個 spec 中都包含了對於 pod 的 source code pod。

私有源倉庫:類似於 cocoapods 官方來管理 specs 的倉庫,用來管理私有庫的 spec,下文中使用YOUR_SPECS_REPO來指代。同時,這個 repo 也有自己的 git 地址,下文使用YOUR_SPECS_GIT

私有 pod 程式碼倉庫:存放私有庫 source code 的 repo。

下面是具體的操作步驟:

建立私有ReactNative repo

  • 把 github 上的原始碼 clone 下來,然後 push 到自己的私有庫 git 中
  • 倉庫程式碼是github原始碼
  • 修復0.56.0中WebSocket問題

建立&修改 podspec.json

  • 切換到對應的tag commit: 如v0.56.0,下面的yoga和React需要儲存version一致。
    • 然後按照《私有Pods整合react-native庫》中生成和修改了yoga.podspec.json、React.podspec.json,需要修改yoga.podspec.json的source_files和public_header_files
pod ipc spec React.podspec >> React.podspec.json
cd ReactCommon/yoga
pod ipc spec yoga.podspec >> yoga.podspec.json
  • 修改yoga.podspec.json
"git": "YOUR_RN_GIT"
"source_files": "ReactCommon/yoga/**/*.{cpp,h}",
"public_header_files": "ReactCommon/yoga/**/{Yoga,YGEnums,YGMacros}.h"

lint & push podspec.json

  • 需要注意的是,修改後的podspec.json檔案,需要進行lint校驗、上傳到私有源,下面是yoga的方法
pod spec lint yoga.podspec.json --no-clean --verbose --allow-warnings
pod repo push YOUR_SPECS_REPO yoga.podspec.json --allow-warnings
  • 通過上面的方法可以吧RN和yoga新增到私有源中,但是我們pod install的時候,還是會報錯

在這裡插入圖片描述

  • Folly在RN中被CxxBridge、jschelpers等subspecs依賴,Folly.podspec檔案本身在RN原始碼目錄third-party-podspecs中,需要把Folly.podspec也上傳到私有源中,否則pod install會出現錯誤

  • 由於Folly在cocoapods公共源中已經沒有維護,但是有志願者維護了一個folly-ios的pod,需要我們新增到私有源中,新增方法和上面類似

pod repo push YOUR_SPECS_REPO Folly.podspec --allow-warnings
  • 類似的,我們也需要把React.podspec.json檔案提交到私有源中:
pod spec lint React.podspec.json --no-clean --fail-fast --verbose --allow-warnings --sources=YOUR_SPECS_GIT,https://github.com/CocoaPods/Specs.git
pod repo push YOUR_SPECS_REPO React.podspec.json --verbose --allow-warnings --sources=YOUR_SPECS_GIT,https://github.com/CocoaPods/Specs.git

最終,我們總共需要添加了三個私有repo:RN/Folly/yoga

建立離線js bundle包

使用下面命令生成js bundle:

react-native bundle --dev true --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios

通過–dev引數(true/false)控制生成debug/release包

如何維護RN版本

同步Github上的ReactNative原始碼,在sourceTree中,新增remote:
在這裡插入圖片描述

切換到當前的分支(0.57-stable),可以從github上面拉取最新程式碼(使用rebase)
更新podspec.json

pod ipc spec React.podspec >> React.podspec.json
cd ReactCommon/yoga
pod ipc spec yoga.podspec >> yoga.podspec.json

建立RN私有庫的中已經提供了需要修改的地方。

lint & push podspec.json,或者直接在私有源中進行修改。

RN程式碼有bug怎麼辦?

從RN 0.56.0到RN 0.57.3,都沒有解決websocket crash問題。

解決方法:

  1. 檢視github issue,尋找問題解決方法。已web socket為例,已經用人提了PR

  2. 把PR中的原始碼下載到本地,然後本地進行驗證。驗證通過後,則commit && push到當前tag 所在的分支

  3. 由於更新了RN原始碼,我們需要修改私有庫中tag對應的commit:

    1. 刪除之前的tag(0.57.3),在最新的commit中來新增新tag(0.57.3)
    2. 在React.podspec.json中,使用branch替代tag
"source": {
    "git": "YOUR_RN_GIT",
    "branch": "0.57-stable"
  },

專治疑難雜症

RN 0.56.0 問題:

RN 0.57.3 問題:

  • Unable to resolve module schedule/tracking

在這裡插入圖片描述

參考資料:

相關推薦

iOS-ReactNative私有指南

建立RN私有庫 開始之前,需要搞清楚兩個概念: cocoapods 是通過spec repos + pod source code repo 來進行程式碼版本管理,cocoapods 的master spec repo來管理所有的第三方庫 spec,每個 s

iOS CocoaPods私有

級別: ★★☆☆☆ 標籤:「iOS」「CocoaPods」「私有庫」 作者: 憶思夢 審校: QiShare團隊 先說下CocoaPods拉取開源庫的原理: CocoaPods 有一個開源的索引倉庫Specs,倉庫存放著所有開源庫的各個版本的.podspec檔案,.podspec檔案包含中記錄著

iOS 本地私有的建立以及使用流程

iOS開發運用Pod 建立本地私有庫 第一步 建立一個Lib檔案用於維護倉庫模組原始碼 開啟終端切換到Lib檔案下,執行如下指令,clone GitHub上的倉庫框架模板,然後依次回答對應的問題,之後Xcode會自動開啟克隆下的Demo專案 pod lib create LY

iOS組件化(一):創建本地私有

遠程倉庫 scrip all pods 中新 install block code ogr 1.創建Test項目,創建TestLib,添加Person類 2.git init 3.提交代碼 4.創建項目的podspec文件 5.修改podspec文件,保存 s.n

ios Mac 利用SVN進行cocoapod私有的使用

1. 首先在svn上面建立一個資料夾 舉例來說,名字為 FSLBootPageVC 同時在該目錄下建立 trunk 資料夾 2. 在trunk下面建立檔案 FSLBootPageVC.podspec 和資料夾 FSLBootPageVC 該目錄的FSLBootPageVC下面是實際

iOS元件化開篇(Cocoapods遠端和本地私有製作)

目錄 Git基本操作 Cocoapods釋出自己的框架 1.安裝cocoapods 2.使用cocoapods 3.cocoapods釋出自己的框架 Cocoapods本地私有庫 前言 自己的工具庫和框架以前都是直接在模組裡面操作的,沒有做成私有化或者coco

iOS 建立pod私有

這裡介紹下如何讓自己所整理的東西可以讓pod引入,主要內容很簡單,但是請注意步驟和細節,膽大心細跟我走~ 1.New repository 首先在Github上New一個repository。這裡注意,在新建的時候,要新增license。還

iOS 元件化開發(一):遠端私有的基本使用

隨著專案功能的不斷增加,越來越多的開發人員加入,業務主線也隨之越來越多,造成耦合越來越嚴重,編譯越來越慢,測試不獨立等一系列問題。為了解決此類情況,我們可以考慮到使用元件化開發 概念 元件化就是將一個單一工程的專案, 分解成為各個獨立的元件, 然後

iOS元件化(二):建立遠端私有

由於github的私有庫需要收費,因此我們使用碼雲(gitee)的私有庫,免費。 1、建立WJSpec遠端私有倉庫,用來存放podspec檔案。 1.1 在碼雲中建立私有專案: 1.2 新增你的私有Repo到你的CocoaPod

iOS】利用CocoaPods建立私有進行元件化開發

之前使用CocoaPods管理過第三方庫,前面也有翻譯文章介紹過CocoaPods的配置方法,隨著專案越來越大,很多公司會使用CocoaPods進行元件化開發,下面利用一個demo介紹一下。 什麼是庫 先說下什麼是庫,庫分為靜態庫和動態庫兩種: - 1

iOS程式碼元件化(利用CocoaPods建立私有

前言,最近因為工作需求,研究了一下程式碼元件化,中間遇到了很多問題,下面就把結合網上的一些文章和自己的實際操作,梳理一下操作流程,希望能幫到有需要的朋友,中間有需要改正的地方請指正。 一、遠端索引庫 什麼是遠端索引庫? 每建立一個元件都會帶有一

ios pod元件化和本地私有的利弊

專案在告一段落的時候,我想把已經拆成模組的專案檔案 拆分到pod庫裡面去 當初我沒拆分到pod庫 ,最開始是因為pod庫要上傳到公開 後來知道了碼雲,知道了可以上傳到私有的伺服器, 但是公司的專案是svn維護的,並沒有這樣的許可權,自己擅自做也不太好。

IOS學習】CocoaPods安裝使用及配置私有

如何安裝? 1.安裝ruby環境,新增淘寶ruby映象 $ gem sources --remove https://rubygems.org/ //等有反應之後再敲入以下命令 $ gem sources -a http://ruby.taobao.org/ 2

iOS代碼組件化--利用cocoaPods創建私有

into eas ner component 令行 podfile eat 合並 category 如果項目模塊多,模塊間邏輯復雜,我們發現多個人同時維護一個代碼倉庫需要十分小心,一不小心,造成沖突,解決起來很煩,相信很多人都遇到手工刪除合並的沖突的文件的經歷。 如果利用組

使用CocoaPods建立自己的私有-iOS元件化第一步

目前iOS元件化常用的解決方案是Pod+路由+持續整合,通常架構設計完成後第一步就是將原來工程裡的模組按照架構圖分解為一個個獨立的pod工程(元件),今天我們就來看看如何建立一個Pod私有庫。 新建:pod lib create 假設我們需要建立的庫名為TestLib,下面我們使用Pod官方提供的建立模板:

iOS元件化開發-釋出私有

遠端索引庫 將遠端索引庫添關聯到本地 pod repo 檢視本地已關聯倉庫源 pod repo add 本地索引庫名稱 遠端索引庫倉庫地址 pod repo update 索引庫名稱 pod repo remove 本地索引庫名稱  執行命令 新增遠端索引庫`KTPodSpecs`克隆到本

本地搭建CNPM私有

依賴 onf 登錄 支持 brush docs publish patch postgre 主要是玩玩CNPM私有庫,理解裏面的原理,有助於部署到服務器上和使用私用庫來管理代碼。 一、環境準備: 1、Windows操作系統; 2、MySQL數據庫(支持‘mysql‘, ‘

3-cocoaPods私有制作

create lint 執行 install 是否 們的 系統 assets push CocoaPods 私有庫制作方式一1. 新建私有git庫 可以gitlab,也可以github,當然github是公共的,私有的得交費。 2. 創建工程 可以使用pod命令來自動創建

組件化開發3-cocoaPods私有制作

分支 tag net 測試工程 如果 tool 輸入 git Coding 一、創建索引項目ZHMCSSpec 1-1 在代碼托管網站上建立索引項目ZHMCSSpec(以這個名稱為例)   1-2 在本地創建ZHMCSSpec,並與遠程索引建立聯系    po

iOS-數據sqlite的使用

font let open -s 數據庫sql err 這一 建數據庫 con .數據庫的增刪查改的方法 sqlite3_exec(db, [sql UTF8String], NULL, NULL, &erro); 數據庫的使用 步驟:0