`
isiqi
  • 浏览: 16620348 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

iphone 3.1.2开发环境搭建——linux平台

阅读更多

一、引子
前段时间看到了apple公司发布了iphone os4.0的预览视频,iphone终于打算支持多任务了,尤其是对于预览视频中的skype软件的展示让人印象深刻。
一般来说,想做一名正规的iphone应用开发者应当至少准备三件事情:
(1)一台apple的电脑
可以是mac book或者mac mini,国内比较“节俭”的公司大都选择mac mini(现价大概5k左右),然后配个便宜的显示器;而对于mac book最便宜的也要上万,在此按下不表。没办法,iphone的集成开发环境只能够在apple的电脑上运行。
(2)一台iphone
最好是iphone 3gs,(现价大概4.5k左右);当然iphone 3g也可以,不过从开发者的角度来看,最好性能能强一些(不保证每一位开发者一开始接触iphone开发就能写出高效率的代码)。
(3)一个开发者授权
到苹果开发者网站上面注册一个开发者ID,然后为这个ID申请开发者授权(需要每年交纳99美金,注意,单位是美金,需要考虑汇率问题,呵呵)。
有了这些以后就是下载iphone的sdk,用xcode开发应用,真机测试,然后送到app store里面发布,最后就是每天看看帐户。虽然网上一直有谣传说iphone的用户“人傻、钱多”,随便做点啥都能赚钱,但经过偶的观察,iphone的用户是强调创意、时尚和个性的,对于操作流畅性非常挑剔(这主要是由于apple“宠坏”了这些用户)。所以在app store里面绝对不可能“随便”做点东西就能赚到钱的,“随便”做点东西的结果就是让apple公司“随便”地赚到了那可怜的99美金(当然,还包括卖给开发者的mac电脑和iphone的收入),而到头来开发者还是两手空空。
当然,上面这些是对于想通过app store赚到钱的开发者来说的。偶个人对apple向开发者收钱的这个事情一直比较反感(同样,对于symbian sign要花170欧元的行为,在此也一并声讨一下)。所以,偶在做一些研究和实验的时候,一般都是从最省钱的角度出发。于是偶决定在办公电脑上搭建一套简单的开发环境(一直以来,偶的办公电脑上只有linux),闲暇时候可以玩玩home brew。(还是印证了那句名言:少壮不努力,老大做it)。
二、准备工作
1、基本原理
iphone 2g/3g的cpu都是采用三星的S3C6400,而3gs的cpu是采用S5PC100总体上来讲都是arm体系结构。从原理上来说,给iphone开发应该与其他的嵌入式设备开发没有什么区别,把代码用支持arm指令集的编译程序编译一下,生成在arm系统下可以运行的文件即可(例如,在pc上面生成arm平台可以运行的文件,这也就是所谓的“交叉编译”了)。下面,偶就要在linux平台下面建立这样一套交叉编译的环境了,跟着偶一步一步的来,应该可以顺利完成环境搭建(看个人的造化了,哈哈)。
2、开始前要想好的事情
缺点:
(1)linux下面的sdk开发出来的软件只能够用于被jailbreak(俗称越狱)过的iphone手机。
(2)不支持iphone模拟器,不支持单步调试,不支持真机调试,没有ide集成开发环境。
(3)目前最高版本只能支持到iphone sdk 3.1.2(估计3.2未来也不会出了,都在等4.0呢)。
(4)环境配置过程繁琐耗时,即使按照本文也有可能失败(“即使自宫,未必成功?!”,哈哈)。
(5)运行此sdk开发出来的应用,存在让iphone变砖的可能(其实只要jailbreak,就会有变砖的可能)。
优点:
(1)不用交99美金购买开发者权限。
(2)不用购买apple的电脑。
(3)。。。可以用来消磨时间(不知道这算不算是优点)。
如果面对上述这么多缺点,仍然执意要安装的话,请跟随偶继续往下做:
3、开始前的准备工作
偶的电脑是:thinkpad sl400。
系统是:slackware 13.0
内核版本:Linux wayne 2.6.29.6-smp-wayne #1 SMP Thu Mar 18 20:00:29 HKT 2010 i686 Intel(R) Core(TM)2 Duo CPU T5870 @ 2.00GHz GenuineIntel GNU/Linux
gcc版本信息:
Reading specs from /usr/lib/gcc/i486-slackware-linux/4.3.3/specs
Target: i486-slackware-linux
Configured with: ../gcc-4.3.3/configure --prefix=/usr --libdir=/usr/lib --enable-shared --enable-bootstrap --enable-languages=ada,c,c++,fortran,java,objc --enable-threads=posix --enable-checking=release --with-system-zlib --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --with-gnu-ld --verbose --with-arch=i486 --target=i486-slackware-linux --build=i486-slackware-linux --host=i486-slackware-linux
Thread model: posix
gcc version 4.3.3 (GCC)
测试手机是jailbreak过的iphone 3gs,系统为iphone os 3.1.2
理论上来说,按照下面的方式开发出来的程序在iphone 3g平台上也能够运行。
(1)下载iphone的sdk
此sdk必须是3.1.2的官方sdk,下载地址如下:
http://ipsw.info/iphone_sdk_3.1.2_with_xcode_3.2.1__snow_leopard__10m2003.dmg
预先说明,这东西可是非常大,2.5G,要下载一整天呢!(想到可以免费用。。。偶忍了。。。)
(2)下载iphone 3g的firmware(固件)
注意,一定是iphone 3g的,3gs的firmware是不可以的。
(好在开发出来的软件在3g和3gs上面都可以跑!apple的向下兼容做得不错)
下载地址如下:
http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7265.20091008.Xsd32/iPhone1,2_3.1.2_7D11_Restore.ipsw
(3)通过svn下载工具链脚本
cd ~
mkdir -p iphone_dev/toolchain
cd iphone_dev/toolchain
svn checkout http://iphonedevonlinux.googlecode.com/svn/trunk/ ./
这个脚本工程很小,如果网络没问题的话,应该很快就会下载好。
(4)下载darwin-tools.list里面的所有文件
这个文件是在iphone_dev/toolchain目录下可以找到,这个文件里面有一个长长的文件列表。
可以用kget或者wget把这些文件都下载好。
(5)xar工具下载和安装
http://xar.googlecode.com/files/xar-1.5.2.tar.gz
这个工具是用来解包dmg文件的,slackware上面默认是没有这个工具的,直接通过源代码安装即可。
上面这几个步骤可以说是整个linux环境下iphone应用编译环境最为耗时的准备工作了。
三、让我们开始吧(按照老外的说法就是——get our hands dirty)
以下操作,为了方便起见,直接输入命令了。
(1)进入安装脚本目录
cd ~/iphone_dev/toolchain
(2)创建files目录和子目录
mkdir -p files/{firmware,darwin_sources}
(3)把iphone 3g的固件拷贝到files/firmware目录下
cp ~/downloads/iPhone1,2_3.1.2_7D11_Restore.ipsw ./files/firmware/
(4)把iphone sdk拷贝到files目录下
cp ~/downloads/iphone_sdk_3.1.2_with_xcode_3.2.1__snow_leopard__10m2003.dmg ./files/
(5)把前面下载的darwin-tools.list中的所有文件拷贝到darwin_sources目录
cp ~/downloads/*.tar.gz ./files/darwin_sources/
(6)开始修改toolchain.sh脚本
原本不需要修改这个脚本的,但是由于一些网络和谐的问题,导致国外的一个提供解码串的wiki无法访问,因此只好用这种土一点的办法来解决了。
用喜爱的编辑器打开toolchain.sh文件,找到下面这一行:
if [ -z "$DECRYPTION_KEY_SYSTEM" ] ; then
echo "We need the decryption key for `basename $FW_RESTORE_SYSTEMDISK`."
echo "I'm going to try to fetch it from $IPHONEWIKI_KEY_URL...."
然后在上面的if [....] ; then这一行语句的上面(再次强调,是上面!)添加如下的一行: DECRYPTION_KEY_SYSTEM="a8a886d56011d2d98b190d0a498f6fcac719467047639cd601fd53a4a1d93c24e1b2ddc6"
修改完毕后,保存并退出。
(7)开始解包头文件
./toolchain.sh headers
(8)开始解包firmware文件
./toolchain.sh firmware
(9)开始解包drawin_sources
./toolchain.sh darwin_sources
这个过程会比较漫长,要有耐心。
(10)最后一步编译,这一步事关成败
./toolchain.sh build
(11)错误处理
ld: library not found for -lc
collect2: ld returned 1 exit status
make[3]: *** [libgcc_s.dylib] error 1
....
make[2]: *** [stmp-multilib] error 2
rm gcov.pod fsf-funding.pod gfdl.pod gpl.pod cpp.pod gcc.pod
....
make[1]: *** [all-gcc] error 2
make[1]:leaving dir `/home/xxx/toolchain/toolchain/bld/gcc-4.2-iphone'
make: *** [all] error 2
则可以执行如下命令:
cp ./sdks/iPhoneOS3.1.2.sdk/usr/lib/libSystem.B.dylib ./toolchain/bld/gcc-4.2-iphone/gcc/libc.dylib
然后,再次运行如下命令:
./toolchain.sh build
如果看到如下提示,就代表环境搭建成功了。
It seems like the toolchain built!
ps:
这里提一句,关于上面的拷贝libc.dylib的命令,其实可以在运行./toolchain.sh build命令以后,稍微等一小会儿,等到它开始编译的时候,直接打开一个新的terminal窗口,然后进入toolchain目录,然后执行这个拷贝的命令,这样以来,就可以一次性编译成功了。
(12)设定环境变量
关于这个,偶只把自己的配置贴出来,各位可以根据自己的配置进行修改和调整:
export PATH=/home/wayne/iphone_dev/toolchain/toolchain/pre/bin:$PATH
可以把这个设置保存在.bashrc或者/etc/profile里面,这些偶就不聒噪了。
四、测试编译环境
1、编译程序
这个过程很简单,只要进入~/iphone_dev/toolchain/apps目录下即可看到两个用于测试的工程:
HelloToolchain和HelloWorldFirst。这个HelloWorldFirst是一个命令行的软件,在iphone上面即使可以运行了,也是在终端输入一个HelloWorldFirst以后输出一个hello world;而那个HelloToolchain是支持gui界面的,是一个textview,因此,比较有说服力一些。
在这两个目录下面默认的都有一个Makefile文件,这个文件应该是缺少一些路径的定义,怕麻烦的朋友可以直接使用偶的Makefile(参见本文的附件),这是偶手工改过的并且也在真机上运行过的。用偶的Makefile替换掉原来那两个项目的Makefile,然后执行make即可。
如果这个过程中没有显示什么错误,那么恭喜你,你的linux平台的sdk已经搭建成功了。
2、真机上运行程序
好了,接下来就是更加有挑战性的工作了——在真正的iphone上面运行程序。但是在这之前还是要确认一下手机没有问题。偶使用的是jailbreak过的iphone 3gs,利用blackrain越狱,利用cydia+wifi安装的openssh,apt和ldid(这部分偶就懒得写了,iphone越狱的方法,几乎“满大街”都是)。
需要提一点的是关于ldid,这个工具是在iphone平台上对二进制文件进行签名的,网上很多人反应在iphone 3gs下面,这个工具不好使了,但是经过偶的真机测试,这个工具完全没有问题。
偶就把如何正确地安装这个工具来简单地提一下:
(1)通过cydia安装一个叫做terminal的程序,它是一个虚拟的命令行终端。
(2)把iphone联上wifi,然后启动这个terminal。
(3)运行su,输入密码(如果从没输入过密码,默认的密码就是“alpine”,建议大家都给改掉,安全一些),得到root权限
(4)运行如下命令:apt-get install ldid
(5)当命令行界面上提示已经安装成功后才能代表安装成功了。
好,开始把HelloToolchain拷贝到手机的/Applications目录下了。
(1)首先查看iphone连接wifi的ip地址(这个如果不会的话,可以直接跳过偶的文章。)
(2)在linux下面运行如下命令:
cd ~/iphone_dev/toolchain/apps/HelloToolchain
make clean ; make
scp -rp ./HelloToolchain.app root@192.168.0.2:/Applications/
如果看到下面的输出(别忘记输入密码!):
RSA key fingerprint is 33:bc:25:5a:a6:3c:21:72:5d:84:22:d4:4b:62:43:25.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.2' (RSA) to the list of known hosts.
root@192.168.0.2's password:
icon.png 100% 1073 1.1KB/s 00:00
Info.plist 100% 746 0.7KB/s 00:00
HelloToolchain_ 100% 13KB 13.2KB/s 00:00
HelloToolchain 100% 61 0.1KB/s 00:00
代表文件上传成功。
(3)登录到iphone里面,为刚刚的程序签名
ssh root@192.168.0.2(输入root密码)
cd /Applications
cd /HelloToolchain
ldid -S HelloToolchain_ (注意,这里是HelloToolchain_,下划线一定要有!)
好了,如此一来,就都准备好了!
很多人纳闷,怎么在iphone的桌面上看不到程序的图标呢?!
别着急,运行一下如下命令即可:
killall SpringBoard
这个命令是强行把iphone的桌面程序杀掉,然后iphone会自动重新把这个桌面打开,这个时候就可以看到测试程序的图标了。
网上有句俗话“有图有相”,偶就照两张图片上来秀一秀:

这是测试手机iphone 3gs的版本。

恩,界面上很漂亮,各位可以看到有“红,蓝,绿”三种颜色的问号图标(这是偶手工改的图标,原本的图标是白色的三个问号)。

这个就是程序运行起来的样子,就是一个简单的text view。

分享到:
评论

相关推荐

    在本机搭建hadoop3.1.2开发环境详解

    ### 在本机搭建Hadoop 3.1.2开发环境详解 #### 一、环境准备与虚拟机搭建 ##### **1.1 虚拟机软件安装** 在本教程中,我们将使用VMware Workstation来搭建Linux CentOS 7虚拟机环境。首先确保你已经在物理机器上...

    3.1.2_种子植物——小学生学习课件

    3.1.2_种子植物——小学生学习课件

    ThinkPHP3.1.2完全开发手册CHM

    ThinkPHP3.1.2完全开发手册CHMThinkPHP3.1.2完全开发手册CHM

    ffmpeg-3.1.2-1.2-linux-x86_64.jar

    在这个特定的场景中,我们关注的是 "ffmpeg-3.1.2-1.2-linux-x86_64.jar" 文件,这是一个适用于 Linux 64 位系统的 FFmpeg 包,以 Java Archive (JAR) 文件格式提供,可能被设计为在服务器环境中运行。 FFmpeg 的...

    python-3.1.2运行环境

    7. **开发环境**:Python 3.1.2虽然没有内置集成开发环境(IDE),但可以配合IDLE(Python自带的基本IDE)或其他第三方IDE如PyCharm、VS Code等进行开发。这些IDE提供了代码编辑、调试、自动完成等功能,提升开发...

    ThinkPhP3.1.2完全开发手册

    《ThinkPHP3.1.2完全开发手册》是针对PHP开发者的一款重要参考资料,特别是对于那些使用ThinkPHP框架进行Web应用开发的程序员来说,这是一份不可或缺的指南。这份手册详尽地介绍了ThinkPHP 3.1.2版本的各类功能和...

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    ffmpeg-3.1.2-1.2-linux-x86.jar

    ffmpeg-3.1.2-1.2-linux-x86.jar是javaCV在linux32位平台的依赖包

    搭建基于Linux平台的稳定、高效、安全的服务器的详细实施指南

    搭建基于Linux平台的稳定、高效、安全的服务器的详细实施指南。 目录 1. 公司背景 2. 公司需求 2.1 DNS服务器 2.2 DHCP服务器 2.3 WWW服务器 2.4 FTP服务器 2.5 SAMBA服务器 3. 需求分析及解决 3.1 DNS...

    hive-jdbc-3.1.2-standalone

    hive-jdbc-3.1.2-standalone适用于linux

    win搭建iphone开发环境

    ### Win搭建iPhone开发环境知识点详解 #### 一、概述 在Windows环境下搭建iPhone开发环境是一项技术挑战,因为官方推荐的开发环境是在Mac OS X上进行的。然而,通过使用虚拟化技术,例如VMware Workstation,可以在...

    在Windows中安装iPhone开发环境

    在Windows系统中搭建iPhone开发环境是一项复杂但有条理的过程,主要是为了在Windows环境下使用iPhone SDK来编写和测试iOS应用程序。以下将详细说明如何在Windows上安装和配置这个环境: 首先,你需要确保你的硬件...

    python3.1.2 linux下

    python3.1.2 linux下,还有window版本的

    Windows中安装iPhone开发环境

    为了降低这一门槛,一些技术爱好者尝试在非苹果电脑上安装Mac OS X及iPhone开发环境,从而实现跨平台开发。 #### 二、准备工作 在开始安装之前,我们需要准备以下几项内容: 1. **硬件要求**: - 支持虚拟技术的...

Global site tag (gtag.js) - Google Analytics