from:
废话少说,进入正题
1. 下载源代码。
2. 启动终端,进入android工作目录。
3. 编译手机,make -jN编译,N代表数字,我的cpu是i5,我用的是make -j4,期间出现很多错,下面会一一介绍。
4. 编译模拟器,make sdk -j2。网上抄来的命令,我没改成j4试验。网上说大概30分钟,我这大概编译了1个多小时,期间电脑特卡,基本什么都干不了。
【 source build/envsetup.sh】
【lunch sdk-eng】
【make sdk -j2】
5. 进入out/host/linux-x86/sdk/android-sdk_eng.t_linux-x86/tools$这个目录。
6. 输入【./android list targets】可以察看sdk版本号。
7. 创建avd,【 ./android create avd -n mydroid -t 1】。
8. 执行命令【 ./mksdcard 4000M .img】
9. 运行模拟器【 ./emulator -avd mydroid】。下面说一下编译android源码错误解决方法:
1. 命令行>:0:0: 错误: “_FORTIFY_SOURCE”重定义 [-Werror]
修改external/oprofile/libpp/format_output.h:94行 mutable counts_t & counts;改为: counts_t & counts;
3.external/gtest/src/../include/gtest/internal/gtest-param-util.h:122:11: 错误: ‘ptrdiff_t’不是一个类型名In file included from external/gtest/src/../include/gtest/gtest-param-test.h:157:0, from external/gtest/src/../include/gtest/gtest.h:69, from external/gtest/src/gtest_main.cc:32:修改文件external/gtest/include/gtest/internal/gtest-param-util.h中添加#include#include <gtest/internal/gtest-linked_ptr.h>#include <gtest/internal/gtest-internal.h>#include <cstddef> 4. /home/t/WORKING_DIRECTORY/external/llvm/lib/Support/Mutex.cpp:143: undefined reference to `pthread_mutex_trylock' collect2: ld 返回 1 make: *** [out/host/linux-x86/obj/EXECUTABLES/test-librsloader_intermediates/test-librsloader] 错误 1 make: *** 正在等待未完成的任务.... In file included from external/gtest/src/gtest-all.cc:38:0: 在external/llvm/llvm-host-build.mk中增加如下代码:LOCAL_LDLIBS := -lpthread -ldl 5. frameworks/compile/slang/slang_rs_export_foreach.cpp:247:23: 错误: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable] host C++: llvm-rs-cc <= frameworks/compile/slang/slang_rs_reflection.cpp cc1plus: all warnings being treated as errors make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] 错误 1, 位置如下:
修改frameworks/compile/slang/Android.mk文件:#local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werrorlocal_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter
参考于:http://blog.csdn.net/zhbpd/article/details/7680835http://blog.csdn.net/forlong401/article/details/7066893
6.cts/apps/CtsVerifier/src/com/android/cts/verifier/PassFailButtons.java:191: android.app.Activity 中的 onCreateDialog(int,android.os.Bundle) 无法实现 com.android.cts.verifier.PassFailButtons.PassFailActivity 中的 onCreateDialog(int,android.os.Bundle);正在尝试指定更低的访问权限;为 public private static <T extends android.app.Activity & PassFailActivity> ^1 错误make: *** [out/target/common/obj/APPS/CtsVerifier_intermediates/classes-full-debug.jar] 错误 41make: *** 正在等待未完成的任务....DroidDoc took 2702 sec. to write docs to out/target/common/docs/doc-comment-check修改cts/Android.mk文件,去掉两行include代码。#include cts/CtsTestCoverage.mk#include $(call all-subdir-makefiles)7. 如果按照google网站的说明下载,编译,解决完上面6个错误就可以编译完成了。我的配置是:
ubuntu12.04
android 4.0.3
如果您和我的配置一样,又想一次编译成功,就直接按上面说的修改这6出文件,make就等着结果吧!
8. 运行 emulator 提示 emulator: WARNING: system partition size adjusted to match p_w_picpath file (166 MB > 66 MB)
所需空间不足修改:emulator 加入参数 -partition-size 1024 (大于系统所要求的尺寸)即可,例如 emulator -partition-size 1024
参考: