iPhone/iPad/iTouch配置Bash/C/C++/OC/Java/Theos/MySQL/Python开发环境! 让我告诉你iOS的魅力~

来源:互联网 发布:数据库程序设计考试 编辑:程序博客网 时间:2024/05/16 05:04
说明

这是小编原创的教程,里面用到的各种各样的工具都是大神之作,小编只是编写了简单地脚本跟大家分享,让大家上走弯路,希望大家多多支持~
这篇文章假设大家对Linux有一定的了解,会一些简单的命令,并且知道如何使用shell与gcc进行编程,如果大家不知道,可以参考网上相关教程或者相关书籍进行简单的学习。如果大家觉得本篇教程有不对或者可以改进的地方,欢迎给小编发邮件指出,小编感激不尽~
小编的姓名: Jack Jones
小编的邮箱: JackJonesAngel@icloud.com

这篇教程是对iOS设备安装各种编程语言开发环境,涉及到的编程语言有C/C++/OC/Bash/Java/Python,另外包含MySQL数据库的安装、配置与开发,配置好Theos之后可以直接在iOS设备上进行iOS SDK图形界面应用程序开发。另外C/C++/OC可以直接调用iOS从UNIX继承下来的绝大多数系统调用,比如read/write/fcntl/pipe/socket等。这篇教程带你进入iOS的真机开发世界,让你充分感受iOS系统的魅力~

本篇文章中提到的配置文件,下载地址为: http://download.csdn.net/download/jackjones86/8236581
需要用到的iOS SDK包比较大,没法上传到CSDN,所以大家来我的百度网盘下载吧:http://pan.baidu.com/s/1i3xKKlR

1. 安装Terminal
进入Cydia,搜索terminal,安装MobileTerminal



2. 修改root密码与mobile密码
第1步完成之后桌面上会出现Terminal,打开进入,会看见你手机的名称和:~ mobile$,mobile是用户名,iOS系统的默认用户叫做mobile,接下来我们要修改mobile用户的密码,防止被黑客攻击,同时也方便我们以后操作。输入命令passwd修改mobile密码,mobile的默认密码是alpine,所有iOS系统mobile用户的默认密码都是这个,所以首先输入alpine,然后再输入你自己的密码进行修改,这个密码你一定要牢记在心。


修改完成之后输入su切换到root用户,root的默认密码同样是alpine,再输入passwd修改root密码。

至此,root和mobile的密码已修改完毕~


3. 安装apt-get
用过Ubuntu或者Debian的Linux用户都知道,apt-get是用来在线下载软件的命令,iOS系统同样可以使用这个命令来下载软件。
进入Cydia,搜索apt,选择第一项APT 0.6 Transitional下载安装,这样的话apt-get所依赖的各种软件包会自动装上,如果没有的话请安装所有APT 0.打头的软件包和Apttude。这样的话,以后就可以在iOS设备上使用命令行来安装软件了。



4. 安装ios toolchain
ios toolchain是高人制作好的ios编译工具集,里面有ios开发所需要的clang(苹果系统专用的C/C++/OC编译器,用法与gcc几乎一样)、make、ld64等。进入cydia,搜索并安装ios toolchain有些童鞋在安装ios toolchain的时候下载出错,如果大家遇到这种情况请多试几次,或者使用手机流量下载,因为毕竟服务器在外国,速度会比较慢,有时候会不稳定。



5. 安装openssh
用过ssh的盆友应该知道,通过ssh可以实现远程登录,其实这个ssh就是用来进行控制的,远程可以,本地也可以。之后我们要安装一款ios系统上的ssh客户端软件,这个软件比terminal要人性化的多,因此以后完全可以使用这款软件代替terminal。
进入cydia,搜索并安装openssh,openssh需要依赖openssl,不过直接安装openssh的话openssl会一并安装。



6. 安装iPhone/Java
这是cydia的开发者Jay Freeman移植的iOS本地Java开发包,这是在iOS设备上开发java程序的核心软件。
进入Cydia,搜索并安装iPhone/Java。


安装完成之后只是具备了java虚拟机的执行工具,java编译器并不在其中,因此还需要下载jikes,这是一款由IBM开发的java编译器。iOS设备上不能使用javac编译器来编译java源程序,但是这款jikes完全可以取代javac。
进入cydia,搜索并安装jikes。



7. 安装Python
进入Cydia,搜索vi,选择并安装python。



8. 安装vim
linux用户一定不会对vi默认,vim是vi的升级版,这个工具也是我们今后在iOS设备上做开发的主要编辑器。
进入Cydia,搜索vi,选择并安装vi improved。



9. 安装ifconfig
接下来我们要用电脑通过ssh登陆到iOS设备,所以需要获取iOS设备的ip地址。首先保证iOS设备和电脑在同一个网段,简单地说就是连接了同一台路由器,或者用热点的方式连接也行。查询iOS设备的ip地址其实可以直接通过设置里面的Wi-Fi选项来查看,点击连接的路由器的后面的感叹号,就能看见ip地址。不过用ifconfig来查询才是我们程序员应该具备的能力(╯▽╰)。
进入terminal,输入su切换到root,然后输入apt-get install ifconfig进行安装


安装完成之后输入ifconfig,在en0的下面有个inet,后面的ip地址就是我们需要的ip地址。



10. 复制配置文件
小编已经为大家写好了我们需要用到的配置文件,他们分别是/etc/profile,mobile和root家目录的.bash_profile、.bashrc、.bash_logout、.vimrc、.myoldpwd,对linux接触稍微深入一点的童鞋应该认识上面提到的某些配置文件。
(1)打开电脑上的iTools(也可以是PP助手等其他iOS助手),进入/etc,复制小编提供的etc文件夹下的profile至iOS设备的/etc,覆盖之前的profile。






(2)再进入/var/root,复制小编提供的root文件夹下的所有文件至该目录,同样选择覆盖。
/var/root是iOS系统root用户的家目录,苹果公司对iOS做了修改,因此跟传统的UNIX/Linux会有一些不一样。






(3) 进入/private/var/mobile,复制小编提供的mobile文件夹下的所有文件至该目录,同样选择覆盖
/private/var/mobile是iOS系统中mobile用户的家目录。另外小编这里要多啰嗦几句,iOS默认会有2个分区,一个用来存放iOS操作系统,这个分区被称作系统分区,大概有1G左右;还有一个分区叫做用户分区,大小就是iOS设备剩余的空间了,我们安装的所有第三方软件都会安装到这个分区,而且/private/var/mobile是这个用户分区的入口点(挂载点),所以以后我们玩开发尽量在这个目录或者这个目录的子目录里面弄,不要在系统分区下面做,系统分区的容量是很有限的。







11. 修改ssh配置
虽然现在我们可以用电脑登陆iOS设备了,但是还不能在iOS设备上用prompt或者iSSH登陆自身,因为苹果公司封锁了本机回路地址127.0.0.1的22端口,导致无法通过ssh登陆自身。所以我们要通过电脑登陆iOS设备,修改ssh的配置,使prompt可以在iOS本机登陆。修改的方法很多,完全可以使用iTools或者PP助手等工具进行修改,但是那样比较麻烦,需要先复制到电脑,修改完了再替换,我们可以直接修改源文件。
使用putty(一款windows平台的ssh客户端)登陆到iOS设备,在putty的ip地址栏中输入iOS设备的ip地址,然后点击open就可以连接,第一次连接会弹出一个提示框,点击确定就好,然后如输入用户名和密码,这里我们使用root登陆。




登陆成功之后,开始修改ssh配置,输入命令vi /etc/services,再输入/ssh回车,这样就能快速定位到ssh处,然后注释ssh的两行,再在下面添加两行,分别写上ssh2 51022/udp和ssh2 51022/tcp,这里的ssh是ssh新的服务名,51022是新的端口号,也可以不是51022,但是最好大于1024,避免跟常用端口冲突。小编第一次百度教程解决这个问题的时候,教程上用的就是51022,所以小编已经习惯这个端口了。




改完了之后保存退出,再输入命令vi /Library/LaunchDaemons/com.openssh.sshd.plist,输入/SockServiceName回车进行定位,将ssh改为ssh2,这是openssh启动时读取的配置文件,这样openssh就能使用ssh2作为服务名。




全部修改完成之后输入命令reboot对手机进行重启,这样ssh的配置才可以生效



12. 安装与配置theos
大家可能不知道theos是用来干嘛的,这个东西可就厉害啦~它是大神写好的脚本程序,使用它可以快速创建iOS软件项目、快速编译、打包和安装,是在iOS设备本机进行图形界面程序开发的核心组件。
进入cydia,选择第二项软件源,点击编辑,点击添加,输入地址http://coolstar.org/publicrepo,再点击添加源


再添加一个源,地址是http://nix.howett.net/theos


添加完成之后,搜索perl与theos,分别进行安装




安装完成之后,使用再次使用putty登陆iOS设备,这里要注意一下,因为重启的缘故,iOS设备的ip地址可能会改变,所以登陆之前再查看一下ip地址。登陆成功之后,输入命令cd /private/var,进入该目录,然后输入名利cp -r theos mobile,这样做其实是把theos目录复制到mobile目录下,因为之后我们要在theos里面放ios的sdk包,比较大,所以最好将theos从系统分区复制到用户分区,不然系统分区的空间可能不够。


接下来我们要复制ios sdk包到ios设备上,打开iTools,进入目录/private/var/mobile/theos,在这个目录下新建一个文件夹sdks,然后打开sdks文件夹,复制小编提供给大家的iPhoneOS6.1.sdk.tar.bz2至该目录。这个sdk包是小编压缩之后的sdk包,待会儿我们要进行解压,之所以不提供解压之后的sdk包给大家,是因为大多数用户使用的是windows操作系统,windows不支持iOS系统的符号链接(与UNIX/Linux中的符号链接一致),所以提供给大家可能会出问题。









13. 安装prompt
进入任何软件助手,比如PP助手、iTools甚至是Apple Store,搜索prompt并安装,目前prompt除了第2版,名字叫做prompt2,大家可以优先下载这个版本,但是这个版本在我的ipad mini2 ios7.1系统上没法运行,所以大家如果也不能用的话可以再换回第1版。另外还有一款软件叫做iSSH,这款软件比prompt功能要丰富,使用这个也是可以的。



14. 使用Prompt登陆iOS自身
接下来的工作我们使用iOS设备自身来完成,考虑到手机输入比较麻烦的缘故,小编推荐大家购买一款蓝牙键盘,淘宝上70块钱就能入手,小编一直再用。打开Prompt,点击Quick Connect,SSH输入127.0.0.1,Port输入51022,Username输入root(mobile也可以),再输入密码,点击最下面的Save This Server,这样以后就不用再输了,再点击Connect登陆。



这是登陆之后的画面


如果觉得字太小,或者颜色不好看,可以在设置里面改。


15. 解压iOS SDK包
输入命令cd $THEOS进入theos家目录,在输入命令cd sdks进入sdk目录,输入命令tar -jxvf iPhoneOS6.1.sdk.tar.bz2,等待几分钟(视iOS设备性能而定,比如小编的iPhone 4S解压花了3分多钟,小编的iPad mini2解压只花了几十秒)。
解压完成之后输入命令rm -rf iPhoneOS6.1.sdk.tar.bz2,删除压缩包,因为我们已经不需要了。当然删除其实rm iPhoneOS6.1.sdk.tar.bz2就好,加上-rf参数已经成为小编的习惯了= =。






16.  测试 - 激动人心的时刻啊~
终于配好了,走到这一步的童鞋小编在这要恭喜你们喽,你们的iOS设备已经成为神机啦~\(≧▽≦)/~
接下来让我们写一写代码进行测试吧~
输入命令cdmobile(这是小编自己写的一个命令,可以快速进入/private/var/mobile文件夹,看看/etc/profile就知道实现起来多么简单了-.-),输入命令mkdir test,建立test文件夹,在进入test文件夹,cd test


(1) C测试
输入命令vi test1.c,然后输入下列代码:
#include <stdio.h>

int main()
{
     printf("I am Jack Jones!\n");
     return 0;
}


保存退出,输入命令gcc -o test1 test1.c回车,再输入命令./test1回车,发现程序成功执行,输出I am Jack Jones!,说明C语言程序已经可以编译运行了。


(2) C++测试
输入命令vi test2.cpp,输入下列代码:
#include <iostream>
using namespace std;

int main()
{
     cout << "I am Jack Jones!" << endl;
     return 0;
}


保存退出,输入命令g++ -o test2 test2.cpp回车,运行./test2,发现输出I am Jack Jones!,所以C++程序也没问题了。


(3) Java测试
输入命令vi Test.java,输入下列代码:
public class Test
{
     public void static main(String[] args)
     {
          System.out.println("I am Jack Jones!");
     }
}


保存退出,输入命令javac Test.java回车,再输入java Test运行,发现输出I am Jack Jones!,看来Java程序也是没有问题滴~
哎!?不是说javac没有吗,怎么可以用呢?哈哈~其实这是小编用alias制作的提示,看一看/etc/profile就知道了,javac其实指向了jikes,输入javac其实就是jikes,这样做大家可以认为javac真的存在,不要考虑javac、jikes什么的,按照以前的做就行了~
不过这里有个问题小编不得不提,因为移植的关系,java不能开发图形界面程序,这根iOS系统也有关系,不过其他功能都是可以用滴哦~


(4) OC测试
输入命令vi test3.m,输入下列代码:
#import <Foundation/Foundation.h>

int main()
{
     NSLog(@"I am Jack Jones!");
     return 0;
}

保存退出,输入命令apple-gcc -o test3 test3.m回车,输入./test3,发现输出I am Jack Jones!,OC编译也通过了~
这里小编提一句,apple-gcc这个命令其实是不存在的,这是小编用alias写的一个快捷方式而已,大家看一看我写的/etc/profile就知道了,其实它就是clang加了一些参数。


(5) nic测试
什么nic呢,这个可就厉害啦~之前跟大家提到过theos,是ios设备真机的集成开发环境,而这个nic是专门用来建立工程的一个脚本程序,使用它可以快速尽力一个工程。输入命令nic,选择1,输入工程的相关信息,小编在这里使用jackjones-test作为工程名,然后会发现目录下多了个工程名文件夹,这就是建立好的工程。cd jackjones-test进入这个文件夹,ls看一下,发现里面有好多文件,其中就有我们熟悉的.h、.m文件。


我们修改一下jackjonestestApplication.mm,在下图中红色框的位置,加入以下代码:
//add a view
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view.backgroundColor = [UIColor redColor];
[_window addSubview:view];


保存退出。上面的代码其实是把窗口背景改为白色,然后在窗口上坐标为(100,100)的位置加上一个大小为100x100的红色方块。

输入命令make,这样工程就能得到编译。


再输入命令make package,对工程编译的得到程序进行打包,可以直接输入make package而不事先输入make。


再输入make install可以将程序安装到系统中去,安装目录为/Application。


最后使用输入killall -HUP backboardd注销一下设备,发现桌面上多了一个jackjones-test,这就是我们用theos开发的iOS图形界面程序。
如果killall -HUP backboardd之后桌面上没有我们写的程序,那么重启一下设备。





(6) MySQL配置与测试
首先进入设置,有个MySQL选项卡,点进去之后选择Enable,这样就能启动MySQL,当然使用命令行来启动MySQL也可以。启动之后,在命令行里面输入mysql回车,就可以登录进去。

输入show databases,可以显示当前所有的数据库,为了便于后面的测试,我们先创建一个数据库。输入命令create database person;(注意最后有个分号),这样就创建了一个叫做person的数据库,在输入use person;(这个分号可有可无)选中person数据库,然后输入命令
create table info
(
id int primary key, 
name varchar(20) not null, 
prompt varchar(50) not null, 
sex char default 'F' check (sex in ('F', 'M')), 
age int not null check (age > 15), 
height int not null,
weight int not null
);
再回车,这样就建立了一个叫做info的表格。




然后我们插入两条记录,输入命令
insert into info values(1001, 'Jack Jones', 'I am Jack Jones', 'F', '19', 164, 55);
insert into info values(1002, 'Rose', 'Hello iOS~', 'M', '18', 160, 45);
再输入命令select * from info;
可以看见我们插入两条记录已经显示出来了,所以咱们的MySQL也可以用哦~






接下来我们要测试一下能不能使用C语言编程连接MySQL数据库。新建一个personByDB.c的C程序源文件,输入下面代码:
//Person//by Jack Jones//2013-11-12#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <unistd.h>#include <fcntl.h>#include <mysql.h>typedef struct{        int id;        char name[20];        char prompt[50];        char sex;        int age;        int height;        int weight;}Person;char password[20];//read all person from dbvoid initFromDB(Person **p, int *num){        MYSQL conn;        mysql_init(&conn);        printf("Please input password: ");        fgets(password, sizeof(password), stdin);        password[strlen(password)-1] = '\0';        if(mysql_real_connect(&conn, "localhost", "root", password,                                 "person", 0, NULL, 0))        {                if(!mysql_query(&conn, "select * from info"))                {                        MYSQL_RES *res = mysql_store_result(&conn);                        MYSQL_ROW row;                        *p = (Person *)malloc(sizeof(Person));                        while((row = mysql_fetch_row(res)) != NULL)                        {                                *p = (Person *)realloc(*p, (++(*num))*sizeof(Person));                                (*p)[*num-1].id = atoi(row[0]);                                strcpy((*p)[*num-1].name, row[1]);                                strcpy((*p)[*num-1].prompt, row[2]);                                (*p)[*num-1].sex = *row[3];                                (*p)[*num-1].age = atoi(row[4]);                                (*p)[*num-1].height = atoi(row[5]);                                (*p)[*num-1].weight = atoi(row[6]);                        }                        mysql_free_result(res);                        mysql_close(&conn);                }                else                {                        printf("Read error!\n");                        printf("Error %s\n", mysql_error(&conn));                        mysql_close(&conn);                        exit(-1);                }        }        else        {                printf("Connection failed!\n");                printf("Error: %s\n", mysql_error(&conn));                exit(-1);        }}//output all person infovoid displayAllInfo(Person *p, int num){        int i;        for(i = 0; i < num; i++)        {                printf("___________________________\n");                printf(" Person %d:\n", i+1);                printf("    ID: %d\n", p[i].id);                printf("  Name: %s\n", p[i].name);                printf("Prompt: %s\n", p[i].prompt);                printf("   Sex: %c\n", p[i].sex);                printf("   Age: %d\n", p[i].age);                printf("Height: %d\n", p[i].height);                printf("Weight: %d\n", p[i].weight);        }}int main(){        Person *p = NULL;        int num = 0;        initFromDB(&p, &num);        displayAllInfo(p, num);        return 0;}
然后输入命令gcc -o personByDB personByDB.c $MYSQL回车,编译成功之后可以得到二进制文件personByDB,./personByDB进行执行,可以看见我们输入的两个记录被打印了出来,所以C语言连接MySQL数据库也没有问题。这里要注意一下,这里的$MYSQL其实是取小编在/etc/profile里定义的MYSQL变量的内容,看一看小编写的/etc/profile就知道了,小编这么做是为了方便大家使用(^_^)。




mysql默认密码是没有的,所以为了安全,我们先修改一下mysql的root用户的密码。注意要区分一下,对于mysql来说也有一个root用户,这个root用户与系统的root用户不是一个概念。输入命令mysqladmin -u root password "jackjones",这样mysql的root用户的密码就被改为了jackjones,读者可以设置自己的密码。


如果再修改密码,则需要加上-p参数比如输入mysqladmin -u root -p password "jack"回车,然后输入之前的密码,这样密码就被修改为了jack。更详细的配置不是这个文章的重点,请参考MySQL教程。

修改密码之后,登陆需要加上-p参数,然后输入密码进行登陆。-u root其实不加也可以,mysql会自动以当前系统的账号名作为登录名。


(7) Bash测试
这个就不用多说了吧,我们登录到iOS设备其实就是在Bash环境下工作,所以Bash编程自然是没有问题的啦~
咱们来写个脚本程序,输入两个数,求这个两个数的和,好幼稚有木有- -
输入命令vi shtest.sh,然后输入以下代码:
#!/bin/bash

echo "Hello Bash!"
read -p "Please input a number: " num1
read -p "Please input another number: " num2
sum=$((num1+num2))
echo "$num1+$num2=$sum"


保存退出,然后输入命令chmod +x shtest.sh,给shtest.sh脚本加上可执行权限,再输入./shtest.sh回车,输入1回车,如数2回车,发现输出1+2=3,恭喜恭喜~以后可以用iOS设备鼓捣Bash编程啦~


(8) Python测试
小编虽然为iOS设备安装了Python开发环境,但是说实话,小编并没有接触过Python开发= =。但是小编知道这个脚本语言现在非常流行,在服务器管理领域,Python发挥着越来越重要的作用。废话不多说,我们来写一个最简单的python脚本测试一下吧。
输入vi pytest1.py,然后输入下面代码:
print "I am Jack Jones!"


保存退出,输入命令python pytest.py,发现输出"I am Jack Jones!",哈哈~Python也是可以的啦~


17. 总结
折腾到这里的童鞋,那么恭喜你啦~你的iOS设备已经超凡脱俗成为编程神机啦~
上面的环境大家可以根据需要进行配置,比如如果只需要Bash,那么C/C++/Java等等都可以不进行配置。另外,如果你对Shell比较感兴趣的话,建立多看一看小编为大家编写的profile还有其他配置文件,其实写起来很简单,但是用起来却变得方便的多。小编还为大家写了一个超级简单的savepwd命令,可以保存当前的目录到~/.myoldpwd,然后每次登陆的时候会打开~/.myoldpwd保存的目录。因为prompt这个软件锁屏几分钟就会断开ssh连接,所以小编经常需要cd~cd~cd...到工作目录,有了这个savepwd,还真是节约了不少时间呢~
iOS设备还可以配置更多的开发环境,比如Perl等,小编对这些语言没有接触,也没有自己配置过,所以在这里就不倒蹬了,感兴趣的童鞋可以自己找一找相关的资料进行配置。



0 0