K-Res

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…

[译]Android音频:一些问题,隐藏的限制和OpenSL ES

原文出处:http://mindtherobot.com/blog/555/android-audio-problems-hidden-limitations-and-opensl-es/

我最近一直在研究Android音频API。之前我写过一篇介绍性的文章来说明Android上可用的三套API。现在我假设你在看这篇文章的时候已经对AudioTrack,SoundPool和MediaPlayer有过基本的了解了。

这篇文章介绍了一些我使用Android现有音频API的一些经验,包括一些问题和我遇到过的困难。后面还有一小部分OpenSL ES的内容,OpenSL ES是一种将会在Android后续发布版本中得到支持的音频标准(译注:2.3已经发布了此项支持)。

Continue reading…

[译]iOS Developer Library Technical Q&A QA1544 Obtaining the localized application name in Cocoa

比较实用,翻译一下,留作日后参考,E文原文:http://developer.apple.com/library/mac/#qa/qa1544/_index.html

获取Cocoa应用程序的本地化名称

Q:如何取得我的Cocoa应用程序的本地化名称?

A:应用程序名称有一些不同的版本,但都可以以NSString的形式获得。根据你的具体需要,可以用以下五种方法:

警告:请注意用户可以用Finder修改应用程序包。如果你想取得的是可能被用户修改过的应用程序名称,那就用第5种方法介绍的NSFileManager实现。

应用程序的别名(short name)由CFBundleName定义,常用在菜单或关于对话框中。

1:从main bundle中获取应用程序的简名(short name)。

NSString *appName =          [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:(NSString *)kCFBundleNameKey];

应用程序的“显示名称”一般都比较长,用在Finder中显示bundle名字。

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,试一下->应该有反应了。