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

编译Android2.3.5源码,提供源码

2015-06-13 14:20 645 查看
参考文章:

1.编译android源码与内核总结

2.老罗-在Ubuntu上下载、编译和安装android最新源代码

现在说下我的安装情况吧

我在Ubuntu12 64位机器安装,使用的离线android 源代码为参考1中提供的 Android2.3.5_Kernel.7z(后面也会附上我自己做的网盘分享链接),java jdk使用的1.6。

下载好Android2.3.5_Kernel.7z之后最好使用7z工具进行解压缩(我之前也是用的winrar解压),解压的过程中可能会出现说是否替换之类的提示,选择全部替换,解压之后还会显示说 cannot delete file什么之类的,这个没多大影响。

以下的所有操作均使用root身份进行

解压好放入Ubuntu系统文件夹下,我的放在 /usr/local目录下,进入android目录,输入 make,就开始编译了,编译的过程中会出现许多警告和注意之类的提示,不用管,同时编译过程中还会出现许多比如:

find:
frameworks/base/frameworks/base/docs/html': 没有那个文件或目录 

  find:
out/target/common/docs/gen’: 没有那个文件或目录

find:
frameworks/base/frameworks/base/docs/html': 没有那个文件或目录 

  find:
out/target/common/docs/gen’: 没有那个文件或目录

find:
frameworks/base/frameworks/base/docs/html': 没有那个文件或目录 

  find:
out/target/common/docs/gen’: 没有那个文件或目录

find:
frameworks/base/frameworks/base/docs/html': 没有那个文件或目录 

  find:
out/target/common/docs/gen’: 没有那个文件或目录

find:
frameworks/base/frameworks/base/docs/html': 没有那个文件或目录 

  find:
out/target/common/docs/gen’: 没有那个文件或目录

这些也不用管,接着编译,编译过程中会出现许多的问题,大部分问题都是缺少对应的依赖库导致,百度的话均能找到解决方案。但是我编译的时候出现了这么个问题

error: expected unqualified-id before ‘.’ token

网上没找到直接的答案,但解决方法与下面的问题类似

target Strip: AudioInRecord (out/target/product/generic/obj/EXECUTABLES/AudioInRecord_intermediates/AudioInRecord)

target thumb C++: BufferQueue_test <= system/media/opensles/tests/automated/BufferQueue_test.cpp

system/media/opensles/tests/automated/BufferQueue_test.cpp:34:29: error: SLES/OpenSLESUT.h: No such file or directory

system/media/opensles/tests/automated/BufferQueue_test.cpp: In function ‘void CheckErr(SLresult)’:

system/media/opensles/tests/automated/BufferQueue_test.cpp:55: error: ‘slesutResultToString’ was not declared in this scope

make: * [out/target/product/generic/obj/EXECUTABLES/BufferQueue_test_intermediates/BufferQueue_test.o] Error 1

解决方案是:

把android源码中system/media/opensles/libopensles/OpenSLESUT.h 这个文件拷贝到system/media/opensles/include/SLES/OpenSLESUT.h ,再接着make,可参见:

OpenSLESUT.h问题

经过很长时间的等待,终于编译好了,设置环境变量之后运行模拟器。其实整个编译过程遇到的问题一般百度再仔细看看就能解决了

附上截图一张(这里我没有编译kernel内核,用的自带的)



接着,我们再编译linux kernel内核,将压缩包(后面的分享链接里有)解压得到kernel文件夹,将kernel拷贝到android目录下,进入kernel目录,修改Makefile文件,添加相应的环境变量,具体操作见参考1

输入 make goldfish_defconfig

输入 make

这时,我的提示报错

include/asm is a directory but a symlink was expected

解决方法是删除kernel/include 目录下的asm文件夹,参考:

linux内核编译错误

接着make,成功,以自己的linux 内核启动模拟器如图:




注意 两幅图的不同之处,即 Kernel version的不同

附上我的分享链接(Android2.3.5以及linux kernel内核)http://pan.baidu.com/s/1pJDUoJ5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: