关于xcode的几个实用的小技巧

1>如何实现build number 自增长,

每次build都可以自己增加1,当然也可以手动更改,在版本控制的时候有容,也可一直到自己编译的次数

Xcode Project -> TARGETS -> Gerneral -> Identity

Version: 程序版本号{主版本号.次版本号.维护号}

Build:编译次数统计

本脚本可挂载到Xcode里, 使项目build时build版本号自加1.

设置Xcode下Version Build版本号自增长脚本

工具/原料

  • Mac Xcode
  • Project

方法/步骤

  1. 双击xcode project, 打开项目;

    在Xcode左栏, 选中项目;

    在Xcode中栏偏左, 选中TARGETS->${项目名称};

    在Xcode中栏偏上, 选中Build Phases;

    在Xcode中栏左上角, 选中+号, 再选择New Run Script Build Phases;

    设置Xcode下Version Build版本号自增长脚本
  2. 在新出现的Run Script栏中, 于Shell输入框中输入如下脚本:

    #!/bin/bash

    buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")

    buildNumber=$(($buildNumber + 1))

    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

    设置Xcode下Version Build版本号自增长脚本
  3. 3

    Build Project, 检查Build版本号自加1, 即设置成功.




2>统计代码行数,可以评估工作量的

如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下

  1. find.-name"*.m"-or-name"*.h"-or-name"*.xib"-or-name"*.c"|xargswc-l

列出每个文件的行数

  1. find.-name"*.m"-or-name"*.h"-or-name"*.xib"-or-name"*.c"|xargsgrep-v"^$"|wc-l

列出代码行数总和

  • grep -v "^$"是去掉空行
  • 注释也统计在代码量之内,毕竟也一个字一个字码出来的

3.xcode更新之后插件失效的解决办法
比如用很好的代码注释插件VVDocument和KSImageNamed在xcode 升级出现问题了,可以按照以下操作,还可以在这个源代码plist文件,将xcode最新版本的 DVTPlugInCompatibilityUUID添加plist文件中
  • 打开终端,输入以下代码:

    defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
  • 获取到DVTPlugInCompatibilityUUID,然后

    find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add 9F75337B-21B4-4ADC-B558-F9CADF7073A7
  • 重启xcode

以xcode6.3为例,见下图

QQ20150410-1.png
QQ20150410-1.png
4>xcode升级到7.0遇到的问题

转载

今天升级了Xcode7,遇到了不少问题,于是各种度娘,终于解决完毕,特此总结记录一下。


1、首先是遇到的一个crash问题,是因为新浪微博SDK引起的(我们用到了shareSDK来做分享),更新shareSDK即可。

2、网络请求失败:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

原因:iOS9默认使用HTTPS请求

解决方法(二选一):1)让服务器支持https

2)暂时退回http请求:在工程的Info.plist文件里添加NSAppTransportSecurity字典类型的,添加一个元素:key为NSAllowsArbitraryLoads,值为YES



3、运行时报错(但并未crash):<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

原因设置app的状态栏样式的使用使用了旧的方式,在info.plist里面设置了View controller-based status bar appearance为NO ,默认为YES,一般式iOS6的时候使用这种方式,iOS7,8也兼容,但是到了iOS9就报了警告。

解决方法:删除原先设置状态栏样式的代码,并将View controller-based status bar appearance设置为YES




4、bitcode问题

原因:Xcode7之后会默认开启的(bitcode相关解释参考http://www.cocoachina.com/ios/20150818/13078.html),而项目中用到的SDK未支持bitcode

解决方法(二选一):1)更新所有sdk

2)暂时关闭bitcode build setting -->build options -->enablebitcode 设置为NO.



5、XCode7链接第三方库提示warning:

warning:Could not resolve external type c:objc(cs)NSString
warning: Could not resolve external type c:objc(cs)NSDictionary

warning: Could not resolve external type c:objc(cs)NSMutableString
warning: Could not resolve external type c:objc(cs)NSError

...

解决方法:1) Go to Build Settings -> Build Options -> Debug Information Format
2) Change the Debug setting from "DWARF with dSYM File" to "DWARF"
3) Leave the Release setting at "DWARF with dSYM File"
The problem appears to be that Xcode was trying to create dSYM files for Debug builds. You don't need dSYM files for Debug builds -- it's release builds where you need them.



6、iOS 9使用URL scheme必须将其加入白名单:

编译时报错:canOpenURL: failed for URL: "mqqopensdkapiV2://qqapp" - error: "This app is not allowed to query for schememqqopensdkapiV2”

解决方法:Info.plist文件中添加一个key为LSApplicationQueriesSchemes的数组值,里面包含需要添加白名单的string类型的 scheme。在项目中使用了qq,微信等分享登录功能,需要添加的值为:

mqqopensdkapiV2
mqqOpensdkSSoLogin
mqq
mqzoneopensdkapiV2
mqzoneopensdkapi19
mqzoneopensdkapi
mqzoneopensdk
mqzone

weixin
wechat




7、系统framework问题,升级之后framework全变红了(并不影响程序运行),替换成9.0版本的framework即可,旧版本的 .dylib后缀库文件在Xcode7中已经换成 .tbd了,相应进 行替换即可

5>iOS开发-Xcode Debug、Release、Archive、Profile、Analyze概念解释

1,Debug和Release版本区别?

众所周知,我们进行iOS开发,在Xcode调试程序时,分为两种方式,DebugRelease,在Target的Setting中相信大家应该看到很多选项都分为DebugRelease,方便我们分别设置,满足调试和发布的不同需求。

Release是发行版本,比Debug版本有一些优化,文件比Debug文件小 Debug是调试版本,Debug和Release调用两个不同的底层库。通俗点讲,我们开发者自己内部真机或模拟器调试时,使用Debug模式就好,等到想要发布时,也就是说需要大众客户使用时,需要build Release版本,具体区别如下:

一、Debug是调试版本,包括的程序信息更多

二、只有Debug版的程序才能设置断点、单步执行、使用TRACE/ASSERT等调试输出语句

三、Release不包含任何调试信息,所以

体积小

、运行速度快

那么,问题来了,我们调试程序时,该如何生成(Build)或运行Debug或是Release版本呢?

Xcode左上角,点中项目名称-Edit Scheme,或是菜单栏-Product-Scheme-Edit Scheme 弹出界面如下:

当你这里设置Debug时,你build/Run后就是debug版本,相应的,修改成Release模式,出来的就是release版本,这里可以很方便切换。

2,Analyze的作用?

刚开发时,始终不知道这个的作用,只知道要打包生成APP时,需要用这个,那么到底Analyze和Release有什么关系呢?

archive是你要上传包的时候,打包。也就是说Archive只跟APP要上传到appStore的时候有关,一般情况下,只有在那个时候才会用Archive,可以这么理解。所以Archive也分为Debug和Release两个,你可以Archive出一个Debug版本的应用也可以Archive出一个Release的应用。

所以说,Archive和Release没有太大的关系,Archive我们平时一般都不会用到的。

3,Profile

点击运行Profile,profile 之后,会有一个工具选项. 然后你可以查看app 性能

4,Analyze

analyze,是查找静态内存泄漏,以前mrc 的时候会用。Profile和Analyze都可以在Scheme中设置:

总结:

默认run,是debug模式,就是真机联调.

如果你修改为release,是run的时候,为发布模式.

直接archive是系统提供帮助打包的,Archive生成后的文件会小很多~

下面给出一个传送门,我最近在做的静态库开发,里面说的还算详细。

http://blog.sina.com.cn/s/blog_7b9d64af0101jlym.html iOS生成静态库方法-iOS集成静态库-iOS合并静态库


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值