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模拟器上将 ...
随机推荐
-
miniUI datagrid 获取序号
获取每一个row以后,其中的row._index字段和页面上显示的序号虽然看起来一样, 但是实际上不是同一个东西,如果用客户端排序模式,排序后,row._index和页面显示的序号就对不上了. 正确的 ...
-
lnmp下用phpize动态安装PHP模块/扩展(不需要重装PHP)
安装前 安装前建议先执行 /usr/local/php/bin/php -m (此命令显示目前已经安装好的PHP模块)看一下,要安装的模块是否已安装.然后下载当前PHP版本的源码并解压. 本文以ima ...
-
12天学好C语言——记录我的C语言学习之路(Day 6)
12天学好C语言--记录我的C语言学习之路 Day 6: 今天,我们要开始学习数组了. //①数组部分,数组的大小不能够动态定义.如下: //int n; scanf("%d,& ...
-
BZOJ1524: [POI2006]Pal
1524: [POI2006]Pal Time Limit: 5 Sec Memory Limit: 357 MBSubmit: 308 Solved: 101[Submit][Status] D ...
-
将后面的m个数移到前面
#include<iostream> #include<algorithm> #include<stdio.h> #include<numeric> u ...
-
3. [leetcode] Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. Examples Give ...
-
windows程序设计 创建一个新的窗口
#include <windows.h> LRESULT CALLBACK myProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(H ...
-
SAP 000 客户端初始登录
Solution 在SAP系统DB中删除账号SAP*,SAP系统会自动创建SAP*这个账号,然后初始密码是“PASS”,这样就获得Client 000 SAP*账号. Step by Step 以Or ...
-
TCP的状态转移
状态转移图 状态分析 客户端 CLOSED 初始状态 调用connect将发起主动打开,发送SYN J到服务端,进入SYN_SENT状态. SYN_SENT 客户端已经发送SYN报文 接收到服务端发回 ...
-
PHP生成缩略图(3)--封装类
前台php代码 <?php require_once 'img_thumb.class.php'; $image = new ImgLib(); //源图路径 $src_path='E:/wam ...