【转载】iOS 升级后,XCode无法调试
问题描述
iPhone升级后,发现XCode无法真机调试。提示:: which may not be supported by this version of Xcode
发现是XCode版本过老,可以更新XCode,但更新一般较慢。最快的解决方法如下。
解决
1.去下述链接下载缺少的包(XCode报错缺哪个版本的包就下哪个zip)
https://github.com/xushuduo/Xcode-iOS-Developer-Disk-Image/releases
备用链接:https://github.com/filsv/iPhoneOSDeviceSupport
2. 快捷键command + shift + G 前往文件夹:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
3.把刚才下载的压缩包解压放进去。直接解压就行,不需要其他处理,如图:
4. 把真机拔离电脑,重启XCode。 即可安装app到手机调试
参考
【转载】几个可以免费下载高品质歌曲的网站
1、全网音乐免费下载工具
基本上支持所有音乐网站的歌曲下载,甚至电台的也可以,很强大,强烈推荐!
2、无损音乐下载
很专业的一个网站,操作简单,一目了然。
3、歌曲大全
http://www.gequdaquan.net/gqss/
简洁但是功能强大的一个软件,基本上可以搜到你想要的所有歌曲。
4、墨灵音乐
操作简单,可按照平台去搜想要的音乐,还可以下载MV等。
5、Tunefind
这是一个国外网站,站内有当下流行国外高品质音乐,如果英语看着费劲,可用浏览器翻译。
6、清酒踏月
操作及其简单,界面简洁,歌曲全面,高品质,比较尴尬的是和上面推荐的歌曲大全界面一样。(可以当做备用网站)
7、无损音乐
高音质、海量,车载音乐、高清MV等等应有尽有。
8、文章来源
原文链接:几个可以免费下载高品质歌曲的网站
【转载】不要做一个Hater
这个公共平台开通以后,我收到过很多寻求建议的问题,也尝试回复过一些,还有一些是我没有能力回复的。人生一路走来我们会寻求很多建议,也有很多人给你忠告,需要警惕的是,这里面有相当一部分人的“忠告”总是负面的,比如你想去学编程,他说,你的逻辑能力不适合编程,你说要去做销售;他说,性格决定命运,你的性格做不了销售;你说我要去创业,他说,这个项目类型没人会投资的,早做早死晚做晚死;你说我要站着把钱挣了,他说,这是在中国……当你稍微遭遇了一点失败的时候,这些人就会祭出万试万灵杀手锏:你看,我早就说过……
我们把这样的人统称为Hater,这种人对自己不了解或没有勇气尝试的事务永远持否定态度,如果你发现一个人大部分时间在否定着什么,那么他们的意见不听也罢,甚至于那些鼓励的建议也仅仅是建议而已,仅供参考,因为最终不是那些提建议的人去做事和承担后果。做任何事情都是我们自己的选择,想清楚了也好,没想清楚也罢,想去做的话,尽可能鼓励自己去做,做实事的人总是让人敬佩的,而且由于我们在做事,所以总会遇到失败,这时候那些口诵大悲咒“我早就说过”的Hater是完全可以忽视的,因为所有人都是在试错中成长,那些不犯错的人充满了各种幻觉,其实是因为他不再成长了。
李笑来在《把时间当做朋友》一书中写道:他们一定要给你泼冷水的。泼冷水的愿望之强烈,你无法想象。那种强烈借助了太多的力量:怀疑、嫉妒、恐惧、 愤怒。而在表现的过程中却又包装上另外一层表皮:关怀、 爱护、友爱、帮助。
当然李笑来没有把“他们”定义为Hater,但我想应该是一个意思。所以我们首先不要自己成为Hater,另外也没必要去听取Hater的忠告。地球也不会因为Hater的存在而停止转动!
当老罗的锤子手机发布的时候,我仿佛是看到了一群Hater冲上去一顿狂贬,当然里面也包含了一些看似有道理的贬,但是这些东西有什么力量呢?老罗不也说了么,你们的感受我根本不在乎。我不认为锤子有一天能够砸烂苹果,但锤子会有自己要砸的东西……
当时就有写这一篇的冲动,不过一直放倒今天才写,是为记:Don’t be a Hater!
原文链接:不要做一个Hater
Xcode10 Xcode11 libstdc++.6.0.9.tbd libstdc++.6.0.9.dylib 报错解决
升级Xcode10 后, 项目编译时可能会出现libstdc++.6.0.9系列的错。
原因:
苹果早在 Xcode 8中 就废弃了libstdc++, 给了开发者两年时间过渡, 如今从Xcode 10中已不再支持. 在 Build Phases > Link Binary With Libraries
中已经搜不到libstdc++的库了
解决
将缺少的库加入xcode10/11的相应目录。缺失的库可以在老版xcode目录中找
模拟器需要的tbd: libstdc++.6.0.9.tbd
路径:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
真机需要的tbd: libstdc++.6.0.9.tbd
路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
dylib : libstdc++.6.0.9.dylib (两个,包括快捷方式)
xcode11之前路径:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/
xcode11路径:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
这里有所需要的库与打开相应路径的脚本:
iOS 使用 dSYM 文件解析crash日志
1、平常在开发的过程中,可能会有需要手动解析crash日志文件的情况,具体如何解析呢?
需要三个东西:
- crash日志文件
- 对应的dSYM文件
- symbolicatecrash工具文件
2、找到解析工具symbolicatecrash
打开终端,输入 find /Applications/Xcode10.2.app -name symbolicatecrash -type f
,我用的是Xcode10.2,返回的结果如下:1
2
3
4/Applications/Xcode10.2.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode10.2.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode10.2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode10.2.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
直接找到最后一个,复制到一个文件夹
3、将dSYM文件和crash文件放到上面的文件夹里
4、检测dYSM文件和crash文件是否对应
dwarfdump --uuid xxx.app.dSYM
如果输出的uuid和crash文件中的一致,则可以解析出正确的crash文件。crash文件中的uuid位于Binary Images中的第一行尖括号内。
5、解析crash文件
./symbolicatecrash x.crash xxx.app.dSYM > crashLog.text
6、可能遇到的问题
第一次使用symbolicatecrash会产生一个error,如下的错误信息Error: "DEVELOPER_DIR" is not defined at /usr/local/bin/symbolicatecrash line 53.
解决办法是在命令行输入:export DEVELOPER_DIR='/Applications/Xcode10.2.app/Contents/Developer'
__has_include 对头文件是否存在进行判断
我们在实际编写代码的时候,经常需要判断当前编译环境是否存在我们需要的头文件,根据存在情况做不同的操作
GCC 5开始支持的,Mac系统下 XCode自带的Clang编译器也是支持的。
可以这样使用,判断是否有这些文件,并且定义相应的宏,下面做不同的处理:
1
2
3
4
5
6
7
8
9
10
11
12#ifdef __has_include
# if __has_include(<optional>)
# include <optional>
# define have_optional 1
# elif __has_include(<experimental/optional>)
# include <experimental/optional>
# define have_optional 1
# define experimental_optional
# else
# define have_optional 0
# endif
#endif也可以这样使用来判断,导入不同的头文件:
1
2
3
4
5# if __has_include(<AFNetworking/AFNetworking.h>)
#import <AFNetworking/AFNetworking.h>
#else
#import "AFNetworking.h"
#endif