坑: iOS打包framework通過pod方式給別人用

背景:我所在部門A需要做一個功能,通過SDK的方式嵌入到公司的另一個部門B的App
名詞解釋:
SDK:我所在部門A開發(fā)的iOS framework
接入方:部門B的App
第三方庫:主要類似AFNetworking, SDWebImage等開源庫

解決方案的步驟:

  1. 把代碼變成framework
  2. 把framework上傳到公司的github上去
  3. 接入方通過pod方式引用framework
    此篇文章是記錄在整個過程中遇到的問題和其對應的解決方案
    問題1:
    生成framework文件并上傳到私有倉庫上.期間被github/pod 命令中出現(xiàn)各種網(wǎng)絡卡給惡心了~!@#$%^&*()_+
    這個問題可以通過以下鏈接來解決:
    http://www.reibang.com/p/8036432f6333

問題2:
一般自己寫的framework如果需要依賴第三方,需要在podspecs中添加如下的:


image.png

s.dependency
這種依賴庫,如果不加這些代碼,接入方(部門B)不會自動pod install下SDK需要的第三方庫.
問題1的解決方案中,我沒有加s.dependency, 所以那個連接的內(nèi)容需要更改

問題3:
pod有使用和不使用下面代碼的區(qū)別

use_frameworks!

實際上我也沒有搞清楚具體的區(qū)別,這個我還需要去查閱相關的資料.
接入方是不使用,而我們這邊自己使用的測試Demo是使用的,因此接入方在使用的時候一直出現(xiàn)錯誤,具體的錯誤好像是無法pod下來,pod會出錯.
解決方案:
如果接入方改成使用,那么他們pod install又會出現(xiàn)其他的錯誤.因此為了能讓接入方接入,所以只能我們這邊需要更改一下.
創(chuàng)建framework工程的時候默認的 Mach-O(Build Settings) 是:Dynamic Library.
因此我們需要更改成:Static Library.
然后再各種重新pod,接入方也各種pod,這樣這個問題也解決了.

問題4:
解決問題3后,又出現(xiàn)了一個附帶的問題,接入方無法正常顯示圖片了!!!
又是崩潰了~~~~~
那就繼續(xù)解決了
說明一下:為了開發(fā)SDK,我們準備了2個demo,一個是通過直接引用SDK工程的Demo,一個是通過pod方式私有庫上的SDK


Demo1:直接引用SDK工程的代碼結(jié)構(gòu)圖
Demo2:通過pod方式引用

Demo1是方便開發(fā),Demo2是方便驗證
最終的解決方案如下:
在獲取圖片的時候添加類別中加這樣的一個方法:

+ (UIImage *)bdss_imageInBDSSBundle:(NSString *)imageName
{
    // 開發(fā)過程需要得到圖片的方式
    NSString *name2 = [@"Frameworks/BDSSSDK.framework/TDSSResources.bundle" stringByAppendingPathComponent:imageName];
//    NSString *name3 = [@"frameworks/BDSSSDK.framework/TDSSResources.bundle" stringByAppendingPathComponent:imageName];
    // 打包成pod后,得到圖片的方式
    NSString *name4 = [@"TDSSResources.bundle" stringByAppendingPathComponent:imageName];
//    NSString *name5 = [@"BDSSSDK.framework/TDSSResources.bundle" stringByAppendingPathComponent:imageName];
//    NSString *name6 = [@"framework/BDSSSDK.framework/TDSSResources.bundle" stringByAppendingPathComponent:imageName];
    UIImage *image1 = [UIImage imageNamed:imageName];
    UIImage *image2 = [UIImage imageNamed:name2];
//    UIImage *image3 = [UIImage imageNamed:name3];
    UIImage *image4 = [UIImage imageNamed:name4];
//    UIImage *image5 = [UIImage imageNamed:name5];
//    UIImage *image6 = [UIImage imageNamed:name6];
//    NSLog(@"image1:%@, image2:%@, image3:%@, image4:%@, image5:%@, image6:%@", image1, image2, image3, image4, image5, image6);
//    NSLog(@"image1:%@, image2:%@, image4:%@", image1, image2, image4);
    return image1 ? image1 : (image2 ? image2 : (image4));
}

注意上述代碼中name2和name4兩種方式:
其中name2是在Demo1中能正確獲取圖片
name4是在Demo2(Pod方式)中能正確獲取圖片.
是不是各種崩潰啊.
這個問題我覺得理論上還有更好的解決方案,需要我花時間繼續(xù)調(diào)研.

問題5
Demo1 可以在iOS11真機(模擬器)上正常安裝,但是在iOS8真機上無法正常安裝,
沒有測試iOS9,iOS10的真機/模擬器(沒有相關設備/也沒有下載相關的simulator).
Demo2 可以正常安裝
在iOS8真機提示:
The application does not have a valid signature.
嘗試了網(wǎng)上的各種解決方案都不可以.
肯定不是證書的問題,因為我新建一個干凈的工程是可以安裝的.
最好找到原因了


image.png

刪除紅色框內(nèi)容的時候,Demo1在iOS8和iOS11都可以安裝,但是無法讀取圖片資源了....
找到解決無法安裝的原因,但是還沒有找到無法讀取圖片資源的問題.
這個又是一個遺留的問題了.

問題6
我們的Demo旋轉(zhuǎn)的設置為:


image.png

但是接入方的旋轉(zhuǎn)的設置為:


image.png

他們是通過代碼的方式控制所有的界面旋轉(zhuǎn)問題.
這個也是一個巨坑~~~~

問題7
當代碼封包的時候,如果修改了大量代碼,那一定要讓測試測一遍,不能隨便自我感覺良好,我真的是崩潰,剩余的時間太少,都沒有做好這個代碼鎖定這個操作.
這個是給自己敲響的一個警鐘.
需要測試就是要去測試.
我修改歷史聊天記錄的方式(分為以前的單聊和現(xiàn)在的群聊,兩種顯示的方式是不一樣的),這種問題是真的坑爹啊.

總結(jié).
寫這篇文章后我感覺我還有好幾個問題沒有掌握,只是了解一點皮毛.
需要我列出來,然后一個一個的去調(diào)研去研究.
1.pod use_frameworks!的功能
2.Embedded Binaries 和 Linked Frameworks and Libraries 的相關的研究與用法.

  1. iOS8安裝不了與圖片顯示不了問題研究
    4.iOS旋轉(zhuǎn)問題,在各個版本的差異
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疟丙,一起剝皮案震驚了整個濱河市水援,隨后出現(xiàn)的幾起案子绅作,更是在濱河造成了極大的恐慌盅称,老刑警劉巖曙寡,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異薄料,居然都是意外死亡救斑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進店門哗总,熙熙樓的掌柜王于貴愁眉苦臉地迎上來几颜,“玉大人,你說我怎么就攤上這事讯屈〉翱蓿” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵涮母,是天一觀的道長谆趾。 經(jīng)常有香客問我,道長叛本,這世上最難降的妖魔是什么沪蓬? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮来候,結(jié)果婚禮上跷叉,老公的妹妹穿的比我還像新娘。我一直安慰自己营搅,他們只是感情好云挟,可當我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剧防,像睡著了一般植锉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上峭拘,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天,我揣著相機與錄音狮暑,去河邊找鬼鸡挠。 笑死,一個胖子當著我的面吹牛搬男,可吹牛的內(nèi)容都是我干的拣展。 我是一名探鬼主播,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼缔逛,長吁一口氣:“原來是場噩夢啊……” “哼备埃!你這毒婦竟也來了姓惑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤按脚,失蹤者是張志新(化名)和其女友劉穎于毙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辅搬,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡唯沮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了堪遂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片介蛉。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖溶褪,靈堂內(nèi)的尸體忽然破棺而出币旧,到底是詐尸還是另有隱情,我是刑警寧澤猿妈,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布佳恬,位于F島的核電站,受9級特大地震影響于游,放射性物質(zhì)發(fā)生泄漏毁葱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一贰剥、第九天 我趴在偏房一處隱蔽的房頂上張望倾剿。 院中可真熱鬧,春花似錦蚌成、人聲如沸前痘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芹缔。三九已至,卻和暖如春瓶盛,著一層夾襖步出監(jiān)牢的瞬間最欠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工惩猫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芝硬,地道東北人。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓轧房,卻偏偏與公主長得像拌阴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奶镶,可洞房花燭夜當晚...
    茶點故事閱讀 43,435評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,724評論 25 707
  • 用到的組件 1迟赃、通過CocoaPods安裝 2陪拘、第三方類庫安裝 3、第三方服務 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,603評論 1 180
  • 文/伶霏 從3月到10月在微信讀書一共7個月的時間纤壁,讀書累計180個小時左刽,讀完27本書。平均算下來相當于每個月不到...
    伶霏閱讀 641評論 2 1
  • 人的成長分為兩面:內(nèi)與外摄乒。 在外悠反,為學日益,學技能學知識馍佑,天天進步斋否。 在內(nèi),為道日損拭荤,甩掉觀念茵臭、習慣、自以為是舅世,甩...
    禾人愛閱讀 439評論 0 0
  • 不知道你身邊有沒有這樣的人 在食堂打飯的時候旦委,如果你們兩個同時看中一道菜,那么他會對你說:“這個菜好吃嗎雏亚?”你回答...
    柔西鹽閱讀 589評論 0 1