Telegram二次开发踩坑记录for iOS(一)

前言:

      接触到Telegram是因为工作的原因,需求是对Telegram进行二次开发。面临的问题是:下载过源码以后发现很多错误,所以就开了踩坑历劫之旅。

开篇提醒:

1.由于工程比较大,有时候反应慢,build的时候可能会达到30分钟以上,需要内心等待
2.还是由于工程比较大,有时候你修改完了bug,但是Xcode没反应过来,等你去编译的时候依然报错,这个时候如果你感觉你是对的,就要敢于怀疑工具的缓存问题,clean 一下工程或者采取更暴力的措施==>关机 重启Xcode ,这种问题我遇到过3次以上

正文

一、Telegram下载地址:

这是下载地址

二、下载过源代码以后开始编译,改bug

1、第一次编译(command+B)报错:“No signing certificate "iOS"Development......”

截图1:

Wechat1.jpeg

解决办法:
1、证书和配置文件错误,统一处理,按照groups app 每个target之间的规律和关系自定义每一个target对应的 Bundle Identifier,
groups app 每个target之间的Bundle Identifier对应规律是:

groups id: group.com.abc.banana

Telegraph: com.abc.banana (groups app规律是这一Bundle Identifier是根据自己的心情定义的,其他的Bundle Identifier都是基于这个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这个target对应的Bundle Identifier 是com.abc.banana 其他的不一一解释了。
2、然后把app中所有出现的签名,Signing 统一选择 Automatically manage signing
截图2:

Wechat2.jpeg

3、app中出现的其他的target 对应的Bundle Identifier根据自己的心情随便定义吧,然后同样Signing 统一选择 Automatically manage signing,如果你要问我为什么选择Xcode 自动配置证书,我的理由是:app中的target太多,需要配置的文件很多,所以自动配置最安全并且省时间。
当你感觉你已经修改完这一类错误的时候在app文件搜索区域 搜索 xcodeproj 确保所有的project中的所有target证书配置完毕,然后满心欢喜的build一下,看看有没有错误

4、闲聊一下:app文件比较多,有时候编译的时间很长,不要着急,去倒杯水喝着坐等,等待下一波错误,接下来都是这种节奏,慢慢改吧,也别灰心,最后你发现没改多少东西,都是配置文件的修改

2、第二次编译,报错,先看第一种错误“error: An Application Group with Identifier 'group.org.telegram.TelegramEnterprise' is not available. Please enter a different string. (in target 'Share')


截图3:

Wechat3.jpeg

我发现第一种错误有很多处,这里先解决一下,其他地方同理,解决方法看如下截图
截图4:
Wechat4.png

如果你还没有在开发者账号中申请自己的groups id,赶紧去申请一个,然后再来修改此处错误,至于groups id的格式我已经在上文提到了,我写的是 group.com.abc.banana

修改之后如下图
截图5:

Wechat5.png

你会发现这个选项提醒我们配置有错误 看红色的感叹号提示重点错误内容是:"Share has conflicting provisioning settings",解决这个配置错误,来到Share 对应的Build Settings 里面去寻找provisioning对应的设置,provisioning和解决办法如下图:
截图6:
Wechat6.png

解决方法已经用绿色文字备注了,怎么删除配置呢,一共8行配置,从第一行开,始单击选中第一行 然后按 键盘delete键即可,后面依次删除,遇到删除不掉的,就双击右边的文件,把弹框里的东西删除即可,如下图
截图7:
Wechat7.jpeg

然后再回到Share 对应的 设置选项查看,之前的App Groups 处已经不报错了,如下
截图8:

Wechat8.jpeg

接着把app中其他地方出现同样错误的几个地方按照这个思路依次都修改了吧,
按照这个思路修改了Telegraph 这个PROJECT 对应的7个target 中的多个错误,再来Command + build 编译一下看看有没有其他错误了,惊喜不断感觉快成功了

3、第三次编译(command+B)报错:"error: Multiple commands produce '/Users/maohongpeng/Library/Developer/Xcode/DerivedData/Telegram-cqpmbkdcpsuygodgvbxuftuxshhi/Build/Products/Release-iphoneos/libtgvoip.framework/Info.plist':......"

如下图
截图9:

Wechat9.jpeg

我解决问题的方法,选择简单粗暴的办法,如下图步骤,选择 File---->Workspace Settings ---->Build System,然后把Build System修改为Legacy Build System,具体可以参考他人博客

4、第四次编译(command+B)报错:"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、找到错误的地方 Code Signing Identity 下面的红色框框里所有的行全部全部修改为 IOS Developer (目的是要把之前一个开发者在target里面的签名配置换成当前开发者的证书文件签名) (此处截图上传失败,抱歉啦!)
2、修改了Code Signing Identity之后,我看到了Code Signing Identity上面的设置Code Signing Entitlements然后我发现上图 entitlements 文件的路径不正确,里面的配置路径可能是之前的开发者留下来的,这里有两个办法可以修改:
第一种是:简单粗暴的方法:直接删除app中所有的 Ccode Signing Entitlements下面配置的的文件路径。然后你回到这个target (也就是Widget)的App Groups 发现报错了,这时候你 点击 Fix issue 让Xcode自动修复,其实此时Xcode会自动帮你配置上正确的Ccode Signing Entitlements的文件路径,(流程图上传失败,抱歉)。
第二种办法:就是你找到Widget.entitlements在工程中的相对路径(相对路径可以直接把Widget.entitlements拖进终端里,查看路径,然后取路径的后半部分在打开的工程中能找到的部分,作为这个文件的路径,然后复制,粘贴到设置中),然后把路径自己手动填写到路径设置的地方,搞定,这个方法比价麻烦,容易出错,我不提倡,在此不再赘述。
按照第一种解决办法,把工程中所有的 .entitlements 结尾的 权限配置文件的路径,都给重新设置一次吧,否则工程还会报错。

5、第五次编译(command+B)报错:“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.

(流程图上传失败,抱歉)
解决办法是:
错误提醒翻译过来就是:需要你把WKAppBundleIdentifier 的对应内容设置成 com.sfbm.banana.watchkitapp ,解释一下也就是要把WKAppBundleIdentifier 对应的内容设置成WatchKit App 这个target 所对应的 CFBundleIdentifier,因为我的WatchKit App 这个target的BundleIdentifier已经设置成了com.sfbm.banana.watchkitapp,所以我很清楚的去修改这个配置文件,通常来说你的BundleIdentifier和我的一定是不一样的,所以你需要根据错误提示去修改这个WKAppBundleIdentifier对应的value

6、第六次编译(command+B)报错:“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)]
解决办法:
错误提醒翻译过来是:需要把WKCompanionAppBundleIdentifier 的值"com.sfbm" 修改为 "com.sfbm.banana",从而和你的companion app的bundle identifier相匹配,解释一下:也就是此处要把WKCompanionAppBundleIdentifier的值设置为 Telegraph这个target 所对应的bundle identifier。然后我们去设置

7、第七次编译(command+B),结果是:Build Succeeded ,

搞定,真机测试,打包都让xcode自动去配置文件和证书,就没有任何问题了,如果您还有不懂的,欢迎留言,我们相互交流,一起进步~(再次对文中流程图上传失败表示十万分抱歉,后期有时间再重新编辑上传)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 引言关于开发证书配置(Certificates & Identifiers & Provisioning Prof...
    molake阅读 48,118评论 7 62
  • 引言关于开发证书配置(Certificates & Identifiers & Provisioning Prof...
    东了个尼阅读 3,515评论 0 4
  • 引言 关于开发证书配置(Certificates & Identifiers & Provisioning Pro...
    Damen_9527阅读 9,355评论 0 4
  • 年少时,我曾以为喜欢一个人只能小心翼翼远远关注,不会走进,亦不敢说出口,一边保持暧昧,一边保持距离,不想伤害你,亦...
    是怪兽啊阅读 397评论 2 2
  • 夏夜的星空特别的美。一颗颗如钻石般璀璨的星星点缀着夜幕,映衬着一轮皎洁的明月。流星们似乎不不服气,便华丽的划过星空...
    空城只有旧梦在HOW阅读 208评论 0 0