ios程序开发杂记
ios程序开发杂记
一、程序构建
与一般的程序构建无太大区别,都是源文件编译链接这一套,通常是在mac上做交叉编译,也就是利用xcode里带的ios编译工具集去生成arm架构的ios程序(或是x86的模拟器程序):
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
二、打包
最后编好的执行文件和其它资源会一起放在一个叫$Project.app的目录下,具体位置视xcode设置而定,一般不特别去设的话,就是xcode自动随机为每个项目选择位置了,比如
/Users/abc/Library/Developer/Xcode/DerivedData/proj-breihqygrfzsvugfcxivrtgulkzd/Build/Products/Debug-iphonesimulator/MainGame.app
三、安装
1.模拟器。通过xcode安装调试就不说了,说一下命令行上的操作:
模拟器的文件根目录在在:~/Library/Application\ Support/iPhone\ Simulator/5.1/
模拟器执行文件在:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/MacOS/iPhone\ Simulator
但是通常不会直接调用该程序,一般用现成的命令行启动器(ios-sim,github上可直接拖代码构建,实际上这个启动器也是调用apple提供的模拟器操作api):
reattach-to-user-namespace ios-sim launch /Users/abc/Library/Developer/Xcode/DerivedData/proj-breihqygrfzsvugfcxivrtgulkzd/Build/Products/Debug-iphonesimulator/MainGame.app --retina
其中ios-sim就是启动器,reattach-to-user-namespace是一个加载包装工具(详情见:https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard),主要用来解决tmux下运行ios-sim时屏幕io的问题,不用tmux的就不用管了
2.真机。正版的真机我还不知道怎么装,破解的就简单了,将app目录打成deb包,传到真机上直接安装到相应位置就行了。
四、调试。
c层面的调试,当然是通过xcode来做最简单易用。但是很多时候,仅仅是修改了脚本文件或是一两个资源文件,用xcode调试的话每次都要打包重装,相当费劲,况且一般写脚本也不会在xcode里,用vim写完,还要切换回xcode来开启调试,很不方便。因此,最好是能直接从命令行完成打包安装,启动模拟器。基本步骤如下:
1、如果c文件有修改,那还是回xcode里构建一次吧,这时会在临时目录生成整个app目录,比如在:/Users/abc/Library/Developer/Xcode/DerivedData/proj-breihqygrfzsvugfcxivrtgulkzd/Build/Products/Debug-iphonesimulator/MainGame.app
2、假设修改了一些脚本或资源,那么用rsync将其从开发目录同步到上述临时目录里,一般是直接放在MainGame.app下,这也是xcode里处于Resources下条目所复制去的位置
3、运行上述ios-sim,指定这个临时目录为参数,就会打开模拟器并运行我们的程序了,而所有stdout及NSLog输出,都会直接打到当前控制台上。可以在程序里取消stdout的行缓存,以使log及时显出:
setbuf(stdout, NULL)
ios程序开发杂记的更多相关文章
- iOS开发系列--IOS程序开发概览
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- iOS 程序开发
准备 iOS 开发 之 编程知识点 iOS 程序调试 iOS 之 OC开发实战 iOS 架构模式 iOS 之 新功能.扩展
- 02-第一个iOS程序-开发步骤
打开Xcode 选择项目模板 Single View Application是最适合初学者的模板 设置项目属性 运行程序 不管怎样,先运行第一个iOS程序看看效果先(用快捷键Command + R 也 ...
- IOS程序开发中-跳转到 发送短信界面 实现发短信
前言:我发现我标题取的不好,谁帮我取个承接上下文的标题?评论一下,我改 项目需求:在程序开发中,我们需要在某个程序里面发送一些短信验证(不是接收短信验证,关于短信验证,传送门:http://www.c ...
- iOS程序开发引用的第三方库之间出现duplicate symbol时的处理方法
iOS程序集成的第三方库过多时,很容易出现某几个库同时用到了一样的函数库,也就是在你的程序link时会提示duplicate symbol,而重复的符号又不是由你自己程序的代码造成的,也就说没法通过直 ...
- 从C#到Objective-C,循序渐进学习苹果开发(5)--利用XCode来进行IOS的程序开发
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.前面几篇随笔主要介绍C#和O ...
- iOS越狱程序开发
iOS越狱程序开发http://www.docin.com/p-760246852.html
- 利用XCode来进行IOS的程序开发
利用XCode来进行IOS的程序开发 本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换 ...
- iOS 11开发教程(八)定制iOS11应用程序图标
iOS 11开发教程(八)定制iOS11应用程序图标 在图1.9中可以看到应用程序的图标是网状白色图像,它是iOS模拟器上的应用程序默认的图标.这个图标是可以进行改变的.以下就来实现在iOS模拟器上将 ...
随机推荐
- div+css登陆界面案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Oracle数据库表的备份和数据表的删除操作
--Oracle数据库中的表备份: --备份语句:在备份之后就可以将这张表的所有数据源删除了,但是之后有人对这张表的数据进行操作,但是在操作完成之后要记得将数据表恢复 CREATE TABLE DZH ...
- pureftpd安装配置-pureftp参数详解(一)
1. 下载 #cd /usr/local/src/ #wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.30.tar.g ...
- HTML/CSS中常遇到的bug 一些注意事项总结
1.IE6下横向双倍margin bug (触发条件:块属性标签:float:横向margin设置:IE6下.解决办法:css中加入display:inline.) 2.css中公用属性首先声明:如对 ...
- Spring事务配置的五种方式(转)
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...
- 用NPOI导出Excel
用NPOI导出Excel public void ProcessRequest(HttpContext context) { context.Response.ContentType = " ...
- Nginx配置一个自签名的SSL证书
http://www.liaoxuefeng.com/article/0014189023237367e8d42829de24b6eaf893ca47df4fb5e000 要保证Web浏览器到服务器的 ...
- c#操作剪切板
C#定义了一个类System.Windows.Forms.Clipboard来简化剪切板操作,这个类有一个静态方法,主要有: Clear 清除剪切板中的所有数据: ContainsData,Conta ...
- javascript背景淡入淡出
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Javascript的动态运动(1)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...