ile/LinguisticData/ /System/Library/
安装iOS SDK
虽然现在iOS已经升级到了iOS12.x,但因为社区工具链的限制,经过多次试验,感觉还是iOS 8.1的SDK最好用。我从老版本的Xcode中导出了一套,放在这里:https://pan.baidu.com/s/1fsDs8Al1DnPUwLBGCEO_3Q,下载密码:y23e。下载完成后,可以使用scp把sdk拷贝到iOS设备上,比如:
scp ios.tar.bz2 root@192.168.1.101:~/
随后在iOS的ssh命令行执行:
mkdir -p /var/stash/Developer/SDKs/
cd /var/stash/Developer/SDKs/
tar xjvf ~/ios.tar.bz2
此时iOS已经具备了最基本的开发能力了,我们写一个最简单的hello world来测试一下。
首先使用vim编辑一个程序文件,比如test.c:
cd ~
vim test.c
内容为:
#include<stdio.h>
int main(int argc, char **argv){
printf("hello ios!\n");
}
编译程序:
clang -o test test.c -I /var/stash/Developer/SDKs/iPhoneOS8.1.sdk/usr/include/ -L /var/stash/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/ -L /var/stash/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/system/
因为SDK所在路径的原因,编译命令比较长,正式使用的时候可以写入到编译脚本或者Makefile。
这时候直接运行输出的结果会报错:
./test
Killed: 9
这同样是因为签名机制的原因,需要为我们编译的程序签名后再执行,就一切正常了:
ldid -S test
./test
hello ios!
安装iOS的ssh终端
现在已经可以在iOS设备上进行开发了,但事情还没有完。我们刚才所有的操作,都是在电脑的键盘、屏幕的配合下完成的所有操作,这远远算不上"自开发"。
可以使用的方法之一是在iOS中安装ssh终端程序,从而在iOS设备上直接操作自己的命令行。终端程序推荐一个免费又好用的Termius,请自行在AppStore搜索下载。
但在设置的时候你会发现,Termius根本无法连接上自己。原因是自iOS8之后,系统已经禁止App直接连接设备的1024号以下的端口了。
我们可以设置openssh的sshd服务增加一个监听端口,操作方法如下:
- 新建一个自启动服务文件:
vim /Library/LaunchDaemons/com.openssh.sshd2.plist
内容为:
```xml
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<dict>
<key>Label</key>
<string>com.openssh.sshd2</string>
<key>Program</key>
<string>/usr/libexec/sshd-keygen-wrapper</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/sshd</string>
<string>-i</string>
</array>
<key>SessionCreate</key>
<true/>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>ssh2</string>
</dict>
</dict>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
</dict>
</plist>
```
- 编辑/etc/services文件,在文件最后增加以下两行:
ssh2 10022/udp # SSH Remote Login Protocol
ssh2 10022/tcp # SSH Remote Login Protocol
重启后,再次激活越狱,可以在Termius中设置ssh连接到本机的10022端口了。
使用iOS的IDE
命令行工具对很多新手来讲使用起来难度还是不低的,我们还有另外一个选择。ios开发社区工程师lufinkey推出了一个集成的开发工具miniCode,能让程序员像操作电脑一样在ios开发简单的试验工程。miniCode的项目页面在:https://github.com/lufinkey/miniCode
如果你使用apt-get直接安装了iostoolchain,那简单了,直接一行代码就能安装上miniCode:
apt-get install com.brokenphysics.minicode
但如果在刚才的安装中,你不得不手工选择安装了32位的编译器,那这次还是要手工安装minicode,因为手工安装的32位编译器无法满足minicode的依赖包要求:
wget http://apt.thebigboss.org/repofiles/cydia/debs2.0/minicode_1.03.5.deb
dpkg -i --force-all minicode_1.03.5.deb
类似上面安装的iFile,minicode也是一个越狱环境运行的GUI程序,我们在命令行安装的GUI程序通常需要重启才能在iOS桌面看到,为了加快速度,我们可以只重启iOS的外壳SpringBoard:
su -c uicache mobile
killall SpringBoard
参考资料
miniCode brings Xcode to your iPhone and iPad