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程序开发杂记的更多相关文章

  1. iOS开发系列--IOS程序开发概览

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

  2. iOS 程序开发

    准备 iOS 开发 之 编程知识点 iOS 程序调试 iOS 之 OC开发实战 iOS 架构模式 iOS 之 新功能.扩展

  3. 02-第一个iOS程序-开发步骤

    打开Xcode 选择项目模板 Single View Application是最适合初学者的模板 设置项目属性 运行程序 不管怎样,先运行第一个iOS程序看看效果先(用快捷键Command + R 也 ...

  4. IOS程序开发中-跳转到 发送短信界面 实现发短信

    前言:我发现我标题取的不好,谁帮我取个承接上下文的标题?评论一下,我改 项目需求:在程序开发中,我们需要在某个程序里面发送一些短信验证(不是接收短信验证,关于短信验证,传送门:http://www.c ...

  5. iOS程序开发引用的第三方库之间出现duplicate symbol时的处理方法

    iOS程序集成的第三方库过多时,很容易出现某几个库同时用到了一样的函数库,也就是在你的程序link时会提示duplicate symbol,而重复的符号又不是由你自己程序的代码造成的,也就说没法通过直 ...

  6. 从C#到Objective-C,循序渐进学习苹果开发(5)--利用XCode来进行IOS的程序开发

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.前面几篇随笔主要介绍C#和O ...

  7. iOS越狱程序开发

    iOS越狱程序开发http://www.docin.com/p-760246852.html

  8. 利用XCode来进行IOS的程序开发

    利用XCode来进行IOS的程序开发 本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换 ...

  9. iOS 11开发教程(八)定制iOS11应用程序图标

    iOS 11开发教程(八)定制iOS11应用程序图标 在图1.9中可以看到应用程序的图标是网状白色图像,它是iOS模拟器上的应用程序默认的图标.这个图标是可以进行改变的.以下就来实现在iOS模拟器上将 ...

随机推荐

  1. OC中的点语法,成员变量的作用域

    点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; / ...

  2. Ubuntu下安装配置zsh和oh my zsh

    zsh优势:自动补全功能强大和很高的可配置性 1.查看当前系统装了哪些shell    cat /etc/shells 2.当前正在运行的是哪个版本的shell    echo $SHELL 3.安装 ...

  3. Virtualbox虚拟机设置不完全笔记

    先说说我想实现的东西,我想在虚拟机安装各种开发环境,我个人在学习Node.然后我装了一个Ubuntu Server,所以我又想共享一个windows下的文件夹,这样可以让我在windows下开发,在L ...

  4. QT模态弹出对话框

    QDialog QWidget 默认show()都是非模态 如果需要模态显示, QDialog ==> setModal(true); show(); exec(); QWidget ==> ...

  5. 坑人的 try catch finally

    一直以为这样可以关闭 fs, 其实不行 static void Main(string[] args) { FileStream fs = null; try { fs = new FileStrea ...

  6. uva 11825

    刘书上例题  关于集合的动态规划 #include <cstdio> #include <cstdlib> #include <cmath> #include &l ...

  7. 安装JDK后JRE与JVM联系浅谈

    转自安装JDK后JRE与JVM联系浅谈 安装JDK后JRE.JVM之间的关系是什么呢?那么我们要从安装JDK慢慢说起. 如果安装了JDK,会发同你的电脑有两套JRE: 一套位于 <JDK安装目录 ...

  8. POJ 1459 Power Network(网络最大流,dinic算法模板题)

    题意:给出n,np,nc,m,n为节点数,np为发电站数,nc为用电厂数,m为边的个数.      接下来给出m个数据(u,v)z,表示w(u,v)允许传输的最大电力为z:np个数据(u)z,表示发电 ...

  9. java基础知识回顾之java Socket学习(一)--UDP协议编程

    UDP传输:面向无连接的协议,不可靠,只是把应用程序传给IP层的数据报包发送出去,不保证发送出去的数据报包能到达目的地.不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点.就像寄 ...

  10. http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html(重要)

    http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html