您的位置:首页 > 移动开发 > Android开发

在mac osx lion中成功编译android 2.3(Gingerbread)

2012-11-27 09:53 197 查看
0、前言
一直想编译个android系统以作今后的调试等用,于是终于在昨天(刚搬完家,累死了。。。)晚上开始动手做这件事,网上的资料大多数都是介绍关于在Linux下的android编译,要么就是android源码的版本号跟我这不一致。我现在手边只有个装了mac osx lion的air,而且真机也是2.3的,为了以后开发上的方便,还是决定编译2.3。过程中遇到了不少的麻烦。熬到快2点了,还是没搞定(天朝可恶的网!!上不了google
groups,可恨!!!),今天(2012年11月27日星期二 )早上起来接着弄。终于搞定了。。。。8:50开始编译的,n久时间。

1、环境

----------------------------------------------
a).mac osx lion 10.7.4
b).java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
c).Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
d).gcc4.2
----------------------------------------------

2、step by step
----------------------------------------------
a).安装jdk6(app store)
b).下载android源码

(我这网络google经常上不去,所以直接下的网盘中的源码包)
http://www.verycd.com/topics/2906182/

http://hi.baidu.com/liuz19911010/item/739d062052acf7c9ee10f11e

c).创建文件名大小写敏感的磁盘(我是存在移动硬盘中)
磁盘工具>>文件>>新建空白映像文件
随便起名,这里大小尽量大点(我给了30G)格式为mac os扩展(区分大小写)



挂载映像(第一次应该会自动挂载)

hdiutil attach [映像路径] -mountpoint /Volumes/挂载点

再把b)中源码放到这个映像中。

----------------------------------------------
d).安装macosx10.5.sdk:
下载地址:http://download.csdn.net/detail/guoguoljg/4095743(感谢gougouljg的贡献)
sudo mkdir /Developer
安装时要选择安装在/Developer中(也可以通过修改.mk文件,这里为了方便。)。

----------------------------------------------

e).接着把第3步中的3个error全改过来,进入源码根目录再make。。。



----------------------------------------------

3、error解决

----------------------------------------------
3.0 clearsilver错误
host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c
external/clearsilver/java-jni/j_neo_util.c:258:12: error: expected expression
return nerr_raise(NERR_ASSERT,
^
external/clearsilver/java-jni/../util/neo_err.h:88:69: note: expanded from macro 'nerr_raise'
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/java-jni/j_neo_util.c:269:12: error: expected expression
return nerr_raise(NERR_ASSERT,
^
external/clearsilver/java-jni/../util/neo_err.h:88:69: note: expanded from macro 'nerr_raise'
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)

解决:
sudo bash
mv /usr/bin/cc /usr/bin/cc_bak

mv /usr/bin/c++ /usr/bin/c++_bak

ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/cc

ln -s /usr/bin/llvm-g++-4.2 /usr/bin/c++

----------------------------------------------

3.1 strnlen错误
详情请看:http://blog.sephiroth.it/
./external/elfutils/config-compat-darwin.h:42: error: static declaration of ‘strnlen’ follows non-static

1

./external/elfutils/config-compat-darwin.h:42: error: static declaration of ‘strnlen’ follows non-static declaration
modify ./external/elfutils/config-compat-darwin.h.

replace:

1

2

3

4

5

6

7

static inline size_t strnlen (const char *__string, size_t __maxlen)

{

int len = 0;

while (__maxlen-- && *__string++)

len++;

return len;

}
with:

1

2

3

4

5

6

7

8

9

#if
0

static inline size_t strnlen (const char *__string, size_t __maxlen)

{

int len = 0;

while (__maxlen-- && *__string++)

len++;

return len;

}

#endif
----------------------------------------------
3.2 symbol(s) not found for architecture i386

解决:
--------------------------------------------
cp external/qemu/Android.mk external/qemu/Android.mk_backup
vim external/qemu/Android.mk (全部加#注释掉)
--------------------------------------------

----------------------------------------------

参考文章
http://jinganglang777.blog.163.com/blog/static/79085497201273061657988/

/article/10270522.html

http://blog.sephiroth.it/

http://source.android.com/source/initializing.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: