ios编译命令行
1. 如何使用xcodebuild在命令行编译iOS工程
IOS模拟器属于SDK 即开发工具,是苹果用来提供给开发者快速调试程序的, 只能运行通过Xcode编译出来的程序,不可以安装appstore的应用和ipa包, 其原理机制和你见到的FC之类的游戏模拟器不同,请放弃此念头。
2. xcode命令行编译证书问题,xcode 编译可以成功
TARGETS下的test 那个东西 下对应位置>Build Settings -> Code Signing -> Code Signing Identity -> Debug ->也要改为DON'T ......
3. 如何使用xcodebuild在命令行编译iOS工程
、准备工作 1、jenkins环境。搭建jenkins环境可以参考jenkins平台搭建和配置一节。需要注意的是,虽然涉及iOS开发,但是jenkins平台却不必搭建在mac机器上,只要在jenkins上添加mac节点就可以了。 2、iOS开发环境。iOS开发环境主要是指Xcode开发环境,Xcode是免费的,只要在苹果应用商店里下载一个就可以了。当然,还有重要的一点儿---开发者证书,现在个人也已经有免费的证书了,没有证书的话,只能打模拟器用的包了。 3、git项目。强烈建议把代码放在git上,这样便于团队开发。当然,不放git上也可以。 4、jenkins Xcode持续集成插件。常用的插件Xcode integration,这个插件能够快速的帮助我们进行Xcode打包配置,当然,只用纯shell脚本也是可以的。 在jenkins上打包之前,我们最好手工测试一下可以打包成功,首先用Xcode图形界面进行测试,然后用命令行测试,如果都能打包成功就可以挂在jenkins上运行了,毕竟jenkins的原理也是通过执行一系列命令来完成的。 三、jenkins配置 1、创建一个任务,创建任务的时候最好选自由风格的软件项目,这样配置起来比较方便,如果有需要,也可以选择其他的风格。 2、描述
4. 如何使用xcodebuild在命令行编译iOS工程
还是我来告诉你吧!被安装的机器只能是开发机或者已越狱,要不然苹果出个99美元的服务干嘛?只能传到appstore或者是上述两种方法你要愿意的话把自己开发者证书和ipa放一起,让想安装的的人自己签完自己安
5. 苹果MAC系统怎么编译C语言
在 Mac OS X 下学习C语言使用 Xcode。
在 Xcode 上运行C语言程序需要先创建工程,再在工程中添加源代码。
1、 打开 Xcode,选择“Create a new Xcode project”创建一个新工程,如下图所示:
左侧是工程目录,主要包含了工程所用到的文件和资源。单击“main.c”,即可进入代码编辑模
式,这里 Xcode 已经为我们创建好了一个“Hello World”小程序。点击上方的“运行”按钮,即
可在右下角的选项卡中看到输出结果。
拓展资料
Xcode是由Apple官方开发的IDE,支持C、C 、 Objective-C、Swift等,可以用来开发 Mac OS X 和 iOS上的应用程序。Xcode最初使用GCC作为 编译器,后来由于GCC的不配合,改用LLVM。
6. 使用mac进行ios几种命令行打包方式
自动打包的方式有如下几种:
一、使用xcodebuild进行打包
参考apple文档:https://developer.apple.com/library/prerelease/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html
xcodebuild -project "${TARGET}.xcodeproj" -target ${TARGET} CODE_SIGN_IDENTITY="${IDENTITY}" clean //将project clean下
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme archive //进行archive,生成xcarchive文件
xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'
确实是可以生成.ipa,但是可能会导致不能安装,https://developer.apple.com/library/prerelease/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html , 链接是apple的官方文档,文档大概的意思将 xcarchive文件作为.ipa方式进行导出, 为什么不能在ios设备上安装?
二、原生xcodebuild、xcrun进行打包,需要详细了解,可以看下这个链接 http://www.jianshu.com/p/1229476fbce4
具体打包指令和第一种方法区别不大,不同代码如下:
xcodebuild -scheme Zxh -configuration ${buildConfiguration} clean //对代码进行clean
xcodebuild -project Zxh.xcodeproj -scheme Zxh -configuration ${buildConfiguration} -destination generic/platform=ios archive -archivePath ${buildPath} //进行build,相当于在xcode里面进行command+b,生成.app文件
#xcrun -sdk iphoneos PackageApplication -v build/Release-iphoneos/Zxh.app -o ${ipaName}.ipa --sign "iPhone Distribution:(打包证书)" //根据.app文件生成的ipa文件导出到指定目录
三、xctool进行自动打包
参考网页地址:http://www.tuicool.com/articles/uIZRZjy
1、确保安装了xctool
没有安装xctool,可以用brew安装,没有安装brew的,可以通过搜索安装brew,然后执行如下操作安装xctool
安装命令:sudo brew install xctool
介绍下xctool命令:
xctool 是FaceBook开源的一个命令行工具,用来替代苹果的xcodebuild工具。
先附上打包用的参考代码,如下:
#
cd AutoProject //进入项目目录
#
buildDay=$(date +%Y%m%d) //获取当前日期
buildTime=$(date +%Y%m%d%H%M) //获取当前时间
profile=”xxxx” //设置打包配置文件
#
buildConfiguration=”QA” //build时用的证书
buildPath=”../ArchiveProction/QA/${buildDay}/Auto_QA_${buildTime}.xcarchive” //build后归档的文件目录
ipaName=”../ipa/QA/${buildDay}/Auto_QA_${buildTime}.ipa” //打好包放置位置
#
xctool -scheme AutoProject -configuration ${buildConfiguration} clean //clean下工程
xctool -scheme AutoProject -configuration ${buildConfiguration} archive -archivePath ${buildPath} //对项目进行Archive, 将xcarchive文件导出到指定目录
xcodebuild -exportArchive -exportFormat IPA -archivePath ${buildPath} -exportPath ${ipaName} - exportProvisioningProfile “$profile” //生成的ipa文件导出到指定目录, 此处依然使用的是xcodebuild进行打包, 待优化
7. iOS 编译报错怎么办
1.编译iPad真机时,选择了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad.
若编译出现如下错误:
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
则修改 GCC4.2CodeGeneral区域中的ComplieForThumb为非选中.
已经有了开发者证书及私钥后,可直接在越狱的手机上调试.
2. 编译链接时, "_OBJC_CLASS_$_xxx", referenced from:可能需要重新建立某个类的文件.
或者:选择项目名,在detail列表中的target列(显示为一个又圆圈),把这个文件的复选选中,或者再次选中.以把它加入到这个target里面来.
3.在sdk4.0及以上使用RegexKitLite报'captureCount' was not declared in this scope错误,是在非.m文件中使用了它的原因.
4.there is no sdk with the name or path.
从网上down的开源代码,结果运行的时候常出现这样的错,并且在deployment中没有iosdeploymenttarget选项.
尝试 Project/Edit Active Target/ 及 Set Active SDK菜单项,来回切换一下Active Configuration。
5. EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION错误,意味着这个app有内存管理的问题,一般是因为访问野指针对象造成的。
一个和内存相关的崩溃一般很难定位到源代码,因为这个恶魔可能很早就在程序中做了坏事了。假如一段有问题的代码混乱了内存结构,这样产生的蝴蝶效应可能会在之后很久才表现出来,并且总在不同的地方。所以,若有指针类型出现了不可能的变化,很可能就是因为内存结构被野指针调用混乱了。
修复一些警告后,可能就能预防一些内存错误。警告在左边靠近行号的黄色三角指出一个编译警告,你点击那个黄色的三角形,xcode可能会弹出一个“Fix-it”的建议。
EXC_BAD_ACCESS崩溃不像SIGABRT,将不会得到很明朗的错误消息。然而可以使用一个让人看到曙光的调试工具:Zombies!死亡对象工具。打开这个项目的scheme editor,选择Run 选项,然后选择Diagnosics标签。勾上Enable Zombie Objects选项。当这个zombie工具被启用之后,即使这个对象被释放了,这个对象的内存也不会被清理。所以,那块内存将会被标记为“长生不死的”。假如你试着之后又去使用这块内存,这个app能够意识到你的错误操作,并且app将会抛出“messagesent to daellocated instance”错误并且终止运行。
在工程中加入NSZombieEnabled 环境变量,并设为启用,则在 EXC_BAD_ACCESS 发生时,XCode 的 Console 会打印出问题描述中,设置方法:双击Executables 下的 可执行模组,在弹出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,并设定为 YES,点击选中复选框启用此变量。
可以再加入 MallocStackLogging 来启用malloc记录,以获得更多的提示来帮助定位问题。
在gdb窗口输入 (格式: shell malloc_history <id> <address>) shellmalloc_history1436 0x5f7fcf0, 也可以在终端中去运行 就要去掉以上的shell 指令 如 malloc_history <id> <address>
应该仅当需要调试内存时,才设置上述环境变量。
注意一点:不应该一直启用zombie objects。因为这个工具将永远不会释放内存,只是简单标记一下这个内存是不死的,你最终将会在某个时候耗尽所有的内存,因为所有分配过的内存都不会得到重用。因此应该在排查内存相关的错误的时候才开启zombie objects,其他时候应该关闭它。
在xcode4中,To edit environment variables, go to Menu Proct / Edit Scheme…, select the desired configuration (you probably want 'Run') from the left sidebar first and then click on the Arguments tab. Environment variables are configurable there.
6.运行一个IPhone程序时,弹出窗口说“程序运行失败,预置描述文件已过期” 。 解决办法是,在Xcode中, window-> Orgnazier -> 你的iphone ->删除带有红*的该程序之前的Profile 。 然后从Xcode运行该程序.
7.真机编译时报 Code Sign error: The identity doesn't match any valid certificate/private key pair in the default keychain
修改工程和Targets的get infouild 中的code signing identity为空
8.调试打印
CFShow(coreFoundationThingy) will print out a description of coreFoundationThingy to the console. Output looks something like: {value = w:1186.000000 h:687.000000 type = kAXValueCGSizeType}
If NSLog() is printing something out as an NSCFType, try CFShow().
9. 编译时报 Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1,修改C/C++ Compiler Version为gcc4.2
10.this class is not key value coding-compliant for the key viewController
可能在创建了一个基于view的工程,而后把生成的viewcontroller删除了,但是在.xib中还有对它的引用,在IB中直接用delete键删除掉它就行了。
11.这台电脑上已经存在一个名为“embedded.mobileprovision”的预置文件,您是否要替换么?
http://blog.sina.com.cn/s/blog_6907b67f0100o2vw.html
12.真机调试时报failed to upload *.app
http://hi..com/%CB%E6%B7%E7_1989/blog/item/9649f49f805f05aec8eaf466.html
http://www.shouyanwang.org/thread-462-1-1.html
13.记的release时,先置delegate为nil。
一个节点不应该保留任何对不属于它的节点的引用。
14.模拟器
将xcode升级到4.3.1以后发现,ipad的模拟器,没有Home键了。Command+Shift+H就可以实现类似点击Home键的效果了。
8. IOS APP开发常用的几个命令行工具
xcodebuild
苹果官方提供的的Xcode项目和工作空间(workspace)编译工具,也就是xcode自带的非图形化命令行编译工具。详细的使用方法在命令行执行:
man xcodebuild
系统会告诉你所有的用法,这里就不详细介绍了。
xcpretty
xcpretty is a fast and flexible formatter for xcodebuild
其实就是用来格式化(美化)xcodebuild命令行工具输出日志的一个小工具,我们新建一个Single View的项目xcodebuilddemo,然后在命令行执行:
xcodebuild
输出日志如下图所示:
xcodebuild_snapshot.png
四个字“惨不忍睹”。
OK, xcpretty表现一下吧,执行如下命令:
xcodebuild | xcpretty
输出日志如下图所示:
xcpretty_snapshot.png
OK,不用过多解释了,不过执行上面的命令时先执行下面的命令安装xcpretty:
gem install xcpretty
更多使用方法见项目首页:https://github.com/supermarin/xcpretty
xctool
xctool是facebook推出的用于替换xcodebuild的更易于测试ios和mac应用程序的命令行工具,特别适用于ios app的持续集成。
注意,刚开始xctool不仅用于做单元测试,包括编译、打包等功能,但现在编译、打包等功能被放到facebook的另一个项目xcbuild中了,所以xctool目前主要是用于单元测试。
xctool的官方网址:https://github.com/facebook/xctool
安装:
brew install xctool
如果您的mac机器上连brew都没装,那你真落伍了,自己去研究吧。
使用:
xctool -project xcodebuilddemo.xcodeproj -scheme xcodebuilddemo test -test-sdk iphonesimulator9.3
更详细的使用方法自己到官方网站研究吧。可以指定只测试某个用例,某个方法哦。
xcbuild
xcbuild是一个兼容Xcode的编译工具,它能使编译更快快速,更友好的编译过程日志,可以运行在多个平台(主要指OS X和Linux)。
详细的使用方法可见官方网站:https://github.com/facebook/xcbuild
目前该项目还比较新,应该是刚从xctool中剥离出来,只能从源码安装。
自己去试一试吧。