Difference between revisions of "iPhone/iPod development/zh CN"

From Free Pascal wiki
Jump to navigationJump to search
Line 70: Line 70:
 
对Darwin/ARM程序进行编译的命令行命令(将本节中的"Developer"替换为SDK的安装目录):
 
对Darwin/ARM程序进行编译的命令行命令(将本节中的"Developer"替换为SDK的安装目录):
  
'''对 FPC 2.6.0:'''
+
'''对FPC 2.6.0:'''
 
<code>
 
<code>
 
  ppcarm -Cparmv6 -Cfvfpv2 -FD/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin -XR/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk program.pas
 
  ppcarm -Cparmv6 -Cfvfpv2 -FD/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin -XR/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk program.pas
Line 79: Line 79:
 
</code>
 
</code>
 
   
 
   
'''对 to FPC 2.6.0:'''
+
'''对FPC 2.6.0之前版本:'''
 
<code>
 
<code>
 
  ppcarm -FD/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin -XR/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk program.pas
 
  ppcarm -FD/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin -XR/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk program.pas
Line 87: Line 87:
 
  ppc388  -XR/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk program.pas
 
  ppc388  -XR/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk program.pas
 
</code>
 
</code>
 
=== 对FPC 2.6.0 ===
 
 
=== 对FPC 2.6.0之前版本===
 
  
 
== 在iPhone模拟器上编译和运行纯Pascal应用 ==
 
== 在iPhone模拟器上编译和运行纯Pascal应用 ==

Revision as of 05:48, 2 March 2013

安装

系统需求:

  • Intel Mac (iPhone SDK 需求)
  • Mac OS X 10.5.5 or later (iPhone SDK 需求)
  • iPhone SDK 3.x 或更高版本(调试需 2.2 - 5.1). 注意: 在iPhone SDK 3.0链接时,存在一个漏洞. 更多信息参考下文.

部分特征:

  • 模拟器支持
  • Xcode模板直接支持(实际上是需要)将Pascal和Objective-C源文件在同一应用中使用
  • Pascal语言翻译了从SDK中抽取的OpenGL ES 1.1 C语言头文件(这是我们唯一能提供的, 因为这一文件时基于SGI开源许可证), 此文件在gles11单元中

在提问之前,请阅读安装盘镜像中的ReadMe.rtf文件全文. 这一文件包含了大量的需要关注的信息(尤其是关于模拟器使用的信息),以及当需要增加Pascal源文件时,如何替换使用的模板.

请注意,与其他的FPC发布版本不同,这一安装包会安装FPC的源文件和脚本文件,并运行这些脚本来编译FPC(当你向安装文件提供了iPhone SDK的安装路径,就会自动生成所需的C语言头文件的Pascal版本). 这一做法是为了符合iPhone SDK的协议条文, iPhone SDK协议不允许发布任何的有SDK衍生产物. 如果脚本因某种原因终止,你可以在以下路径/Developer/FreePascalCompiler/2.6.0/InstallScript/finish_fpc_iphone_install.command 重新加载. 你也可以从我们的官网下载.

如果你在安装结束后运行脚本过程中出现问题,请在提问时务必提供脚本所运行的完整终端截屏。

(Xcode 4兼容性问题: Xcode模板只在Xcode 3上运行, 而不能在Xcode 4上运行.)

iPhone SDK 3.0

iPhone SDK 3.0在链接过程中会出现一个由包含了FPC的Xcode模板引发的错误. 你可以通过在创建设置中的"其他链接器"中加入链接信息"-Wl,-no_order_inits"来回避这一错误. 这一修正已包含在了上文2.4.0rc1的链接中,但是你如果使用之前版本的模板,可能需要手动修改.

这个链接错误已经向苹果报告了(rdar://problem/7120987). 这一错误已经在Xcode4中修复.

Xcode 4, iOS SDK 5.0, Objective-Pascal

关于Xcode 4模板和在iOS上用Objective-Pascal编程,请参阅http://dl.dropbox.com/u/28343282/ObjP/index.html

苹果许可证限制

iPhone/iPod应用开发

FPC并不能回避苹果发布的对于iPhone/iPod Touch开发程序的要求.因此开发者必须注册一个苹果iPhone开发者项目账户(美元$99/年)来对真是硬件做FPC编译程序的开发(与常规的Xcode编译程序项目).

如果没有此许可,开发者只可以在模拟器上运行程序(也可能在已越狱的iPhone/iPod Touch上运行,但是这只限于自有设备).

关于苹果iPhone开发项目的更多信息,请参阅: http://developer.apple.com/iphone/program/

开发所需的Pascal单元

发布iPhone SDK衍生品是违反iPhone SDK协议的,这包括了Pascal语言对于框架头文件的翻译版本.因此,如何在发布包括了GUI的纯Pascal程序同时,又遵守苹果iPhone SDK协议是一项巨大的挑战.更多信息,请参阅ReadMe.rtf(包含在上文的.dmg镜像文件中).

开发中的技术局限

至今,我们还无从得知是否能够将应用复制到iPhone/iPod Touch上并执行而无须使用Xcode. 但毋庸置疑的是可以在任何IDE(Lazarus, Lightweight IDE等)上开发iPhone/iPod Touch,并在模拟器上运行.但是所有的应用必须在Xcode上传见以加载到iPhone/iPod Touch设备上并在设备上调试.

iPhone模拟器与iPhone的不同

iPhone模拟器让iPhone操作系统API能够被一般的Mac应用使用,从而模拟设备所能提供的环境.通过允许在Mac系统上运行应用,模拟器提供了一种无需设备的快速应用调试功能.但是,在模拟器上运行并不等同于在设备上运行.

模拟器使用的是低层的Mac系统版本的iPhone操作系统框架,而非设备所使用的版本.总体而言,模拟器是一个优秀的工具来进行初步的调试工作.但是必须谨记,因为模拟器不能模拟设备的功能,必须在真实设备上对于引用进行最终调试以及运行效果分析.这样做的主要原因在于在模拟器是运行的程序可以直接使用其他Mac系统的框架与功能,而这些框架与功能是iPhone/iPod Touch设备所没有的.

在iPhone/iPod Touch上编译和运行纯Pascal应用

纯命令行应用能够在iPhone/iPod Touch上运行,除非输出结果只在gdb控制台(如果通过Xcode进行运行和调试,按cmd-shift-r或选择Run->Console)或设备的控制台日志(如果在iPhone/iPod Touch上执行)上可见.对于图形用户界面应用,需要用到上文中提到的由于协议而不能发布的头文件翻译.当然,也可以使用自定义的C头文件Pascal翻译(最好是使用自动工具创建).

仅使用Xcode

  1. 由模板创建新的项目
  2. 从项目中移除除*Prefix.pch, Info.plist外的所有文件、框架和产品
  3. 添加新的Pascal原文件 (Project->Add to Project...)
  4. 双击在左上角的Xcode文件列表中的项目图标,进入Build标签,修改FPC_MAIN_FILE设置为所新添加的测试程序的文件名.
  5. 创建程序

使用编译指令和Xcode

如果你已经使用命令行编译程序(使用Darwin/ARM),将产生的二进制文件复制到Xcode项目中,并在Xcode中运行运行此程序,Xcode将会调用运行这一二进制文件而非原程序(这样仅仅是为了保证Xcode所使用的是最新的原程序,而无需Xcode对其再次连接).你可以使用项目的默认模板实现这一功能,而无需对项目进行进一步设置.

你可以在项目视图中打开Products文件夹找到Xcode的二进制文件,右键单击(或ctrl+单击).app文件,选择"Reveal in Finder". 二进制文件的目录即program.app/Contents/MacOS(将program.app替换为当前目录). 将MacOS文件夹中的全部文件替换为你所编译的二进制文件(可以使用命令行命令cp).

对Darwin/ARM程序进行编译的命令行命令(将本节中的"Developer"替换为SDK的安装目录):

对FPC 2.6.0:

ppcarm -Cparmv6 -Cfvfpv2 -FD/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin -XR/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk program.pas

对iPhone模拟器 (使用上文中说明的OS_TARGET)

ppc388 -Tiphonesim  -XR/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk program.pas

对FPC 2.6.0之前版本:

ppcarm -FD/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin -XR/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk program.pas

对iPhone模拟器

ppc388  -XR/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk program.pas

在iPhone模拟器上编译和运行纯Pascal应用

安装ARM交叉编译器

更多信息

参考信息