赞Android 2.3.5的编译进化

        前面我写过一篇关于Android 2.3在Ubuntu10.04下编译的文章,如果有兴趣可以点开这个连接点击打开链接。昨天,把google三周前发布的最新版的Android源码Android 2.3.5 Down下来,进行了编译。这次我用的系统是Ubuntu 10.10,32bit的机器,跟前一次的编译环境基本一致。

        对比两次编译过程,基本步骤一样,想尝试编译的可以参考我的前一篇博客。只是有一点需要说明,也是此次更新后,优化编译过程的一点:编译脚本能够自动识别当前系统是32bit还是64bit,从而指定编译和连接使用32bit还是64bit的库。这就避免了我在编译Android 2.3时,步骤3中遇到的由于系统位宽不对在main.mk引发的错误;以及编译external/clearsilver/目录下的部分源码时,由于库版本不对引发的错误。这对于不熟悉Android编译脚本的初学者来说无疑是个好消息,至少现在进行Android编译,已经不需要在照葫芦划瓢的去修改那些.mk文件,只需要专注于环境搭建和常规错误的排除,如:少了些库没安装。

        google对Android 2.3.5编译脚本进行的这种优化,对许多开发者来说是一个福音,毕竟大部分热爱Android系统的人们,用的电脑还不是64bit系统。至于Honeycomb前面的几个版本为什么一直对此不做修改,就不知道为什么了,纠缠其原因已经没什么意义了。或许googel认为大部分开发者都在公司的服务器上进行项目开发,而公司的服务器往往都是64bit的系统,因此,将编译系统和库都默认为64bit再合理不过了。

        简单看了一下Android 2.3.5的编译脚本中那些在其之前版本需要修改的脚本文件,main.mk中已经把提示需要在64bit系统上进行编译的那几行去掉了,所以现在的main.mk比之前的少了十几行。再看下以下几个文件:

     external/clearsilver/cgi/Android.mk
     external/clearsilver/java-jni/Android.mk
     external/clearsilver/util/Android.mk
     external/clearsilver/cs/Android.m

通过对比发现,之前那些无疑都是这样提示的“# This forces a 64-bit build for Java6”,然后不分青红皂白的蛮横的将LOCAL_CFLAGS和LOCAL_LDFLAGS设置为- m64;而在Android 2.3.5中,则引入了判断:ifeq ($(HOST_JDK_IS_64BIT_VERSION), true),并根据判断结果来决定是否将LOCAL_CFLAGS和LOCAL_LDFLAGS设置为- m64。而HOST_JDK_IS_64BIT_VERSION这个变量是在build/core/config.mk中进行判断和赋值的,也没有采用强行赋值。

        如果说之前对Android 2.3的编译确实让我大为恼火,那么今天Android 2.3.5的编译优化,至少令为稍感宽慰,说明google对广大开发者的问题还是给予了一定程度的重视。


你可能感兴趣的:(android,优化,脚本,Google,ubuntu,64bit)