Telegram二次開(kāi)發(fā)踩坑記錄for iOS(一)

前言:

      接觸到Telegram是因?yàn)楣ぷ鞯脑蚋刈撸枨笫菍?duì)Telegram進(jìn)行二次開(kāi)發(fā)焚志。面臨的問(wèn)題是:下載過(guò)源碼以后發(fā)現(xiàn)很多錯(cuò)誤,所以就開(kāi)了踩坑歷劫之旅胞枕。

開(kāi)篇提醒:

1.由于工程比較大杆煞,有時(shí)候反應(yīng)慢,build的時(shí)候可能會(huì)達(dá)到30分鐘以上,需要內(nèi)心等待
2.還是由于工程比較大决乎,有時(shí)候你修改完了bug队询,但是Xcode沒(méi)反應(yīng)過(guò)來(lái),等你去編譯的時(shí)候依然報(bào)錯(cuò)构诚,這個(gè)時(shí)候如果你感覺(jué)你是對(duì)的蚌斩,就要敢于懷疑工具的緩存問(wèn)題,clean 一下工程或者采取更暴力的措施==>關(guān)機(jī) 重啟Xcode ,這種問(wèn)題我遇到過(guò)3次以上

正文

一范嘱、Telegram下載地址:

這是下載地址

二送膳、下載過(guò)源代碼以后開(kāi)始編譯,改bug

1丑蛤、第一次編譯(command+B)報(bào)錯(cuò):“No signing certificate "iOS"Development......”

截圖1:

Wechat1.jpeg

解決辦法:
1叠聋、證書(shū)和配置文件錯(cuò)誤,統(tǒng)一處理受裹,按照groups app 每個(gè)target之間的規(guī)律和關(guān)系自定義每一個(gè)target對(duì)應(yīng)的 Bundle Identifier碌补,
groups app 每個(gè)target之間的Bundle Identifier對(duì)應(yīng)規(guī)律是:

groups id: group.com.abc.banana

Telegraph: com.abc.banana (groups app規(guī)律是這一Bundle Identifier是根據(jù)自己的心情定義的,其他的Bundle Identifier都是基于這個(gè)Bundle Identifier)

Share: com.abc.banana.share

watchkitapp: com.abc.banana.watchkitapp

watchKit Extension: com.abc.banana.watchkitapp.watchkitextension

SiriIntents: com.abc.banana.siriintents

LegacyDatabase: com.abc.banana.legacydatabase

Widget: com.abc.banana.widget

解釋一下:Telegraph: com.abc.banana 的意思是 Telegraph這個(gè)target對(duì)應(yīng)的Bundle Identifier 是com.abc.banana 其他的不一一解釋了棉饶。
2厦章、然后把a(bǔ)pp中所有出現(xiàn)的簽名,Signing 統(tǒng)一選擇 Automatically manage signing
截圖2:

Wechat2.jpeg

3照藻、app中出現(xiàn)的其他的target 對(duì)應(yīng)的Bundle Identifier根據(jù)自己的心情隨便定義吧袜啃,然后同樣Signing 統(tǒng)一選擇 Automatically manage signing,如果你要問(wèn)我為什么選擇Xcode 自動(dòng)配置證書(shū)幸缕,我的理由是:app中的target太多群发,需要配置的文件很多,所以自動(dòng)配置最安全并且省時(shí)間冀值。
當(dāng)你感覺(jué)你已經(jīng)修改完這一類錯(cuò)誤的時(shí)候在app文件搜索區(qū)域 搜索 xcodeproj 確保所有的project中的所有target證書(shū)配置完畢也物,然后滿心歡喜的build一下宫屠,看看有沒(méi)有錯(cuò)誤

4列疗、閑聊一下:app文件比較多,有時(shí)候編譯的時(shí)間很長(zhǎng)浪蹂,不要著急抵栈,去倒杯水喝著坐等,等待下一波錯(cuò)誤坤次,接下來(lái)都是這種節(jié)奏古劲,慢慢改吧,也別灰心缰猴,最后你發(fā)現(xiàn)沒(méi)改多少東西产艾,都是配置文件的修改

2、第二次編譯,報(bào)錯(cuò)闷堡,先看第一種錯(cuò)誤“error: An Application Group with Identifier 'group.org.telegram.TelegramEnterprise' is not available. Please enter a different string. (in target 'Share')


截圖3:

Wechat3.jpeg

我發(fā)現(xiàn)第一種錯(cuò)誤有很多處隘膘,這里先解決一下,其他地方同理杠览,解決方法看如下截圖
截圖4:
Wechat4.png

如果你還沒(méi)有在開(kāi)發(fā)者賬號(hào)中申請(qǐng)自己的groups id弯菊,趕緊去申請(qǐng)一個(gè),然后再來(lái)修改此處錯(cuò)誤踱阿,至于groups id的格式我已經(jīng)在上文提到了管钳,我寫(xiě)的是 group.com.abc.banana

修改之后如下圖
截圖5:

Wechat5.png

你會(huì)發(fā)現(xiàn)這個(gè)選項(xiàng)提醒我們配置有錯(cuò)誤 看紅色的感嘆號(hào)提示重點(diǎn)錯(cuò)誤內(nèi)容是:"Share has conflicting provisioning settings",解決這個(gè)配置錯(cuò)誤软舌,來(lái)到Share 對(duì)應(yīng)的Build Settings 里面去尋找provisioning對(duì)應(yīng)的設(shè)置才漆,provisioning和解決辦法如下圖:
截圖6:
Wechat6.png

解決方法已經(jīng)用綠色文字備注了,怎么刪除配置呢佛点,一共8行配置栽烂,從第一行開(kāi),始單擊選中第一行 然后按 鍵盤(pán)delete鍵即可恋脚,后面依次刪除腺办,遇到刪除不掉的,就雙擊右邊的文件糟描,把彈框里的東西刪除即可怀喉,如下圖
截圖7:
Wechat7.jpeg

然后再回到Share 對(duì)應(yīng)的 設(shè)置選項(xiàng)查看,之前的App Groups 處已經(jīng)不報(bào)錯(cuò)了船响,如下
截圖8:

Wechat8.jpeg

接著把a(bǔ)pp中其他地方出現(xiàn)同樣錯(cuò)誤的幾個(gè)地方按照這個(gè)思路依次都修改了吧躬拢,
按照這個(gè)思路修改了Telegraph 這個(gè)PROJECT 對(duì)應(yīng)的7個(gè)target 中的多個(gè)錯(cuò)誤,再來(lái)Command + build 編譯一下看看有沒(méi)有其他錯(cuò)誤了见间,驚喜不斷感覺(jué)快成功了

3聊闯、第三次編譯(command+B)報(bào)錯(cuò):"error: Multiple commands produce '/Users/maohongpeng/Library/Developer/Xcode/DerivedData/Telegram-cqpmbkdcpsuygodgvbxuftuxshhi/Build/Products/Release-iphoneos/libtgvoip.framework/Info.plist':......"

如下圖
截圖9:

Wechat9.jpeg

我解決問(wèn)題的方法,選擇簡(jiǎn)單粗暴的辦法米诉,如下圖步驟菱蔬,選擇 File---->Workspace Settings ---->Build System,然后把Build System修改為L(zhǎng)egacy Build System,具體可以參考他人博客

4史侣、第四次編譯(command+B)報(bào)錯(cuò):"Code Signing Error: watchkitapp Extension has conflicting provisioning settings. watchkitapp Extension is automatically signed for development, but a conflicting code signing identity iPhone Distribution has been manually specified. Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor"

如下 截圖10:

WechatI10.jpeg

解決辦法:1拴泌、找到錯(cuò)誤的地方 Code Signing Identity 下面的紅色框框里所有的行全部全部修改為 IOS Developer (目的是要把之前一個(gè)開(kāi)發(fā)者在target里面的簽名配置換成當(dāng)前開(kāi)發(fā)者的證書(shū)文件簽名) (此處截圖上傳失敗,抱歉啦>鳌)
2蚪腐、修改了Code Signing Identity之后,我看到了Code Signing Identity上面的設(shè)置Code Signing Entitlements然后我發(fā)現(xiàn)上圖 entitlements 文件的路徑不正確税朴,里面的配置路徑可能是之前的開(kāi)發(fā)者留下來(lái)的回季,這里有兩個(gè)辦法可以修改:
第一種是:簡(jiǎn)單粗暴的方法:直接刪除app中所有的 Ccode Signing Entitlements下面配置的的文件路徑家制。然后你回到這個(gè)target (也就是Widget)的App Groups 發(fā)現(xiàn)報(bào)錯(cuò)了,這時(shí)候你 點(diǎn)擊 Fix issue 讓Xcode自動(dòng)修復(fù)泡一,其實(shí)此時(shí)Xcode會(huì)自動(dòng)幫你配置上正確的Ccode Signing Entitlements的文件路徑慰丛,(流程圖上傳失敗,抱歉)瘾杭。
第二種辦法:就是你找到Widget.entitlements在工程中的相對(duì)路徑(相對(duì)路徑可以直接把Widget.entitlements拖進(jìn)終端里诅病,查看路徑,然后取路徑的后半部分在打開(kāi)的工程中能找到的部分粥烁,作為這個(gè)文件的路徑贤笆,然后復(fù)制,粘貼到設(shè)置中)讨阻,然后把路徑自己手動(dòng)填寫(xiě)到路徑設(shè)置的地方芥永,搞定,這個(gè)方法比價(jià)麻煩钝吮,容易出錯(cuò)埋涧,我不提倡,在此不再贅述奇瘦。
按照第一種解決辦法棘催,把工程中所有的 .entitlements 結(jié)尾的 權(quán)限配置文件的路徑,都給重新設(shè)置一次吧耳标,否則工程還會(huì)報(bào)錯(cuò)醇坝。

5、第五次編譯(command+B)報(bào)錯(cuò):“error: WatchKit App doesn't contain any WatchKit Extensions whose WKAppBundleIdentifier matches "com.sfbm.banana.watchkitapp". Verify that the value of WKAppBundleIdentifier in your WatchKit Extension's Info.plist matches the value of CFBundleIdentifier in your WatchKit App's Info.plist.

(流程圖上傳失敗次坡,抱歉)
解決辦法是:
錯(cuò)誤提醒翻譯過(guò)來(lái)就是:需要你把WKAppBundleIdentifier 的對(duì)應(yīng)內(nèi)容設(shè)置成 com.sfbm.banana.watchkitapp 呼猪,解釋一下也就是要把WKAppBundleIdentifier 對(duì)應(yīng)的內(nèi)容設(shè)置成WatchKit App 這個(gè)target 所對(duì)應(yīng)的 CFBundleIdentifier,因?yàn)槲业腤atchKit App 這個(gè)target的BundleIdentifier已經(jīng)設(shè)置成了com.sfbm.banana.watchkitapp砸琅,所以我很清楚的去修改這個(gè)配置文件宋距,通常來(lái)說(shuō)你的BundleIdentifier和我的一定是不一樣的,所以你需要根據(jù)錯(cuò)誤提示去修改這個(gè)WKAppBundleIdentifier對(duì)應(yīng)的value

6症脂、第六次編譯(command+B)報(bào)錯(cuò):“error: The value of WKCompanionAppBundleIdentifier in your WatchKit app's Info.plist "com.sfbm" does not match the bundle identifier of your companion app "com.sfbm.banana".”

[圖片上傳失敗...(image-a615bf-1546060814729)]
解決辦法:
錯(cuò)誤提醒翻譯過(guò)來(lái)是:需要把WKCompanionAppBundleIdentifier 的值"com.sfbm" 修改為 "com.sfbm.banana"谚赎,從而和你的companion app的bundle identifier相匹配,解釋一下:也就是此處要把WKCompanionAppBundleIdentifier的值設(shè)置為 Telegraph這個(gè)target 所對(duì)應(yīng)的bundle identifier摊腋。然后我們?nèi)ピO(shè)置

7沸版、第七次編譯(command+B),結(jié)果是:Build Succeeded ,

搞定兴蒸,真機(jī)測(cè)試,打包都讓xcode自動(dòng)去配置文件和證書(shū)细办,就沒(méi)有任何問(wèn)題了橙凳,如果您還有不懂的蕾殴,歡迎留言,我們相互交流岛啸,一起進(jìn)步~(再次對(duì)文中流程圖上傳失敗表示十萬(wàn)分抱歉钓觉,后期有時(shí)間再重新編輯上傳)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市坚踩,隨后出現(xiàn)的幾起案子荡灾,更是在濱河造成了極大的恐慌,老刑警劉巖瞬铸,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件批幌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嗓节,警方通過(guò)查閱死者的電腦和手機(jī)荧缘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拦宣,“玉大人截粗,你說(shuō)我怎么就攤上這事⊥宜恚” “怎么了绸罗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)豆瘫。 經(jīng)常有香客問(wèn)我从诲,道長(zhǎng),這世上最難降的妖魔是什么靡羡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任系洛,我火速辦了婚禮,結(jié)果婚禮上略步,老公的妹妹穿的比我還像新娘描扯。我一直安慰自己,他們只是感情好趟薄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布绽诚。 她就那樣靜靜地躺著,像睡著了一般杭煎。 火紅的嫁衣襯著肌膚如雪恩够。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天羡铲,我揣著相機(jī)與錄音蜂桶,去河邊找鬼。 笑死也切,一個(gè)胖子當(dāng)著我的面吹牛扑媚,可吹牛的內(nèi)容都是我干的腰湾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疆股,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼费坊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起旬痹,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤附井,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后两残,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體永毅,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年磕昼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卷雕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡票从,死狀恐怖漫雕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情峰鄙,我是刑警寧澤浸间,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站吟榴,受9級(jí)特大地震影響魁蒜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吩翻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一兜看、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狭瞎,春花似錦细移、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至碗殷,卻和暖如春精绎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锌妻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工代乃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人从祝。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓襟己,卻偏偏與公主長(zhǎng)得像引谜,于是被迫代替她去往敵國(guó)和親牍陌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擎浴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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