编译Android 5.1.1源码
来源:互联网 发布:关键词数据库 编辑:程序博客网 时间:2024/06/06 02:19
源码获取
清华大学的服务器,不用翻墙,很好。
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
* [新tag] android-sdk-4.4.2_r1.0.1 -> android-sdk-4.4.2_r1.0.1 * [新tag] android-wear-5.0.0_r1 -> android-wear-5.0.0_r1 * [新tag] android-wear-5.1.0_r1 -> android-wear-5.1.0_r1 * [新tag] android-wear-5.1.1_r1 -> android-wear-5.1.1_r1Fetching projects: 100% (412/412), done. Checking out files: 100% (1179/1179), done.Checking out files: 100% (44267/44267), done. files: 4% (1835/44267) Checking out files: 100% (6683/6683), done.out files: 43% (2891/6683) Checking out files: 100% (556/556), done.g out files: 16% (91/556) Checking out files: 100% (50822/50822), done. Checking out files: 100% (10083/10083), done.t files: 13% (1348/10083) Checking out files: 100% (4307/4307), done.out files: 1% (64/4307) Checking out files: 100% (1132/1132), done.out files: 40% (455/1132) Checking out files: 100% (3494/3494), done.out files: 11% (403/3494) Checking out files: 100% (7954/7954), done.Checking out files: 100% (11685/11685), done.ut files: 1% (215/11685) Checking out files: 100% (383/383), done.ng out files: 12% (46/383) Checking out files: 100% (406/406), done.ng out files: 19% (81/406) Checking out files: 100% (2570/2570), done. out files: 16% (423/2570) Checking out files: 100% (21973/21973), done.Checking out files: 100% (374/374), done.ng out files: 18% (71/374) Checking out files: 100% (1690/1690), done. out files: 29% (503/1690) Checking out files: 100% (376/376), done.ng out files: 12% (46/376) Checking out files: 100% (171/171), done.Checking out files: 100% (181/181), done.ng out files: 44% (81/181) Checking out files: 100% (378/378), done.ng out files: 9% (36/378) Checking out files: 100% (181/181), done.ng out files: 35% (65/181) Checking out files: 100% (2407/2407), done.Checking out files: 100% (177/177), done.ng out files: 42% (76/177) Checking out files: 100% (182/182), done.Checking out files: 100% (50299/50299), done.ut files: 1% (721/50299) Checking out files: 100% (4383/4383), done.Checking out files: 100% (28/28), done.king out files: 28% (8/28) Checking out files: 100% (182/182), done.Checking out files: 100% (1256/1256), done.Syncing work tree: 100% (412/412), done.
源码编译
编译的基本命令:
. build/envsetup.sh lunchmake -j8
很明显,第一次编译会遇到各种各样的问题,通过搜索引擎找到答案,需要先安装某些软件,于是把一口气这几个装完
sudo apt-get install lib32z1-devsudo apt-get install bisonsudo apt-get install libswitch-perl sudo apt-get install gperfsudo apt-get install libxml2-utilssudo apt-get install gcc-4.6-multilib
这个问题:
unset NDK_ROOT
including ./external/webp/Android.mk ...including ./external/webrtc/Android.mk ...build/core/base_rules.mk:134: *** external/webrtc/src/system_wrappers/source: MODULE.TARGET.STATIC_LIBRARIES.libwebrtc_system_wrappers already defined by external/webrtc/src/system_wrappers/source。 停止。
然后就能够继续往下编译了,编译出了userdata.img,ramdisk.img,可是到了最后的一步,挂掉了:
external/chromium_org/third_party/WebKit/Source/wtf/PassRefPtr.h:57: error: undefined reference to 'blink::RenderWidget::deref()'external/chromium_org/third_party/WebKit/Source/wtf/PassRefPtr.h:57: error: undefined reference to 'blink::RenderWidget::deref()'external/chromium_org/third_party/WebKit/Source/wtf/PassRefPtr.h:57: error: undefined reference to 'blink::RenderWidget::deref()'external/chromium_org/third_party/WebKit/Source/wtf/PassRefPtr.h:57: error: undefined reference to 'blink::RenderWidget::deref()'external/chromium_org/third_party/WebKit/Source/core/frame/FrameView.cpp:1955: error: undefined reference to 'blink::RenderWidget::updateWidgetPosition()'external/chromium_org/third_party/WebKit/Source/core/frame/FrameView.cpp:1060: error: undefined reference to 'blink::RenderWidget::updateWidgetPosition()'external/chromium_org/third_party/WebKit/Source/core/frame/FrameView.cpp:1063: error: undefined reference to 'blink::RenderWidget::widgetPositionsUpdated()'external/chromium_org/third_party/WebKit/Source/core/frame/FrameView.cpp:339: error: undefined reference to 'blink::TextAutosizer::updatePageInfoInAllFrames()'external/chromium_org/third_party/WebKit/Source/core/frame/FrameView.cpp:896: error: undefined reference to 'blink::RenderView::shouldDoFullPaintInvalidationForNextLayout() const'external/chromium_org/third_party/WebKit/Source/core/frame/FrameView.cpp:1689: error: undefined reference to 'blink::TextAutosizer::updatePageInfoInAllFrames()'external/chromium_org/third_party/WebKit/Source/core/frame/FrameView.cpp:974: error: undefined reference to 'blink::RenderView::invalidateTreeIfNeeded(blink::PaintInvalidationState const&)'collect2: error: ld returned 1 exit statusmake: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] 错误 1
这个问题是链接时找不到RenderView相关的东东,很是奇怪,搜索引擎上也找不到答案......
琢磨了半天,决定把Webkit相关的东东全部移除掉,这样至少能编译出系统,顶多就是和浏览器相关的用不了....
于是在下面的这三个目录中:
yanchen@yanchen:~/Dev/android50/external$ ls chromiumchromium-libpac/ chromium_org/ chromium-trace/分别执行下面的命令去掉mk文件:
find -name "Android.mk" | xargs -i mv "{}" "{}_bak"
再次编译,卡在了webview.apk上:
including ./system/netd/server/Android.mk ...including ./system/security/keystore-engine/Android.mk ...including ./system/security/keystore/Android.mk ...including ./system/security/softkeymaster/Android.mk ...including ./system/vold/Android.mk ...including ./tools/external/fat32lib/Android.mk ...make: *** 没有规则可以创建“out/target/product/generic/system/app/webview/webview.apk”需要的目标“out/target/product/generic/system/lib/libwebviewchromium.so”。 停止。
于是切换到frameworks/webview目录下,再此执行上面的命令,去掉mk文件:
yanchen@yanchen:~/Dev/android50/frameworks/webview$ find -name "Android.mk" | xargs -i mv "{}" "{}_bak"
再次编译,终于成功了:
including ./tools/external/fat32lib/Android.mk ...build/tools/generate-notice-files.py out/target/product/generic/obj/NOTICE.txt out/target/product/generic/obj/NOTICE.html "Notices for files contained in the filesystem images in this directory:" out/target/product/generic/obj/NOTICE_FILES/srcCombining NOTICE files into HTMLCombining NOTICE files into textInstalled file list: out/target/product/generic/installed-files.txtTarget system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.imgRunning: mkuserimg.sh out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img ext4 system 576716800 out/target/product/generic/root/file_contextsmake_ext4fs -T -1 -S out/target/product/generic/root/file_contexts -l 576716800 -a system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/generic/systemCreating filesystem with parameters: Size: 576716800 Block size: 4096 Blocks per group: 32768 Inodes per group: 7040 Inode size: 256 Journal blocks: 2200 Label: Blocks: 140800 Block groups: 5 Reserved block group size: 39Created filesystem with 1461/35200 inodes and 102199/140800 blocksInstall system fs image: out/target/product/generic/system.imgout/target/product/generic/system.img+ maxsize=588791808 blocksize=2112 total=576716800 reserve=5947392#### make completed successfully (01:14 (mm:ss)) ####
编译完后启动模拟器:
遇到的问题2:
target Java: bouncycastle (out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/classes)javac: 目标发行版 1.5 与默认的源发行版 1.7 冲突make: *** [out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/classes-full-debug.jar] 错误 41
这是java版本不兼容,重新设置以下java path可解决:
source /etc/profile_make_android4.4
profile_make_android4.4的内容:
#export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64export JAVA_HOME=/home/yanchen/Dev/jdk6/jdk1.6.0_43export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
如何刷到手机:
我的是Nexus 5,先下载3个驱动:
https://developers.google.com/android/nexus/drivers#hammerhead
解压放到源码根目录,分别执行这3个sh文件。
然后再次make,速度会很快。
编译完成后,进入out/target/product/hammerhead,执行:
sudo fastboot -w flashall
0 0
- 编译Android 5.1.1源码
- Ubuntu 14.04 编译 Android 5.1.1源码
- android 5.1 源码编译adb
- ANDROID源码编译1 - 初始化编译环境
- Android 4.1.1源码编译
- Android源码编译(1)
- 编译android源码5---编译android源码
- android编译源码5.1.1刷真机nexus5系统
- ubuntu kylin14.04 上 android 5.1.1源码下载,编译
- android源码编译,模块编译
- Nexus 之 Android 5.1源码编译
- Android 5.1源码编译环境搭建
- ubundu11.1 下 android 4.0源码编译
- Android 2.3.1源码编译过程
- android 4.1.1源码下载 -编译方法
- android-4.0.1_r1 源码编译
- android源码编译出错(1)
- 编译android源码1---winx系统硬盘分区
- Java中的堆和栈的区别
- 计算器-1
- 清除浮动
- 获取未来一周的日期和星期数
- Java数组操作的10大方法
- 编译Android 5.1.1源码
- iOS常用网址
- Instanceof
- 数据传递的问题
- 程序员应该避免的5种代码注释
- Android各个API版本
- 处理Java异常三原则(必备)
- SSD基本工作原理
- 计算器-2