设为首页 收藏本站
查看: 896|回复: 0

[经验分享] Ubuntu12.04 编译android源代码及生成模拟器经历分享

[复制链接]

尚未签到

发表于 2018-5-5 09:45:57 | 显示全部楼层 |阅读模式
  from:http://blog.csdn.net/yrnaaa/article/details/7745680
  废话少说,进入正题
  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]
  修改 build/core/combo/HOST_linux-x86.mk文件的line 56
  HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
  改为
  HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
  2.
  In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0:
  external/oprofile/libpp/format_output.h:94:22: 错误: reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive]
  make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] 错误 1
  修改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 <cstddef>, 位置如下:#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 -Werror
  local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter
  参考于:
  http://blog.csdn.net/zhbpd/article/details/7680835
  http://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] 错误 41
  make: *** 正在等待未完成的任务....
  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>  所需空间不足
  修改:emulator 加入参数 -partition-size 1024 (大于系统所要求的尺寸)即可,例如 emulator -partition-size 1024
参考:http://www.iyunv.com/os/201205/130064.html

运维网声明 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-456045-1-1.html 上篇帖子: ubuntu 10.10 编译Android2.2问题解决 下篇帖子: 关于ubuntu下访问windows的共享目录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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