Build CyanogenMod 10.2 for Nexus 4

一直想尝试着自己编译 CM,毕竟如果想修改系统 Apk,就有可能需要编译整个系统。于是在开了一台 Ubuntu x86_64 虚拟机(这是一个大坑,等会儿说)作为编译机器,参考的主要是 CM 官方 wiki:http://wiki.cyanogenmod.org/w/Build_for_mako?setlang=en。根据 wiki 指示准备好基础环境后,开始 repo sync,总共下载了 6GB 多的工程代码。总的来说,一直到 wiki 的 “Start the build” 一节,都没有问题,照着做就好了。不过当执行 brunch mako 之后,坑就一个个冒出来了。

第一个坑是磁盘空间,一开始给虚拟机分配的磁盘小了些,明显不足以完成整个编译,于是又加了个 40GB 的虚拟磁盘,并且在该磁盘上编译。40GB 似乎够了,不过最后的事实证明其实 40GB 几乎不够,最终完成编译后只剩 400MB 了!所以编译 Android 还是分配一个大一点的磁盘吧。

第二个坑就是 x86_64,ARM 处理器目前还是 32 位的,包括编译使用的 repo 好像也是 32 位的,所以首先需要安装 32 位 c/c++ 运行库。之后真正的坑在于 JDK,wiki 中没有明确说明 JDK 应该安装 32 位还是 64 位的,我一开始想 java 部分应该和架构没什么关系,就装了个 64 位 JDK,结果开始使用 javadoc 编译 Droiddoc 时,make 出错了,显示错误 45,一开始在论坛上查了一下,说是应该使用 Oracle JDK,于是尝试安装了 64 位的 Oracle JDK,结果还是一样出错。后来仔细看了论坛,发现其实问题是 64 位 JDK。也不知道为什么,64 位 JDK 的 javadoc 就是会导致编译错误,但是之前的 jar 包都编译正常。通过 apt-get 安装了 32 位 Open JDK 后,问题解决了。

第三个坑是内存,一开始只给虚拟机分配了 1GB 内存,结果在编译 framework 时,malloc.c 中的 assert 出错了。。。关机,调整到 2GB,编译终于继续下去了。

第四个坑是 CM 加入的 Focal,在编译 external/Focal 中的链接库时总是出错,论坛上说 Focal 不太稳定,可以不编译。好吧,暴力一点,直接把 external/Focal 和 apps/Focal 删掉了,编译继续。

最终花了一个下午+半个晚上(不包括 repo sync 的时间,这个根据网速会有所不同,可以自己算算下载 6GB 需要多久),终于编译出来了。好了,能编译了,下一步就是准备尝试修改了。

 

JSMinNpp 1.13 Released

What’s New in JSMinNpp 1.13:

  • Performance improved (JSFormat will be about 2X faster).
  • Linked editor with Json Viewer: Clicking a data node in Viewer, editor will navigate to corresponding line.
  • Added a logo.

Download links:
https://jstoolnpp.googlecode.com/files/JSMinNPP.1.13.uni.zip
http://sourceforge.net/projects/jsminnpp/files/Uni/JSMinNPP.1.13.uni.zip/download

JSMinNpp 1.12 Released

What’s New:
1.12
Fix a bug in JSON Viewer.
Update JsonPP.
Fix “unexpect space” of JSLint.
Add an option to keep indent in empty line.
Fix “finally” bug.
Change project site to http://sunjw.us/jsminnpp/

Download links:
https://jstoolnpp.googlecode.com/files/JSMinNPP.1.12.uni.zip
http://sourceforge.net/projects/jsminnpp/files/Uni/JSMinNPP.1.12.uni.zip/download

CMFileManager for ICS Standalone

CyanogenMod 10 中自带了一个 CMFileManager 的文件管理器,很好用,可以提升到 root 权限进行操作,有类似 Windows 资源管理器的路径导航栏,界面也很简洁、漂亮。这两天给它改了改,移植到 CM 9 之上,并且成为一个可独立安装的 APK 包,不再需要放到 /system/app/ 中。

CyanogenMod 10 has a file manager app called “CMFileManager”, which is simple and easy to use and can run as ‘root’. It has holo style UI. Now, I’ve make a standalone installation package of CMFileManager, you do not need to put it into /system/app/ anymore.

继续阅读

JSMinNpp 1.11 Released

What’s New 1.11
Move to Google Code.
Add a Json Viewer.
Change classes inheritance hierarchy to build a smaller binary file.

Download from here and try.

Although the source code repository has been moved to Google Code, downloading is still from SouceForge.net.

Sooner or later, it will be on GitHub

改用 Android 之后 II

在换到 Moto Defy 进入 Android 阵营之后,曾经写过一篇博客,对比 iOS 系统和 Android 系统。这篇博客被一些网站转载(1, 2)后,被各种“大神”们猛喷

现在 Defy 已经用了快半年,期间也接触过一些别的 Android 手机,最近实验室的项目更是进入了 Android 开发领域,是时候再写一篇,进一步写一写使用的感受。这次就不做对比了,因为手头没有运行 iOS 5 的苹果设备,而且也没有怎么用过新的 iOS。

先看一看之前那篇中写到的观点。

  • 同步

我始终还是认为,iOS 的同步是一个很好的方法,在音乐和视频传输、应用程序安装和数据备份方面都有明显的优势。

继续阅读

fHash 开源

从今天起,fHash 将基于 GPL 2 协议发布并开放源代码。项目托管于 SourceForge.net,一开始想使用 Google Code 的,但是一来比较熟悉 SourceForge.net,二来 Google Code 由于众所周知的原因访问不是很方便,项目主页是 fHash@sf.net。同时发布中文版英文版并且接受捐款

其实本来就应该基于 GPL 2 开源,因为程序中使用的2个算法是使用 GPL 2 协议的,那么开源 fHash 就算是停止违反授权的行为了^_^。