设为首页 收藏本站
查看: 1116|回复: 1

[经验分享] 32位Ubuntu 11.10下android2.3.7源码下载与编译小结

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2018-5-5 13:35:55 | 显示全部楼层 |阅读模式
  1、我是在vmware下安装ubuntu  11.10的,这个网上资料很多,不多说了。我给ubuntu分了25g硬盘和1g内存。
  2、请参照http://source.android.com/source。
  初始化编译环境
  检查一下包是否安装:
  Python 2.4-2.7
  Git 1.5.4 或更高版本
  没有话可以sudo apt-get install..安装一下
  JDK 6 因为是编译android2.3以上,如果编译2.2以下需要JDK5
  安装JDK6:
  $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
  $ sudo apt-get update
  $ sudo apt-get install sun-java6-jdk
  如果下载速度不行,可以先把ubuntu的更新源改成网易的源,可参考:http://bolg.malu.me/html/2010/279.html。
  其他需要安装的包:
  我安装了如下包:官网上那是64位需要安装的包,我是32位的有些不一样。
  $ sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev x11proto-core-dev libx11-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
  3、下面开始下载源码
  首先安装repo(是一个便于git管理的工具)
  $ mkdir ~/bin
  $ PATH=~/bin:$PATH
  $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
  $ chmod a+x ~/bin/repo
  初始化repo client
  $ mkdir android2.3.7
  $ cd android2.3.7
  初始化repo,我是使用的下面的地址,使用官网地址时出现了网络错误
  $ repo init -u http://android.googlesource.com/platform/manifest.git -b android-2.3.7_r1
  按照提示输入用户名和邮箱。
  接着
  $ repo sync
  开始同步源码,根据你的网速,我的持续了50分钟左右。
  还有一步验证git  tags可参照官网。下完后就可以在刚才创建的android2.3.7文件夹下看见已下载的源码。
  4、开始编译
  初始化:
  $ source build/envsetup.sh
  $ lunch full-eng
  上面代表编译的一个target,full是针对emulator编译全部包括app、输入法等,eng是指针对开发者编译,有最高权限。具体可参见官网。
  接着就可以编译了,在源码目录下直接make就行,需要一段时间。
  编译过程中有几个问题需要指出一下:
  问题1:
  由于我们是32位系统,所以有些文件需要修改一下:将
  ./external/clearsilver/cgi/Android.mk
  ./external/clearsilver/java-jni/Android.mk
  ./external/clearsilver/util/Android.mk
  ./external/clearsilver/cs/Android.mk
  四个文件中的
  LOCAL_CFLAGS += -m64
  LOCAL_LDFLAGS += -m64
  注释掉,或者将“64”换成“32”
  LOCAL_CFLAGS += -m32
  LOCAL_LDFLAGS += -m32
  然后,将./build/core/main.mk 中的
  ifneq (64,$(findstring 64,$(build_arch)))
  改为:
  ifneq (i686,$(findstring i686,$(build_arch)))
  问题2:
  frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const  android::RefBase::weakref_impl’ as ‘this’ argument of ‘void   android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers  [-fpermissive] make: ***  [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] error  1
  如下解决:
  $ gedit frameworks/base/libs/utils/Android.mk
  将下面一行
  LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
  改成
  LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive
  问题3:
  <command-line>:0:0: warning: &quot;_FORTIFY_SOURCE&quot; redefined [enabled  by default]
  <built-in>:0:0: note: this is the location of the previous  definition cc1plus: all warnings being treated as errors
  make: ***  [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
  这是由于11.10的gcc版本过高造成的,可参考这篇文章修改:http://hi.baidu.com/designhouse/blog/item/fec5cdbf8d6a231618d81fc1.html。
  至此编译完毕。
  make编译的并不是所有内容,不包含内核和SDK。
  映像生成在out/target/product/generic下:android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中,  ramdisk.img是一个分区映像文件,在kernel启动时,ramdisk被用来调用init,以及把真正的root file system  mount起来。system.img包括了主要系统,系统app等,会被挂载到/下,可对应查看./system该目录,可以发现在其下app/下有一些系统自带的应用程序。userdata.img包括了一些用户数据,被挂载到/data下,对应可查看./data/目录,emulator加载这3个映像文件。
  5、编译SDK
  编译SDK可以得到与源码同步的SDK,还会生成一些tools,在源码根目录下:
  $ sudo make PRODUCT-sdk-sdk
  编译生成的SDK在out/host/linux-x86/SDK下。之后如果在ubuntu下使用eclipse进行开发,可以使用你编译的SDK。
  下面就在模拟器中运行镜像,建议切到root用户下,首先配置几个环境变量,将自己编译的SDK设为优先级最高,在源码根目录下执行:
  $ update-alternatives --install /usr/bin/AndroidSDK AndroidSDK ./out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86 255
  这样会在/etc/alternatives下生成一个指向该SDK目录的软连接AndroidSDK,这个目录主要存放一些系统默认打开的程序的信息和配置。那么/usr/bin/AndroidSDK就指向这个软连接。接着执行:
  gedit ~/.bashrc
  在文件末尾添加:
  export ANDROID_SDK_HOME=/usr/bin/AndroidSDK
  export PATH=$ANDROID_SDK_HOME/tools:$PATH
  export ANDROID_PRODUCT_OUT=~/android2.3.7/out/target/product/generic
  接着就可以执行:
  $ emulator
  运行的就是你编译的映像。执行emulator 命令时,如果不带任何参数,则Linux  Kernel镜像默认使用~/Android/prebuilt/android-arm/kernel目录下的kernel-qemu文件,而
  Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img。模拟器运行需要这四个文件,如果你编译了内核则可以使用自己的Kernel镜像,可用于android移植等。
  6、单独编译模块
  如果你不想编译整个系统,就想编译某一个应用程序,可以使用mmm命令,使用之前,在源码目录下先要执行:
  $ build/envsetup.sh
  这样会生成一些命令,有m即make、mm编译当前目录下所有模块、mmm编译指定目录下所有模块。你可以把packages/apps/Music应用的application  name改成MyMusic(AndroidManifest.xml中),然后执行:
  $ mmm packages/apps/Music
  在out/target/product/generic/system/app中就可以看见Music.apk,然后执行:
  $ make snod
  重新生成system.img。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-456211-1-1.html 上篇帖子: 公司Ubuntu设置员工sudo权限实例 下篇帖子: ubuntu11.10下 android2.3 编译问题

尚未签到

发表于 2018-5-5 13:40:23 | 显示全部楼层
66666666666666666

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表