关闭

aumenu在XCode(MacOS/IPhone)下的编译

标签: xcodewrapperimageiphoneapplication脚本
2557人阅读 评论(9) 收藏 举报
分类:

1:编译XCode中将SDL,SDL_image,SDL_net(或者在网上下载),加入了SDL_image,必须加入MobileCoreServices.framework

2:将SDL,SDL_image,SDL_net下的build/Development目录拷贝到~/Libary/Frameworks

3:auogr/gdal/cpl_config.h文件在MAC和windows下不同,注意区分。简单方式就是在cygwin下make一次,产生不同OS下的cpl_config.h

4:SDL1.2和1.3版本有很多api已经变了

5:创建MacOS下的工程,选择application-->Carbon C++ Application

6:创建IPhone下的工程,选择IphoneOS-->application-->Opengl-es Application

7:  针对iphone在xcode中的开发,其预编译宏可写入到工程下面的pch文件中(在 XCode 每新建一个工程,都会有一个相应的后缀名为 .pch 的预编译头件生成,在里面增加预编译宏,也可以在project中设置)

 

8: MACOS升级到10.6后的后续操作

 a.必须将xcode升级,xcode的最新版本在snow leopard安装盘上

 b.重新安装Iphone SDK

 c.在Iphone SDK安装盘中,包含2.0到3.0的所有SDK,但默认安装时只安装3.0版本(最新版本如果为3.0),其他SDK在option packages中.在安装其他版本SDK时,如果选择默认安装不知什么原因xcode不能找到,此时请将SDK安装到指定目录下/developer/目录下,而不是根目录下

 d.10.5下的SDL版本可运行,但在10.6下有可能不能运行,此时请到www.libsdl.org中下载最新的SDL版本才行

 e. 重新安装数字证书,安装方法请见http://bbs.weiphone.com/read.php?tid=421187&fpage=1&page=1。请注意,如果需要联机调试的话,步骤5种的脚本有点小错误,中间需要加几个空格,正确脚本如下:

 

 

export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

if [ "${PLATFORM_NAME}" == "iphoneos" ]; then

/Developer/iphoneentitlements30/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";

codesign -f -s "iPhone developer" --resource-rules "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/ResourceRules.plist" /

--entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"

fi

 

经测试,上面脚本针对每个应用程序只需要执行一次就可以了

 

 f. 10.6和10.5下的SDK3.0 不一样,需要重新下载

 g. 如果xcode的organizer中显示itouch为"Could not support development",此时,需重新启动一次itouch即可

 

9:for XcodeIphone工程,除了删除对应的.m文件,resources下只保留info.plist文件,同时应该修改对应的info.plist文件,将Main nib file base name项的值删除

 

10.SDL_image提高的Iphone版本中代码有bug,函数LoadImageFromRWops不能显示图片,按如下方式修改后ok

        do 
        { 
                bytes_read = SDL_RWread(rw_ops, temp_buffer, 1, block_size); 
                [ns_data appendBytes:temp_buffer length:bytes_read]; 
        } while(bytes_read > 0); 
        ui_image = [[UIImage alloc] initWithData:ns_data]; 
        if(NULL == ui_image) 
        { 
                return NULL; 
        } 

 

11:在itouch中,如果只创建一般窗口,则在最上面将会显示系统状态栏(时间,电量等),而SDL在创建时是按照全屏幕创建的,而在鼠标获取时,坐标点则是从状态栏后面开始计数的,这就造成有坐标差,故在启动时,需要设置AUGFX_SCREEN_NOFRAME和AUGFX_SCREEN_FULLSCREEN参数,如下种:

  m_gfx->initMode(AUC_WIDTH,AUC_HEIGHT,augfxGetFormatFromBpp(AUC_BPPNUM),VIDMODEFLAGS)

 

12:itouch的应用程序一般不能读取该应用程序目录外的目录,可以将资源文件放入到工程中,在打包时会将这些资源文件与应用程序一起打包,同时放在同一个目录下的。目前还不清楚资源文件如何组织目录。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:445556次
    • 积分:5634
    • 等级:
    • 排名:第4867名
    • 原创:98篇
    • 转载:18篇
    • 译文:0篇
    • 评论:118条
    文章分类
    最新评论