2012

Unity3D项目使用SVN进行版本控制时的注意事项

Unity3D自有一个叫Asset Server的东西可以用来实现项目版本控制,但是,由于习惯,我更倾向于用纯代码项目常用的工具,比如SVN来进行版本控制,就算Unity3D没有像VS Eclipse等IDE那样对SVN提供整合支持,配合TortoiseSVN也一样可以方便的做到SVN项目版本控制。

一开始,我直接讲整个Unity3D的项目文件夹都Import进了svn,后来发现,稍有改动就会有很多类似缓存性质的文件发生变化,需要commit上传,这时才想到是不是并不需要上传所有文件,于是在Unity官方文档中发现了这篇:http://docs.unity3d.com/Documentation/Manual/ExternalVersionControlSystemSupport.html,写的不少,但关键就是以下这几点:

1.这是Pro Only的feature,应该是指生成asset的meta。

2.在Edit->Project Settings->Editor的 Version Control里面选择Meta files。

3.完全关闭unity编辑器,并在服务器端(如果曾经误传的话)和客户端都删除Library文件夹,这是一个本地的缓存目录,不需要版本控制。为了方便保险,最好直接Ignore掉!

4.按住左Alt或mac的option重新在编辑器中打开项目。

5.Commit到此为止的所有改动。

升级Xcode 4.4后项目build提示”address not in any section for architecture armv7″的解决方法

本来以为这月最后一天了,应该可以相安无事,结果Mountain Lion发布,强迫症患者更新系统后接着更新了Xcode到Version 4.4 (4F250),然后就发现很多项目build都报下面这个链接错误:
ld: In section __TEXT,__text reloc 5: sectionForAddress(0x394) address not in any section for architecture armv7
不知道这次更新又对build tool做了什么改动,导致了上个版本build没问题的项目现在ld报错…查了一下,发现是相关target的build settings->Apple LLVM compiler 4.0 – Code Generation中Generate Position-Dependent Code这个选项的问题,换成No就可以正常link了!

iOS的UDID废用以及UUID配合keychain的替换方案实现

首先,简单介绍一下UDID这个东西:

UDIDUnique Device Identifier的简称,也就是唯一设备标识的意思。于iOS SDK中取得的方法是UIDevice的一个叫uniqueIdentifier的NSString*,由于这个ID字符串是基于设备的,应用开发人员可以通过获取此ID来用于记录区分设备。正是由于这个特性,可能会导致一些隐私等等相关的问题,Apple于iOS5中将这个UDID废掉了,SDK中被标记为了Deprecated,虽然为了兼容低版本的源代码而继续存在,但并不会再返回任何有实际意义的东西。

最近在做Flurry的统计功能时,发现还是需要用到可以识别设备的东西的,好方便分析数据,经过一段时间的研究、试验,发现了这个应该还算是比较靠谱的方法……

Continue reading…

在Mac OSX下编译用于iOS的FreeType静态库

记得上学的时候自己研究DirectDraw的文字绘制时,曾经用过FreeType开源库做过一些简单的TTF字库文字绘制操作,那时没什么强力CPU、GPU,而且又是用的DirectDraw,Alpha混合这种操作都是CPU计算,量稍微大一些的时候FPS是相当的不尽人意,就算做了MMX、SSE等的SIMD优化,感觉也不是很理想,而FreeType画文字没有半透明的抗锯齿的话效果也不是很好,所以当时就留下个印象:FreeType的确是非常强力的文字绘图解决方案。现在在像iOS、Android等移动设备的硬件都已经相当强大了(相对而言),所以我又忍不住想要继续一下当年的小研究了!

首先,先做好准备工作。因为是在Mac下编译,所以Xcode是必不可少的,这里需要注意一点,最近的某个版本(好像是4.3)开始Xcode被变成了独立app的形式发布,而这个默认是不带command line tools,而我们要做的FreeType编译是需要用到make等命令行工具的,所以进入Preferences->Downloads里把它下载下来吧,相对1.6G的Xcode来说,180M的命令行工具应该没什么痛苦。

Continue reading…

[译]如何指定iOS应用程序所支持的设备

免责申明:本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接:How to Indicate What Devices Are Supported by Your iOS App – http://blog.manbolo.com/2012/05/02/how-to-indicate-what-devices-are-supported-by-your-ios-app,由于本人水平有限,翻译不当之处欢迎留言指出!

Hypercritical n°64 “You Will Die Instantly!”这里,John Siracusa讨论了一个由于应用程序设备兼容性和iTunes信息之间不符导致的iOS问题。这个问题的具体是说有用户抱怨其所下载的游戏不能在iPhone 3G上运行,而iTunes上却声明这个游戏支持包括3G在内的全部设备。用户抱怨的同时,游戏开发人员却争执说应用介绍信息中明确指出了这个游戏不支持iPhone 3G,但是iTunes标签信息中却给出了相反的信息。这么看来,iTunes上的信息和应用描述信息之间似乎却有不一,而系统则应该尽量避免发生此类问题。

Continue reading…

给Eclipse PDT加入codeigniter框架的自动完成支持

1.给你的WEB项目加入:右键项目->Configure->Add PHP Support…

2.给CI_Model基类和CI_Controller基类加入以下代码,这两个文件的位置在2.1.0版本里是在system/core下,注意,注释部分不可无视!

//Put this code right before: class CI_Model { ...
/**
  * @var CI_Config
  */
 var $config;
 /**
  * @var CI_DB_active_record
  */
 var $db;
 /**
  * @var CI_Email
  */
 var $email;
 /**
  * @var CI_Form_validation
  */
 var $form_validation;
 /**
  * @var CI_Input
  */
 var $input;
 /**
  * @var CI_Loader
  */
 var $load;
 /**
  * @var CI_Router
  */
 var $router;
 /**
  * @var CI_Session
  */
 var $session;
 /**
  * @var CI_Table
  */
 var $table;
 /**
  * @var CI_Unit_test
  */
 var $unit;
 /**
  * @var CI_URI
  */
 var $uri;
 /**
  * @var CI_Pagination
  */
 var $pagination;

3.一切OK,试一下->应该有反应了。

Xcode 4.3.2 (4E2002)错误提示Storyboards are unavailable on iOS 4.3 and prior的解决方法

今天尝试用Xcode建立基于5.0+的Storyboards的项目时发现了一个小bug:尝试将项目Deployment Target切换回4.3编译,然后提示Storyboards are unavailable on iOS 4.3 and prior错误,ok,没问题,5.0的新东西,可以理解,切换target回5.0,编译,错误依旧??!!开始以为是某些涉及版本的设置没有成功修改回来,找了半天,没有发现!详细编译log中提示iPhone和iPad对应的两个storyboard文件编译失败。clean, cmd+q退出重开等方法均无效。最后发现需要清除~/Library/Developer/Xcode/DerivedData中对应当前项目的文件夹,然后重新编译就没问题了,这应该是当前版本Xcode的一个bug,不知什么时候能修正……

i酷加速器导致windows系统启动时explorer.exe进程出现0xc0000409未知软件异常

最近不知为何XP一启动就会显示 Explorer.exe 未知软件异常 0xc0000409 位置为:0x????????,确定后桌面任务栏消失,explorer进程重启,然后错误依旧,但位置出现变化,如此陷入错误的循环。或者取消了后,弹出JIT调试选项,挂VS,看不到任何信息,进程直接结束。这个错误倒是不影响其他操作,放着不管该干啥干啥也没问题,就是这框实在是碍眼,本着系统裸奔,有病毒木马XX等等一概手动追查到底的精神,我开始行动!
Continue reading…

又是wchar_t的问题,这次是Apple LLVM compiler 3.0的bug!

之前发现过Android上NDK对wchar_t以及相关函数的支持不足问题,后来又发现过iOS上类似的setlocale问题。最近在更新了Xcode 4.2以后,发现之前用的wchar_t相关的东西都不对了,wcslen函数返回的字符串长度不对,而且在gdb中用p查看const wchar_t*变量时,显示的是const void*,貌似就没有wchar_t相关的东西。

这个问题如果切换编译器为之前的LLVM GCC编译器则一切正常,浪费了很多时间排查错误,最后发现更新了最近的Xcode 4.3(4E109)带的Apple LLVM compiler 3.1就没问题了。啊!原来是3.0的BUG。