1. 程式人生 > Android開發 >Github Fork Xib 踩坑

Github Fork Xib 踩坑

Fork小知識

先說Fork操作,日常開發中用到的第三方庫,絕大部分情況都是夠用的。但有時候還是需要根據業務進行一些定製。

自定義第三方庫有兩個方法。1,把庫拖進專案檔案。2,Fork。第一種方法,可以說非常差,很可能會和當前專案中的資源存在檔案衝突,引用動態庫更是麻煩。Fork,完美。

Fork的操作的操作很簡單。

1.fork github專案。生產一個自己的專案。

2.clone該專案到本地。

3.修改並push。

2,3步就是普通git操作。

第三方庫中使用Xib的注意事項

載入Xib

載入Xib分兩步。第一步,獲取bundle ID。第二步,載入Xib。


坑-獲取bundle ID

獲取bundle ID是一個坑,在開發中庫的bundle ID和cocoapods中庫的bundle ID不是同一個。

比如我要fork的第三方stripe-ios,你在開發中,你修改的庫的bundle ID叫com.stripe.stripe-ios,而你在cocoapods中訪問的stripe庫的ID叫 org.cocoapods.Stripe

結論: 用[NSBundle bundleForClass:]

這個API可以自動獲取該Class所在的bundle ID。不需要你再手動處理。

(PS:這裡還避免了另外一個坑,[NSBundle bundleWithIdentifier:@"com.stripe.stripe-ios"]

通過這個API獲取的bundle,並未被載入到專案中。直接用會存在崩潰。還需要你在mainbundle中主動獲取一次bundle,bundle才會被load。這個坑牽扯到bundle載入機制。)


坑-Xib資源

你寫完了Xib,在本地測試完ok了,git push。結果在真實專案中一拉,crash了。

因為cocoapods配置的原因,xib資源並未被拉到本地。

podspec配置檔案。必須把xib也包含進檔案描述。

image-20200614175422273

Git中的程式碼更新,能更清楚看到區別。一定要把資源描述進去。

image-20200614175513817

私貨

這裡再夾帶一點私貨。本人最近做的自定義Stripe樣式的程式碼(和Stripe安卓的一樣)。有需要的同學可以直接fork。可以省下很多時間。樣式如下圖。

github.com/PomTTcat/st…