编译Windows平台Android SDK

这是一件很吐血的事,折腾了半天的时间,最后发现版本不一致害死人。

Android SDK中有不少小工具,如果要自己改造一下,就需要重新编译。Android原生自然是Linux,但毕竟用户绝大部分是Windows的,所以还是要给Win下编一份。

根据platform/development/docs/howto_build_SDK.txt文档,主要步骤如下:

  1. 在Linux下编一份for linux的;
  2. 在Windows下装cygwin和一堆包;
  3. 把源码和SDK for Linux拷贝到Windows下;
  4. 用development/build/tools/make_windows_sdk.sh脚本编译Windows平台相关文件,并且自动替换掉SDK for Linux中的相应文件,于是一个SDK for Windows就诞生鸟……

可是……最新的源码里找不到这个脚本。倒是有一个patch_windows_sdk.sh,看起来和上面的很像,嗯。也懒得git log翻修订记录了,直接用——失败。

最后翻到同目录下的windows_sdk.mk,发现目前版本的真正编译方法了:

  1. 在Linux下编一份for linux的:make PRODUCT-sdk-sdk
  2. 安装mingw32
  3. 在Linux下编译for Windows的:make PRODUCT-sdk-win_sdk

大功告成……方便了很多,但是各种被老资料耽误的兄弟们,请尽情地吐血吧。

最后——狠揍自己:不论是来一次git log还是来一次vim windows_sdk.mk,都可以不用绕这么多弯的。

coding,coding,还是coding:《黑客与画家》札记

粗略读完Paul Graham的《黑客与画家》,收获并不太多,大抵是修为境界还远远不够。不过一边读一边回忆其他人的言论,倒是有些观点可以总结到一起,作为一种指导:

  1. 不断地迭代:写丑陋的代码、改进质量、将其抛弃;
  2. 为开源活动做出真正的贡献;
  3. 多调试,少设计;
  4. 用适当的语言做适当的事情,比如用Lisp思考、用Python做原型、用C或Java实现(Graham认为完全可以用Lisp来做开发,并且这种非大众语言甚至是一种壁垒性的竞争优势,我不认同);
  5. 做产品时,先快速出原型,再根据反馈改进(《软件开发者路线图》将其称之为反馈回路越短越好);
  6. 不要过早关注细节(或者说过早优化是万恶之源);
  7. 不被打扰状态将产生N倍的工作效率。

此外,《黑客与画家》这篇散文里,对“计算机科学”这一概念的质疑,我从心底赞同。将researcher、engineer、hacker产生价值的过程加以本质性区分,绝对是有必要的——事实上,我一直困惑于,总认为学术成果是最重要的,但又喜欢工程性或hack的东西,因此目标在两者之间不断徘徊。虽然还是没有真正明白hacker创造财富的本质,但至少主观上对这样的道路很坦荡。

说起内心坦荡,有一篇文章提到“不敢说出来的话”,其中的一个观点:每个学科的研究工作所需要的能力显然是大不相同的,但这样的观点在任何一个学校里都不能直白地摆到台面上来说。实际上我觉得,真正坦然地去承认这一点——承认总有那么一大批人是比自己强的,才是面对现实。内心不被主观情绪蒙蔽,方能认清自己的价值所在。

病毒分析书籍(译)

作者:mhl

翻译:Claud Xiao

原文地址:http://www.malwarecookbook.com/?p=49

今天Sunbelt Software发表了一篇博客介绍病毒分析的书籍,我也一直打算做同样的事。某些出版商出于竞争的考虑,不准作者引用其他出版商的书籍。因此,尽管我很想在Malware Analyst’s Cookbook中引用我喜欢的一些书,但不被允许这样做。所以,我选择了在这篇博文中将它们列举出来。以下就是我认为在病毒分析方面很值得一读的书籍:

Continue reading