为什么WindowsiOS操作很流畅,而LinuxAndroid却很卡顿呢?

为什么WindowsiOS操作很流畅,而LinuxAndroid却很卡顿呢?,第1张

Android(安卓)本质上是一个基于 Linux 内核上面运行的 java 虚拟机,实际上就是一个解释程序。它相当于一个应用程序,应用程序要运行需要一个平台,这个平台是Linux内核,它俩的关系就是一种依赖关系。

在Linux系统中进行开发,和在Windows中进行开发相比较起来,即有优点,也有缺点。 1、由Linux系统的本质决定的: Linux的本质有三点,一是开源,二是免费,三是和Unix是一个体系。大家都知道,重要的应用几乎都是运行在Unix服务器上面的,这是因为Unix天生就是为服务器设计的操作系统,他的安全、高效是不用质疑的,后来为了向桌面发展,出现了X Windows,当然,我们可以选择在启动系统的时候不启动X Windows,抛去图形界面的包袱,系统当然可以跑得更快。而Windows操作系统天生是为桌面设计的,后来为了向服务器发展,出现了NT系列。当然,现在NT系列的服务器已经很成熟了,足以和Unix服务器竞争了。但是,它不是免费的,不仅不免费,而且卖得很贵。所以,选择Unix/Linux作为服务器操作系统,是可以为企业节约很多成本的。 本来,Java一设计出来就是可以跨系统运行的,我们完全可以在Windows系统下面进行开发,然后让程序运行在Linux系统下。但是,毕竟他们还是有少量的差别,比如文件路径。所以,我们在Linux系统下构建我们的系统,可以保证最大的兼容性。 2、有程序员的性格决定的: 程序员有一个性格,那就是喜欢不断接触新的东西,我们称之为黑客文化,或者说是玩家文化。在Linux系统中,你可以毫不费力的得到很多好东西,包括好的软件、好的代码、好的思想、好的经验。如果你喜欢系统编程,Linux自带gcc;如果你喜欢动态语言,Linux自带Python、Perl、Ruby;如果你要创建网络应用,Linux自带httpd、Sendmail等一系列网络软件;如果你要管理项目,Linux自带CVS、Subversion、AutoMake总而言之,只要你感兴趣,Linux让你这一辈子都不会感到枯燥。

android是google大神推出的新操作系统

arm是一种精简指令集的cpu,对立于传统的复杂指令集cpu,如X86架构的

linux也是一种操作系统,嵌入式与服务器上占据绝对优势,与windows二分天下

关系就是 android和linux都可以在arm上运行

一、安装jdk,具体步骤如下:

1,将jdk-7u4-linux-i586tar拷贝到linux下得/home/yan/download目录,新建一个目录/home/yan/android所以和android相关的都安装到/home/yan/android这个目录,所有的源安装文件都放到download下。切换到root,在download目录下输入命令:tar -zxvf jdk-7u4-linux-i586tar -C /android, 将其解压到android目录。

2,配置环境变量,Linux下需要修改/etc/profile文件,使用 gedit /etc/profile

在这个文件的最后,输入:

export JAVA_HOME=/home/yan/android/jdk170_04

export PATH=$PATH:$JAVA_HOME/bin

点击保存后,输入:source /etc/profile使生效。输入:java -version

验证java环境是否配置好。

二、安装AndroidSDK

1,将android-sdk_r18-linux复制到download文件夹下,进入download然后: tar -zxvf android-sdk_r18-linuxtgz -C 。。/android/ 进行解压。

接下来 cd /home/yan/android/android-sdk-linux/tools, 然后运行:。/android,这个是用来启动android sdk manager的,也就是说这个东西是用来下载真正的android开发包。运行的时候,会出现:

(java:2925): Gtk-WARNING : 无法在模块路径中找到主题引擎:“pixmap”,

(java:2925): Gtk-WARNING : 无法在模块路径中找到主题引擎:“pixmap”,

(java:2925): Gtk-WARNING : 无法在模块路径中找到主题引擎:“pixmap”,

(java:2925): Gtk-WARNING : 无法在模块路径中找到主题引擎:“pixmap”,

这种警告,这是gtk版本太低所导致的。

先关闭android sdk manager,终端输入:sudo apt-get install gtk2-engines-pixbuf 升级一下gtk。

2,升级完毕后,再次打开android sdk manager,这个是在线安装,一定确保联网。里面的api8 对应android22版本,api13对应android32版本,api10对应android233版本。这几个都是经典的android版本。最上面的事api15对应android403版本,这个是最新的。默认已经给我们选择了。这里我们选择前四个。最上面的四个打勾,然后确定。就会自动下载了。下载完成后,会提示重启这个android sdk manager

三、安装eclipse

1,将eclipse-jee-indigo-SR2-linux-gtktar复制到download,然后解压到android下。不再重复。

解压命令:tar -zxvf eclipse-jee-indigo-SR2-linux-gtktargz -C 。。/android/

2,进到android/eclipse目录下,输入命令。/eclipse查看 装成功了没有。

四、安装ADT 和 (NDK)

1,在google里的android sdk下载地址里,找到ADT-1800,这个是和android sdk403相对应的版本,是个zip文件。拷贝到download文件夹下。

2,打开eclipse,点help--install new software,点add--archive,这里用的是离线安装的方法,也可以在线安装。离线安装会比较快吧。点select all,然后点next就进行安装了。点好后,会出现一个Installing software的提示框,显示进度。安装完成后,会提示重启。

注:adt是android develop tool的意思,实现沟通 eclipse和 android sdk的桥梁,所以必须得安装好。

3,设置android sdk location,即告诉eclipse android的sdk在什么地方。重启后,会提示:Welcome to android development,选第二个;use eixsting SDKs,设置路径。

原来adt1800这个版本过时了,这是2012年4月份时的版本,需要安装最新的7月发布的那个。

在workwith里输入:https://dl-sslgooglecom/android/eclipse/,他会自动检测,列出的有DevelopTools,里面有ddms、adt等共四个,另外一个是NDK-plugins 反正要用到,索性一块安了。NDK是本地化的一个工具,说白了是一个交叉编译器,编译本地的c/c++代码成一个动态链接库,供android下得java程序调用。当然程序要满足JNI接口。

提示不能安装ndk,ndk安装前 需要安装cdt插件!这个步骤里只能升级下 adt了。从adt1800 升级到2000

重启,后打开eclipse,点window-preferrence,点android,制定android sdk文件夹路径。点new project看能否找到android application。。,如能,则这一步安装成功。

五、安装CDT插件

google 一下cdt,进入下载链接,下载cdt800版本,按照上面安装adt的方法 进行安装。安装成功的标志是,可以新建c/c++工程。

六、NDK插件的安装

google NDK的下载地址,下载后拷到download文件夹下,然后直接解压缩就可以了。export PATH=$PATH:/home/yan/android/android-ndk-r8,然后 source。

  一Raspberry Pi入门向导。

  可以在以下地址下载Raspberry向导

  2构建android framework

  命令如下:

  cd <your_android_path>

  source build/envsetupsh

  lunch

  显示lunch菜单如下:

  You’re building on Linux

  Lunch menu… pick a combo:

  1 full-eng

  2 full_x86-eng

  3 simulator

  4 full_rpi-eng

  5 cyanogen_generic-eng

  6 cyanogen_rpi-eng

  选择第6个菜单。

  然后进行编译

  make -j8

  等待编译成功,这可能需要几十分钟。

  编译成功之后将”system”目录复制到root目录下,接下来我们可能会用到。

  命令如下:

  cd <your_android_path>

  cp -r system out/target/product/rpi/root

  ps:编译时如果jdk版本不对,可将其改成jdk16

  五如何在Raspberry Pi上跑android linux内核?

  1准备一张存储空间2G以上的SD卡及相应读卡器。

  2下载arch linux镜像文件

  用wget工具下载镜像文件:

  wget http://filesvelocixcom/c1410/images/archlinuxarm/archlinux-hf-2012-09-18/archlinux-hf-2012-09-18zip

  解压:

  unzip archlinux-hf-2012-09-18zip

  成功之后,你会在当前目录下发现一个镜像文件。

  3烧linux镜像文件。

  sudo dd bs=4M if=archlinux-hf-2012-09-18img of=/dev/sdb

  sudo sync

  ps:/dev/sdb是SD卡在主机上的设备文件。不同的电脑可能不同。

  4用android linux内核代替这个内核。

  做完上述步骤之后,当你把SD卡插在电脑上,你会发现有两个分区:一个是引导区,另一个是文件系统区。

  用android linux内核代替引导区的kernelimg。

  cp -uv <your_android_linux_path>/arch/arm/boot/zImage <your_sdcard_boot_partition>/kernelimg

  5用android linux文件系统代替这个linux文件系统

  rm -rf <your_sdcard_file_system_partition>

  cp -r <your_android_source_code_path>/out/target/product/rpi/root/ <your_sdcard_file_system_partition>

  6配置内核命令行cmdlinetxt

  Edit the <your_sdcard_boot_partition>/cmdlingtxt, and replace “init=/…” with “init=/init”

  7做完这些之后就可以在Raspberry Pi上跑这个android linux内核。

  六如何为Android linux做一张可引导的SD卡

  1删除已有分区,如果没有就不用删了。

  Command(m for help):p

  Disk /dev/sdb: 157 GB, 15707668480 bytes

  64 heads, 32 sectors/track, 14980 cylinders, total 30668085 sectors

  Units = sectors of 1 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0×00000000

  sudo fdisk/dev/sdb

  Command(m for help):d

  Partition number(1-4):1

  Command(m for help):d

  Selected partition 2

  Command (m for help): p

  Disk /dev/sdb: 157 GB, 15707668480 bytes

  64 heads, 32 sectors/track, 14980 cylinders, total 30679040 sectors

  Units = sectors of 1 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0×00000000

  Device Boot      Start         End      Blocks   Id  System

  Command(m for help):w

  ps:确定删除之后,卸掉SD卡,然后再装上。

  以bytes问单位记下SD卡的大小。后面的步骤会用到。

  然后进入”Expert mode”。

  Command(m for help):x

  将这个SD卡设置为255个磁面,63个扇区和磁柱数量(不同的SD/mmc卡有着不同的此柱数量)

  Expert command (m for help): h

  Number of heads (1-256, default 64): 255

  Expert command (m for help): s

  Number of sectors (1-63, default 32): 63

  ps:在下一步开始前,先要计算磁柱数量,计算过程如下:

  B:SD卡以bytes为单位的大小(前面已经记住了即:15707668480)

  C:磁柱的数量

  C=B/255/63/512

  例如:我的SD卡大小是16G(15707668480)

  C=15707668480/255/63/512=190968191721,约等于1909

  Expert command (m for help): c

  Number of cylinders (1-1048576, default 14980): 1909

  Expert command (m for help): r

  2新建分区

  如果你的SD卡已经分区,请按照上述步骤删除分区。接下来,我们将创建两个分区,一个是引导区,用来存放内核镜像等文件;另一个文件系统区存放android linux文件系统。

  Command (m for help): n

  Partition type:

  p   primary (0 primary, 0 extended, 4 free)

  e   extended

  Select (default p): p

  Partition number (1-4, default 1):

  Using default value 1

  First sector (2048-30679039, default 2048):

  Using default value 2048

  Last sector, +sectors or +size{K,M,G} (2048-30679039, default 30679039): +128M

  Command (m for help): t

  Selected partition 1

  Hex code (type L to list codes): c

  Changed system type of partition 1 to c (W95 FAT32 (LBA))

  Command (m for help): a

  Partition number (1-4): 1

  Command (m for help): n

  Partition type:

  p   primary (1 primary, 0 extended, 3 free)

  e   extended

  Select (default p): p

  Partition number (1-4, default 2):

  Using default value 2

  First sector (264192-30679039, default 264192):

  Using default value 264192

  Last sector, +sectors or +size{K,M,G} (264192-30679039, default 30679039):

  Using default value 30679039

  Command (m for help): w

  The partition table has been altered!

  Calling ioctl() to re-read partition table

  WARNING: If you have created or modified any DOS 6x

  partitions, please see the fdisk manual page for additional

  information

  Syncing disks

  ok,分区成功,现在我们有两个分区,接下我们对分区进行格式化。

  3格式化分区

  对引导区进行格式化:

  sudo mkfsmsdos -F 32 /dev/sdb1 -n BOOT

  mkfsmsdos 3012 (29 Oct 2011)

  对文件系统区进行格式化:

  sudo mkfsext3 /dev/sdb2 -L ROOTFS

  mke2fs 142 (29-Nov-2011)

  Filesystem label=ROOTFS

  OS type: Linux

  Block size=4096 (log=2)

  Fragment size=4096 (log=2)

  Stride=0 blocks, Stripe width=0 blocks

  950976 inodes, 3801856 blocks

  190092 blocks (500%) reserved for the super user

  First data block=0

  Maximum filesystem blocks=3896508416

  117 block groups

  32768 blocks per group, 32768 fragments per group

  8128 inodes per group

  Superblock backups stored on blocks:

  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

  Allocating group tables: done

  Writing inode tables: done

  Creating journal (32768 blocks): done

  Writing superblocks and filesystem accounting information: done

  4设置引导区

  引导区必须包含以下文件,你可以从官方镜像里获取(bootable/fat32 partition)也可以从书面步骤中复制过来:

  bootcodebin:第二阶段的引导程序,

  loaderbin:第三阶段的引导程序,

  startelf:GPU二进制固件映像,

  kernelimg操作系统的内核镜像文件,

  cmdlinetxt:传递给内核的参数

  5设置root文件系统分区

  ROOTFS分区包含android文件系统,是从<your_android_framework_path>/out/target/product/rpi/root复制过来的。

  cp -r <your_android_framework_path>/out/target/product/rpi/root/ /media/ROOTFS/

  6完成上述步骤之后,将其放在Raspberry Pi上跑。

  七如何在Raspberry Pi使用adb

  1查看网络

  当android linux在Raspberry Pi运行时,切换到控制台,执行以下命令:

  ifconfig eth0

  记下ip地址。

  如果不能找到ip,可以输入以下命令:/system/xbin/dhcp-eth0,来启动网络连接程序。

  ps:如果屏幕没有显示控制台,只要按CTRL+ALT+F2即可切换到控制台。如果你想要切换到Android界面,只要按CTRL+ALT+F7即可。

  2远程连接adb服务器

  在主机上执行以下命令即可与同一局域网的Raspberry Pi相连

  adb connect ip

  连接成功后,你就可以用adb工具输出日志,执行shell命令等。

  3也可以用数据线连接主机,直接在主机上调试。

  进入调试的命令为:

  screen /dev/ttyUSB0 115200

  名词解释:

  交叉编译(cross compile):交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓 平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 为什么WindowsiOS操作很流畅,而LinuxAndroid却很卡顿呢?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情