
最近我收到Jack对FlexBuilder 2.01 for linux的回应说Windows下的FlexBuilder序列号在我们Port的Linux版本中不能用,一直报序列号错误,在此现对Jack表示感谢,一开始我以为他的序列号错误,没有在意,昨天我自己开发用的机子上的Eclipse升了级,顺便清理了下垃圾文件,重新安装了FlexBuilder,才发现原来Windows下的序列号是不能用在Linux下,这是我们Linux版本的FlexBuilder的一个Bug,既然发现了,那咱就修复它好了。
本来以为就是一个小问题,可好,因为FlexBuilder序列号验证相关的代码是用混淆过的,我从前天开始一头钻进去,到现在才钻出来,总算是解决了这个BUG,原来是因为Adobe官方没有发布Linux版本,所以所有的序列号验证机制都是针对Windows及Mac的,而我们的平台是Linux所以不管你输入的序列号是否正确,总是验证失败。
本次更新已经加入到了FlexBuilder for Linux的安装包中,如果已经安装了FlexBuilder for Linux的朋友,请下载这个文件,将其覆盖到FlexBuilder(eclipse)安装目录下的plugins/com.adobe.flexbuilder.project_2.0.155577/zornproject.jar文件,就可以使用Windows或Mac的序列号。
wget http://labs.eshangrao.com/files/zornproject.jar
mv zornproject.jar $FlexBuilder_InstallDir/plugins/com.adobe.flexbuilder.project_2.0.155577/
这几天真是够我折腾的,满脑子都是JVM控制码,不过也好,现在对FlexBuilder序列号验证的整个算法以及验证过程那是了然于胸了,还有对JVM中Java字节码的调用过程也有了更深入的了解了,嘿嘿,“祸兮福之亦”,实在是有道理!
顺便推荐大家一个做Java字节码修改的工具:ASM,这玩意简直太好用了,不但封装了所有的JVM指定,而且还支持根据Java Class文件,直接生成Asm class创建代码,当然还有Eclipse插件,想到以前咱对着Java Virtual Machine Specification一行行对Class编码的痛苦时候,真是热泪盈眶啊!
PS:有朋友可能要问是否可以将序列号验证去掉,因为FlexBuilder是有版权的,本来我们发布Linux版本就已经侵犯了Adobe相关权益了,但是因为官方没有Linux版本,而且又有Linux下的开发Flex的需求,所有我们才将其移植到了Linux版本,也正因为我们的Linux版本满足了Linux下Flex开发LFlexer的需要,所有到现在我们还没有收到Adobe的律师信,但是如果我们去掉了正版序列号验证的话,我们的行为就不只是移植了,而是盗版了,因为我们的Linux版本实际上是可以用于所有操作系统的,包括Windows和Mac。相信,我们一移除了正版序列号验证,Adobe的律师信就离我们不远了,所有有需要的朋友请见谅。