Arch Linux 下 Android 源码下载与编译
最近工程实践的老师让我把 Android 环境搭建起来,并且将界面换成黑白的,算是一个考验,这里就记录一下具体的做法。
Android 源码以前没有注意过,一直以为是 git 管理,看了一下文档,才知道 Google 在 git 上面又加了一个叫做 repo 的工具,用来管理大量的 git 仓库。
repo 这个工具在 AUR 里面有,叫做“repo-git”,首先要把这个工具安好。
按照官网的下载说明,安装下面几个包:gperf sdl esound wxgtk valgrind,当然 base-devel 这个 group 也肯定都要装的了。64 位系统还要装 lib32-readline 和一些其他 32 位包,不过因为我装了 wine,所以所有依赖包都已经装好了。
官网说只能用 jdk5,不过我克服万难从 AUR 上安装好老掉牙没人管的 jdk5 之后,编译时提示我 jdk 版本不对,请使用 jdk6 ……同学们引以为戒,官网说明已经过时了。安装好 jdk 后重启一下系统更新环境变量,当然你也可以:
$ source /etc/profile
然后随便建个目录,比如我是 ~/Workspace/mydroid,进入这个目录后:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
这是获得最新的 git stable 源码,或者你仅仅想要 Android 2.2.1,那么:
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.2.1_r1
其实就是 git branch 的封装,manifest 是一个 git 的仓库目录,里面就一个 xml 文件,记录了各个仓库的信息,repo 根据这些信息来 clone 源码。
这条命令会问你的名字和 E-mail,其实就是 ~/.gitconfig 中的信息,如果你以前常用 git,直接回车即可。
下面就是同步源代码了:
$ repo sync
Android 的源代码大约有 2G,在我令人发指的网络环境下,同步了 2 天才完事,所以速度在 200K 以下的同学就不要凑热闹了,找个地方画圈圈吧……
这个过程中就是一堆的 git clone、git rebase,如果中断了,会从第一个开始慢慢扫描,直到之前中断的那个仓库,按照 git clone 不支持断点续传的习性,这个被中断的项目会被重新 clone。要知道,Google 这个脑残最恶名昭彰的一点就是把二进制文件往 git 里面放了,第 252 个仓库 prebuild 就是这么个地方,700M,我就在这里中断过……
闲话少说,下面是两个针对 Arch Linux 的 Fix,一个是 Make,目前 testing 中的 make 是 3.82 版本,这个版本在编译 Android 的时候开始会出错,见这个帖子,所以要降级成 core/make,也就是 3.81。
另外,如果用的是 64 位系统,那么要安装 multilib 源中的 gcc-multilib,否则会出现 libgcc.a 不兼容的错误。
全部完成之后,直接执行 make 就可以编译源代码了,当然 Makefile 有很多规则,比如只想编译计算器这个程序,make Calculator 即可。
最后就是用模拟器执行啦,建个脚本执行即可:
#!/bin/bash export ANDROID_PRODUCT_OUT=~/Workspace/mydroid/out/target/product/generic # PATH for Android emulator export PATH=$PATH:~/Workspace/mydroid/out/host/linux-x86/bin export ANDROID_JAVA_HOME=$JAVA_HOME # start the emulator with debug info emulator -debug-init
最后是几张模拟器的图片,是我改成黑白之后的:
加快 git clone 速度的方法
呵呵,不知道我是不是火星了,git clone 原来可以不全部克隆的,而是可以只克隆当前的 commit,使用下面的命令即可:
git clone git://... --depth 1
也就是指定克隆深度为 1。
当然,通过这样克隆的代码就不能进行管理、提交什么的了。
学校的网络不知为何把 git 封了,只好用 proxychains 代理进行克隆,速度慢死,有了这个命令,安装个软件就快多了~
用 Blender 制作的杯具
关心 Linux 桌面的朋友可能都已经知道 TX 兄的 iBentu 网站上线了,第一篇文章就是 kevin 的 Blender 教程,教大家制作杯具……
看得出来,kevin 的视频做得很用心,加上很让人惊艳的声线,这样的教程确实很值的一看。:)
看看我的作品吧:
好吧,我承认自己做得很渣,虽然多次请教 kevin,最后还是做成了这样……不过杯具就要有悲剧的样嘛~^_^
期待 kevin 的下一次视频教程……另外请大家支持 iBentu 网站~
Arch 中抢先体验 Compiz++
LDCN 曾经介绍过 Compiz 将用 C++ 重写,不过之后 GNOME-Shell 的大热几乎让我们忘记了 Compiz++ 这么回事,再加上 Compiz 开发者匮乏,开发进度缓慢的一贯印象,除了少数如我一般的 Compiz 死忠,似乎很少有人关心 Compiz 怎么样了。
无论如何,Compiz 的开发者们还是在默默地为了理想中的窗口管理器努力着,如今 Compiz++ 已经接近可用状态, Arch 论坛上也有人放出了 Compiz++ 系列的 PKGBUILD,如果你也是 Compiz 的粉丝之一的话,不妨抢先体验一下吧。
这几个包的名称和地址是:
compiz-core++
compiz-plugins-main++
compiz-plugins-extra++
compiz-plugins-unsupported++
libcompizconfig++
compizconfig-python++
ccsm++
emerald++ (可选)
emerald-themes++ (可选)
安装 Compiz++ 完全不会影响现有的 Compiz,因为它是安装在 /opt 下面的,配置文件的名字也会不同。安装完成上面的包,可以运行如下命令来配置 Compiz++:
/opt/compiz++/bin/ccsm++
开启 Compiz++(建议预先开启 fusion-icon,这样遇到什么问题,可以方便切换为原来的 metacity 或者 compiz):
/opt/compiz++/bin/compiz --replace ccp
如果遇到问题,试试:
/opt/compiz++/bin/compiz --replace move decor composite resize place opengl
还不行的话,把 opengl 去掉试试。
当然这只是一次 C++ 语言的重写,不要期望有大的功能上或者性能上的变化,也不要指望开发版的稳定性有多么好就是了。不过相信通过 C++ 的重写和重新架构,以后的 Compiz 开发会更加容易、更加顺畅,给我们带来更好的体验。
Arch 论坛上的讨论帖:http://bbs.archlinux.org/viewtopic.php?id=93786
在 Virtualbox 中安装 Mac OS X
关注 Virtualbox 的同学可能已经知道,Virtualbox 3.2 版本中已经加入了 Mac OS X Guest 系统的支持,也就是说,我们可以在其他系统上通过 Virtualbox 虚拟它、体验它了!
我个人以前也在真机上折腾过所谓的“黑苹果”,不过由于我的台式机 CPU 都是 AMD 的,折腾来折腾去一直没有成功安装运行起来过,不过单单是它的安装界面,就不枉众人对它的美誉了。感谢郭嘉以及 Virtualbox 给了我这次宝贵的体验机会,我当然要好好珍惜啦。在 Lifehacker 这篇《How to Run Mac OS X in VirtualBox on Windows》的指引下,安装过程很是顺利。
这里简单说说要点:
首先,确定你的 CPU 支持虚拟化《How To Find Out If Your CPU Supports Hardware Virtualization (Intel VTx / AMD-v)》
然后,下载一款黑苹果的 ISO,我用的是 Hazard 的 OSX86 Snow Leopard。
接着,在 Virtualbox 3.2.6 或以上版本里面,创建一个虚拟机,目前 Virtualbox 3.2.6 中 CPU 只能选单核,内存自己定(我用 1G),不要选 EFI 选项,网卡要选 Intel PRO/1000 MT Desktop,声卡驱动见《Mac OS X guest sound support driver》。
插入光盘,启动虚拟机,开始时要按回车或者按 F8,不然会启动不了。格式化好磁盘,然后在安装时选自定义,注意选中最上面的所有更新,选中 Kernels 里面的 Legacy kernel,以及最下面的附加字体。对于 AMD 用户,要选中下面的“AMD”,对于 Intel 用户,则需要在 bootloaders 里面选中最新版本的 Chameleon。最好不要选其他的了,否则不保证能安装成功,经验之谈。
最后,就是漫长的安装过程了,大概要一小时或者更长(我用的是动态扩展的磁盘空间)。
安装过程到此为止,重启后经过简单的设置,就可以进入桌面了。
在 Virtualbox 中虚拟的 Mac OS X 还没有虚拟 XP 那么流畅,CPU 占用率也一直很高,不过还差强人意,各种特效能够运行起来,足以让人体验一下传说中苹果系统的风采了。
也许是习惯了各种仿苹果系统的 Dock、动画之类的,Mac OS X 并没有十分的惊艳的感觉。不过通过简单的试用,我还是能够体验到 Mac OS X 背后那种深厚的文化底蕴,虽然动画效果没有 Compiz 绚丽多姿、功能强大,不过整体的协调感、界面的一致性,这都是 GNOME 乃至 KDE、Windows 7 都模仿不来的,这或许就是传说中的“简约不简单”吧。
Compiz 0.9 正式发布!
之前介绍过在 Arch Linux 下体验 git 版本的 Compiz++ (Compiz 0.9),刚刚收到消息,Compiz 0.9 正式发布了!
这是 Compiz 0.9 系列的第一个非稳定版本,包含了很多新的特性和改进,包括使用 C++ 重写、全新的开发者 API、将渲染分离为一些插件、构建系统由 Autotools 转为 CMake,以及一些小的功能上的改进。这个版本主要是给开发者和测试者用的预览版本,展示 0.10.x 可能带来的一些改变,此版本还存在很多已知的问题和缺失的功能,不能用于日常使用。
不过小白鼠们,还是勇敢的上吧!
详细的变更日志在这里:http://lists.freedesktop.org/archives/compiz/2010-July/003429.html
HTTPS Everywhere – 总是使用加密连接访问网站
关于加个 S 的重要性在此不再赘述了。很多网站虽然提供 HTTPS,不过默认使用的还是普通连接,或者用着用着就会跳回 HTTP,很多网友已经推出了各种脚本来促使某些网站默认使用 HTTPS,效果也很好。
这里介绍的 HTTPS Everywhere 也是属于这类,不过它有更全的网站库,也不必像 GreaseMonkey 脚本一样要等到页面载入完成才行,下面简要介绍一下它吧。
HTTPS Everywhere 是 Tor 项目和 EFF(Electronic Frontier Foundation)合作开发的 Firefox 扩展,它支持的网站如下:
另外,HTTPS Everywhere 也支持自定义规则。
HTTPS Everywhere 还处于 Beta 阶段,有兴趣的同学可以去 EFF 的网站下载。
giggle – 来自 GNOME 的 git 图形界面
以前介绍过 gitk 和 gitg 两款 git 图形界面工具,并对它们进行了简单的对比,最近,又发现另一款工具,giggle, 在此介绍给大家,希望有此需要的同学多个选择。
giggle 将用于浏览仓库内容的 gitk 和用于执行各种操作的 git-gui 融合在一起,成为一款集 git 所有功能于一身的管理工具。
giggle 有两种模式,一种是浏览模式,可以浏览目录中的所有文件,并指出它们在哪次提交中被修改,做了哪些修改,并且能够据此产生补丁。
另外,浏览模式本身也是个简单的编辑器,可以对文件即时进行修改,并对修改进行提交。如果你仅仅需要少量修改,或者不需要一些编辑器的高级功能,那么一个 giggle 足以完成 git + 编辑器的功能了。
另一种模式是历史模式,这种模式下比较容易从总体上把握每次提交后项目的修改状况,以及提交的详细信息。当然创建分支、标签和补丁的功能是必不可少的。
另外,giggle 还可以修改 .gitconfig、.gitignore 等文件的设置,同时提供了嵌入的终端,以及打开外部编辑器编辑文件等功能,确实具有一个完善的 git 图形界面的潜力。
giggle 现在已经成为 GNOME 的组件,开发比较活跃,有兴趣的同学可以一试。
两个新的 pacman 外壳:clyde 和 packer
Arch Linux 独特的 pacman 包管理器是其备受亲睐的原因之一,作为一款命令行包管理器,它深谙 K.I.S.S. 原则,在使用上甚至比很多图形界面的包管理器还要强大,还要方便、直观。
然而,Arch 的用户总是挑剔的,总是希望日常使用的包管理器更加的 Simple and Stupid,于是有了 pacman-color、yaourt 等等,种种扩展、外壳更是把 pacman 武装成了神兵利器,再加上如我一般的用户更是用 alias 将各种命令简化,简简单单的 ysyu 命令就更新了整个系统,实在是把 Linux 下的包管理简化到了一个极点。
不过,总是有更加挑剔的用户,Linux 世界才有这么多的优秀软件,据我所知,今年又有两个 Arch 用户不满 yaourt 的缓慢、低效、丑陋(虽然我没感觉),开发出了两个新的 pacman 的外壳(wrapper):clyde 和 packer。
Clyde
Clyde 由 DigitalKiwi 和 Ghost1227 开发,主要是不满基于 Bash 的 yaourt 太过缓慢,和对 AUR 支持的低能。他们希望使用小巧快速的 Lua 语言重写一个 wrapper(底层用 C 编写),能够提供多线程下载的支持,并且容易在此基础上构建图形界面包管理器。
Clyde 保留了 pacman 和 yaourt 的选项用法,界面也很类似,使后两者的用户更加容易迁移,开发者表示,Clyde 已经足够稳定来应付日常使用,“不过如果它破坏了你的系统,烧坏你的主板,吃了你的孩子,可不要找开发者算帐,警告过你了哦!”
Clyde 可以通过 AUR 安装,软件包名 clyde-git。
packer
packer 的开发者是 bruenig,他开发 packer 的主要目的是整合 pacman和 AUR,看来也是对 yaourt 对两者分别处理,还在不必要的时候对 pacman 来回调用、拖慢速度十分不满。
作者认为 packer 主要实现四个 pacman 和 AUR 的整合功能就可以了:搜索(-Ss)、查看信息(-Si)、安装(-S)、升级(-Su),在这四个功能上做到 pacman 和 AUR 一视同仁。
如果你对 packer 感兴趣,可以从 AUR 里面安装 packer,或者 nightly 源里面也可以。
另一个图形界面批量改名工具——GPRename
今天用到批量改名的功能,本来想要用 Linuxtoy 介绍的 pyRenamer 的,不过通过 AUR 安装的时候发现 pyRenamer 的服务器杯具了(法克及。爱抚。打不留!)只好寻找一个替代产品,这就找到了 GPRename。
GPRename 是基于 gtk2-perl 的批量改名工具,我们知道 perl 在正则的使用上是十分灵活的,用来做改名工具最适合不过。
不知道是不是和 pyRenamer 有什么渊源,两者的界面十分相似,GPRename 支持对文件名改变大小写、插入、删除、替换以及批量改为数字文件名的功能,在正则表达式的帮助下足够应付大多数情形,对于那些有这种需求,又懒得或者不会自己编写脚本的人一定很有用。
想要安装 GPRename,在 Arch 里只需要使用下面的命令即可:
sudo pacman -S gprename















