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模拟器上将 ...
随机推荐
- 对象图 Object Diagram
一.用一张图来介绍一下对象图的基本内容 二.对象图与类图的基本区别 三.对象图实例
- Oracle 存储过程实例
create or replace procedure PCREPORT is startDate DATE; --起始如期 nowTime DATE; --当前日期 nowTime2 DATE; - ...
- Careercup - Facebook面试题 - 5344154741637120
2014-05-02 10:40 题目链接 原题: Sink Zero in Binary Tree. Swap zero value of a node with non-zero value of ...
- Careercup - Facebook面试题 - 5435439490007040
2014-05-02 07:37 题目链接 原题: // merge sorted arrays 'a' and 'b', each with 'length' elements, // in-pla ...
- Matlab与科学计算的基本运算
各种允许的比较关系 >, >=, <, <=, ==,~=, find(), all(), any() 例:>> A=[1,2,3;4,5,6;7,8,0]A = ...
- jquery获取标签内容,编辑内容
一.获取页面元素 三种方式获取页面中元素的内容. input标签使用:.val()获取 标签下的html及文本内容:.html() 仅获取标签下的纯文本内容:.text() <head> ...
- check environment var
田+R cmd set XXX check environment var
- uva 10900
题意一直没看懂~~~~不过看懂了之后还是感觉挺好的 #include<cstdio> #include<cstring> #include<algorithm> # ...
- POJ 3259 Wormholes(SPFA)
http://poj.org/problem?id=3259 题意 : 农夫约翰农场里发现了很多虫洞,他是个超级冒险迷,想利用虫洞回到过去,看再回来的时候能不能看到没有离开之前的自己,农场里有N块地, ...
- linux下用非root用户重启导致ssh无法连接的问题
问题描述 安装好了centOS服务器,一直用Secure CRT工具通过ssh服务来远程连接linux,很方便的进行各种操作.今天偶然尝试了一下在非root的一般用户下执行重启服务器的命令,发现一般用 ...