在Xcode中创建静态库,并使用Target支持不同平台

摘要:
您需要将这些代码作为静态库(只有静态库可以在iOS项目中使用)。也就是说,将这些通用代码打包到静态库和可用的头文件中,并分发给需要这些代码的开发人员。也就是说,创建与真实机器和模拟器相对应的不同目标。然后您将看到以下项目结构。可以根据需要在项目中添加和修改。在弹出菜单中选择重复以生成另一个目标。

在Xcode中创建静态库,并使用Target支持不同平台

   在项目的进行中,即使很忙的项目,花一定的时间重构项目都不失为一件必须做的事。即使没到生死攸关也和项目的健康发展和按时提交

以及老生常谈的后期维护都有很大的关系。

      在iOS项目开发中,重用代码的方法有很多种。一般来说,你可以把代码以Template的方式提升成基类子类的形式或者以Strategy的方式提升成

组成的方式。但是当代码量相当大,且在多个项目中共用同一批代码文件的时候,就需要把这些代码组成静态库的方式服用了(在iOS项目中只能使用静态库)。

也就是说把这些公用代码打包成静态库和可用的头文件分发给需要用到这些代码的Developer手中。或者用Xcode模板,把你的代码打包成framework,就像系统

提供的SDK一样,其中就包含了静态库和对应的public的头文件。点击这里获取这个Xcode模板。

      这里主要强调静态库的创建。在创建静态库的时候,如果你选择了schema->iPhone (Version) Simulator,之后编译。你得到的静态库是不能真机上使用的。

of course如果你不走这一步,那么你得到的静态库又是不能在模拟器中使用的。这时就需要用到xcode的target功能了。

      不同的target之间可以共享受代码。也就是对应于真机和模拟器创建不同的target,之后编出对应不同平台的静态库。具体做法:

首先创建一个静态库的项目。

      在Xcode中创建静态库,并使用Target支持不同平台第1张

我这里就取名叫Test123。之后你会看到如下的项目结构

      在Xcode中创建静态库,并使用Target支持不同平台第2张

你可以在项目中按照需要做添加修改等操作。

这个时候就需要再建另外的一个target。点击你的项目,右击已经存在的target的名字,在弹出菜单中选择duplicate

在Xcode中创建静态库,并使用Target支持不同平台第3张

就会生成另外的一个target。而且代码全部都会reference到之前的代码上。

但是,默认生成的target名字一般不是你想要的。这里duplicate出来的target会叫做Test123 copy。这里我们需要默认生成的target

支持模拟器,第二个target支持真机。所有需要给这个库加一个后缀标识出来,Test123-ios。这个名字在对应于这个target的Build Settings中修改。

如图:

在Xcode中创建静态库,并使用Target支持不同平台第4张

在图中你会看到第二个target叫Test123-other,如果这对生成的库名称没有影响。如果你不喜欢,可以双击修改名字。

      这个时候,两个target就已经建好了。只需要针对不同的平台编译就可以的到你想要的静态库。

首先在Schema中选择第一个target,然后选择iPhone(iPad也可以)Simulator。然后编译。

 在Xcode中创建静态库,并使用Target支持不同平台第5张

你就会得到一个支持模拟器的静态库。

然后选择第二个target,选择iOS Device,编译,你会得到一个支持真机的静态库。

      打开Organizer,不知道在哪儿?好吧,在Xcode工具栏的最右边或者一起按下shift+cmd+2你就会看到了。

在Xcode中创建静态库,并使用Target支持不同平台第6张

在organizer中选择Projects,然后点红圈的地方。你就会看到你的项目的生成目录。

在Xcode中创建静态库,并使用Target支持不同平台第7张

在Xcode中创建静态库,并使用Target支持不同平台第8张

项目会根据不同的平台生成不同的目录。虽然这些目录都是Debug开头的。但是也可以也Release开头。

毕竟,如果你只是想分发你的静态库给其他的Developer用不能给他们Debug版的。

在Xcode中创建静态库,并使用Target支持不同平台第9张

还是在刚才选择模拟器的地方,这次选择Edit Scheme。

在Xcode中创建静态库,并使用Target支持不同平台第10张

在Run里选择Info tab下的Build Configuration,然后选Release。之后再编译就可以了。

      全文到此为止。记得,在使用静态库的时候把必要的头文件加到调用项目中。你还可以在对应的target的Building Settings的Prefix Header中设置对应的pch文件。

同时可以使用lipo命令可以把生成的两种平台的静态库打包成一个Universal静态库。简单介绍下:使用Terminal跳转到刚刚说的目录下,然后键入如下命令

lipo –create Release-iphoneos/libiphone.a Debig-iphonesimulator/libiphone.a –output libiphone.a

记得根据实际静态库名称修改命令中的名称。网上很多介绍这个那个的方法配置来配置去很是麻烦,还不如这样简单可靠!

 
 
 
标签: 静态库Targettarget代码共享模拟器真机支持模拟器真机移动开发者如何获取免费流量

事先声明:这篇文章主要面向读者为跟我一样的“三无一有”开发者——无天使&魔鬼投资、无资深背景、无雄厚技术,却有一颗热爱编程,渴望成功的心,如果你是富二代,请主动绕道。

理想很丰满,现实很骨感

虽然不喜欢以过于沉重的话题开始,但把现实摆正还是有必要的。目前国内App市场环境的现状可以用十个字概括“理想很丰满,现实很骨感”。为什么这么讲呢,先列几组最新数据:

(1)根据友盟统计分析,至2012年底,国内iOS活跃用户已达8500万,Android活跃用户达1.6亿,2012年全年的设备增量是2011年全年增量的3倍;

(2)百度发布的移动应用搜索行业报告中指出,移动应用分发市场发展迅速,2012年下半年Android市场应用数量增长80%,目前国内APP资源数量已接近2004年网站数量,超过44万款。

(3)艾媒咨询统计数据显示,2011年中国Android开发者数量为78.42万。2012年达到116.31万,2013将年达到137.41万,呈现出较良好的增长态势。

(4)截至2012年11月底,已有22.3%的中国手机应用开发者实现盈利,这一比例高于2012年上半年的14.8%。

从第一、二条看,android市场增速在大幅提升,用户在增加,表明相应掘金的机会也在增加;而看到第三、四条,想必很多同为android的开发者都会有个中滋味,接着往下看。

夹缝中求生,蓝海变红海

作为个人开发者,2012年整个android市场给我的几个基本印象是:

(1)以安卓、安智、机锋、91为首的应用商店垄断加剧,全线兜售推荐位,屏蔽各种内置插件,免费流量没那么容易获取了;

(2)广告平台死掉一大批,单价和收入降了一大截,市场竞争激烈,扣量情况严重;

(3)垃圾应用层出不穷,应用曝光机会低,被抄袭和破解是家常便饭,指望通过一款精心制作的APP实现长久盈利成为天方夜谭。

(4)巨头介入市场,砸钱收买大部分流量,个人开发者很难分一杯羹。

(5)用户付费习惯尚未养成,应用内支付和短代难以带来稳定收入...

一方面砸不起钱做推广,另一方面又愁没有流量带来收入,短短两三年的时间,这片当初被誉为“掘金宝地”从“大锅饭”的蓝海变成了竞争白热化的红海且在加剧恶化,生存问题捉急,这些难题也一直在困扰笔者,但既然不能轻言放弃,还是要学会在夹缝中求生,因此学习一定的生存本领就显得尤为重要,如何在这种弱肉强食的大环境下持续为自己带来低成本流量,是决定了自己能否在这个行业继续待下去的关键,下面笔者就自身积累的一些推广经验做几点分享。

1、 善于利用工具

目前国内应用商店主要分为以下几类:

(1)主流市场,如安卓、安智、机锋、91、应用汇、木蚂蚁、3G门户、AppChina等

(2)二线市场,如N多、十字猫、优亿、飞流、蘑菇市场、拇指姑娘等

(3)运营商市场,如移动MM、沃商店、天翼空间、华为智慧云等

(4)巨头市场,如百度、360、小米、腾讯、阿里云、网易、智慧云、三星、金立、苏宁等。在没有一键上传工具之前,一个个的去注册并定期更新确实是一件非常费时间费力气的事情,但目前市场上已经有了如抓猫、酷传等一键上传工具,基本囊括了目前大部分市场,你所需要的只是前期在他们的后台部署好各个已经注册好的市场账户,以后便是一劳永逸的事情,不过需要注意的是,目前很多市场对带有广告的应用排斥比较严重,除了上传时扫描配置文件外,豌豆荚的洗白白可以一键删除广告插件,91自己做广告平台所以采用排他利己的霸权主义,比较恶心的是安智,居然上线了投诉功能,如果应用内含广告被用户投诉,被下架甚至封号都很有可能,我周边几个朋友就不幸中招。

在Xcode中创建静态库,并使用Target支持不同平台第11张

2、 不要偷懒

前面提到的部分应用商店,安卓、安智、机锋及91占据了大部分市场份额,然而想从这几家市场获得靠前位置的曝光并不是很容易的事情,尤其对我这种主要利用广告盈利的开发者而言,通过审核已非常不易,更别提获取较好的推荐位置了。据笔者了解,目前这几家市场各自都对其推荐排名增加了更多的人工干预和优先算法,以他们客户端为例,首页的滚动推荐横幅都是通过CPT售卖的,价格在1-2万/日,而新品推荐及分类TOP50的位置基本上通过市场人工干涉的方式售卖,价格在几百到几千/日不等,如果你不是和市场审核人员即所谓的“打包党”关系甚好的话,对他们能主动给你上这些位置还是别抱有太大的期望,能卖钱的东西干嘛免费给呢,对吧!但是这也不能作为你不去更新和上传的理由,因为这些位置既然是人工干涉,那么总会有漏网之鱼,所以最好的办法就是选择在一天较为靠后的时间去更新应用,要知道这几家市场雇了大量审核人员,所以审核的速度还是比较快的,笔者通过不断摸索,选择在比较适当的时间持续更新和上传应用,还是有一定收效的:

 在Xcode中创建静态库,并使用Target支持不同平台第12张在Xcode中创建静态库,并使用Target支持不同平台第13张

另外,除了这几家主流市场,目前大部分市场对带有广告插件的应用还处于一并接纳的阶段,虽然他们各自的量不大,但合起来,并且能够获得较为靠前的位置时,下载量还是较为可观的。

3、 学会互动营销

网上有很多文章提到了推广应用中QQ群、论坛、博客、微博等软性渠道的作用,大部分已经讲述的很全面了,在这里我就根据自己的实战经验补充几个要点。

1)、尽量选择比较知名的论坛和博客去集中维护,因为一天的时间有限,从写内容、截图到发帖子都需要耗费一定的时间和精力,个人推荐论坛为hiapk、机锋、安智、泡椒、eoe等,博客首选博客园、CSDN,微博就不说了。

2)、学会利用讨巧的方式去吸引眼球,虽然以上几个媒体涵盖了大量用户,但是相应的帖子数量也很多,而大部分论坛的排名算法是以帖子的“热度”——即浏览量和回复量,如果内容不够吸引人,帖子就很容易石沉大海,在发帖时可以选择具有恰到好处的煽动性标题和丰富原创的内容,例如游戏标题后面加上“你敢来挑战吗?”“智商低于180勿进”等字眼,就更容易被关注。

3)、引起互动,可以在帖子的末尾后面发起一些互动功能,比如分享送e币,回复试玩心得送金币等,同时也要积极答复帖子里每一条回复,与用户真正的互动起来,这样帖子就很容易一直处于较靠前的位置,甚至有机会被封为精品贴而置顶,笔者的窍门之一,就是时不时的换马甲去回复自己的帖子。

4)、坚持原创,精心打理每一个帖子,可以将自己的一些心得以较为固定的个人风格写进去,时不时使用咆哮体、丹丹体,加上暴走四格漫画等风格,也会起到锦上添花的作用。

5)、将帖子链接及下载链接通过微博发布,并艾特几个大号,如36氪、安智市场、木蚂蚁安卓市场等,别指望他们一定能帮你转发,所以同时艾特几个好友,让他们同时帮你转,注意一定要附上应用截图以及二维码,介绍要简洁明了。当然,如果能加入新浪微博的应用平台http://open.weibo.com/就更好了,其实微博有很多玩法,有人喜欢简单粗暴快速成效,如花钱让大号转发,让水军炒;也有人热衷于寻找边际流量,通过自然增长方式带来稳定效果。

 在Xcode中创建静态库,并使用Target支持不同平台第14张

6)、说到这么多互动模式,其实最重要和有效的渠道却经常性的被忽略,那就是咱们可爱的企鹅童鞋。话说有这么一个事儿,一个中学门口摊煎饼的中年妇女,她的摊子在高峰期经常性的被排队很久,这样会导致损失一些订单,而事先做好很多的话,也有可能带来滞销的风险,所以她自己索性建了一个QQ群,贴在自己的摊位上,这样一些老顾客就会在下课前把订单事先提交好,提高了销售的效率,这是最接地气的O2O雏形。还有很多卖零食、卖小挂件等商店等,也会通过QQ群的方式时不时推广自己的新产品,并逐渐形成自己的行销网络。我也时常在群里看到朋友帮自己的公司推广游戏和应用,当然不同的群有不同的规定,所以和群主打好关系还是有必要的,平时多活跃点,如果有能力的话,自己建立个用户群及微信大号,结合起来就更好了。

4、 找寻技术手段

“靠人不如靠己”,这是我从事移动广告这一年多得到的真知,指望这几家应用商店给予宽松审核是不可能了,好在目前一些广告平台都提供了各种技术手段,如在线开关、自定义特征代码及自定义jar包等方式,可以有效的规避应用市场的扫描。需要提醒的一点是,合理的设置后台的开关参数,用以区分不同版本、不同市场需上传的应用,积累的应用数量一旦多了之后,就容易混淆,上传时一不小心就忘记打开开关了,后果可想而知...跟我一个平台的开发者因为后台开关弄错,导致安智账户内的应用全线被下架,损失了几万块....

 在Xcode中创建静态库,并使用Target支持不同平台第15张

5、 合理嵌入广告

个人的一点建议是,广告嵌入设计需要向用户体验靠拢,我发现目前市场有很多广告条占据关键位置、利用“积分”强制用户下载和点击等方式获取收入,这样虽然能够提高短期收入,但对长期而言并不是合适的选择,用户极易流失,而且被投诉的话会带来很多麻烦,所以将功能分化、给予一定的开放功能或限时限次功能,再通过广告形式进行推广会得到事半功倍的效果。这是我做的一款游戏IP代理工具,每个新用户都有十次免费试用机会,足够玩上几天,而在次数耗尽之后,可以通过我合作的点乐积分墙来赚取使用次数,推广一个应用就可以使用十几次,所以相对而言还是比较合理的。

 在Xcode中创建静态库,并使用Target支持不同平台第16张在Xcode中创建静态库,并使用Target支持不同平台第17张在Xcode中创建静态库,并使用Target支持不同平台第18张

6、 培养数据感

“一个不懂数据分析的技术不是好的产品经理”,折腾了一番费尽力气进行推广之后,却不知道到底效果如何,那无疑是囫囵吞枣,现在的移动统计工具已十分方便,如友盟提供了相关的按渠道、版本等标识进行区分统计的方式,以数据为依托便知道,哪个推广方式带来的效果最好,何时进行集中推广最有效,哪个推广方式是持续积累用户的,哪个方式是周期性波动的,等等,这里不赘述,大家可以自行去研究友盟的文档。

7、 不断总结

总结归纳是必要的,道理每个人都懂,坚持做尤为重要,最后附上一些我经常看的blog和论坛推广后的收入效果。

 在Xcode中创建静态库,并使用Target支持不同平台第19张

个人推荐blog:

http://over140.cnblogs.com/

http://www.cnblogs.com/qianxudetianxia/

http://blog.csdn.net/xiaominghimi?viewmode=contents

本文为个人博客,拒绝抄袭,欢迎转载,如需转载请注明”转载“二字,谢谢!

 
 
 
标签: 开发者广告流量盈利

免责声明:文章转载自《在Xcode中创建静态库,并使用Target支持不同平台》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IDS与IPS功能分析获取Cygwin目录下所有文件的完全权限:takeown下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

lstm与bilstm

背景学习和整理lstm和bilstm的理论知识。对于有序数据,bilstm具有数据信息的长、短存储功能。bilstm:它是前lstm和后lstm的组合。为什么需要lstm?它可以更好地捕捉远距离的依赖性。通过培训,你可以了解哪些信息需要记住,哪些信息需要忘记;我不认为他喜欢“否定”,即句子的情感分析是贬义的。“lstm建模有一个问题,它不能从后面到前面对信息...

arcgispro 计算字段示例

使用两个或四个空格来定义每个逻辑级别。Python计算表达式字段将使用感叹号(。简单计算简单字符串示例一系列Python字符串函数支持使用字符串。字符串字段中的字符可以通过索引和拆分操作访问“”bcd“”Python还支持使用format()方法的字符串格式!)常用Python字符串操作简单数学示例Python提供了处理数字的工具。...

vscode 用户设置与工作区设置

用户设置与工作空间设置VSCode提供了两种设置方式:-用户设置:这种方式进行的设置,会应用于该用户打开的所有工程;-工作空间设置:工作空间是指使用VSCode打开的某个文件夹,在该文件夹下会创建一个名为.vscode的隐藏文件夹,里面包含着仅适用于当前目录的VSCode的设置,工作空间的设置会覆盖用户的设置。更改默认用户设置与工作空间设置VSCode的设置...

winform中 跨线程启动UI

C#的winform程序中,是不可以从UI窗口主线程之外的线程去直接操作窗口控件的。确切的解释是,不能从创建控件的线程以外的线程去处理控件的操作,比如修改属性等。方法二,通过Control.Invoke调用委托的方式来执行。...

dBFs和dBm

dBFs和dBmdBFs是用来表征数字域功率值的大小,一般情况下我们定义0dBFs为数字域满刻度功率值,即数字域中功率的最大值;因此看到的dBFs的值都是负的。...

AcWing算法基础课

第二行包含n个整数,表示整数序列。输出格式对于每个输出指令PM,输出表示当前集合中最小值的结果。每个结果占据一行。数据范围1≤ N≤ 105109≤ x(x)≤ 109是合法的。输入示例:8I-10PMI-10D1C28I6PMDM输出示例:-106分析:对于向上和向下操作,请注意ph和hp的应用,这相当于指针ph[k]=t;插入堆中的Kth的位置为t;hp...