问题解决 参考

1)/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 权限不够 

解决:chmod a+x prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc

2)/bin/bash: build/core/find-jdk-tools-jar.sh: 权限不够

/bin/bash: build/tools/findleaves.py: 权限不够

chmod  a+x   build/core/find-jdk-tools-jar.sh

chmod  a+x   build/tools/findleaves.py

3)Your version is: java version "1.5.0".

The correct version is: 1.6.

解决:    新立得 上 openjdk-6-jdk

或到这里下: http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html

4)/bin/bash: g++: 未找到命令

解决:apt-get    install  g++

5)external/clearsilver/cgi/cgi.c:22:18: 致命错误: zlib.h:没有那个文件或目录

解决:apt-get install zlib1g-dev

6)out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误 1

解决方法:

gedit frameworks/base/libs/utils/Android.mk

Change the line:

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

To:

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)  -fpermissive

7)/bin/bash: flex: 未找到命令

解决:apt-get install flex

8)out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1

                          apt-get install libncurses5-dev 

9)out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 错误

解决:  修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:

将以下语句

                  HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

修改为

                  HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

或者

原因:

因机器上的gcc版本过高,需替换成4.4.6重新进行编译。

解决方法:

1、安装4.4版本的gcc和g++

$ sudo apt-get install gcc-4.4
$ sudo apt-get install g++-4.4

2、设置gcc版本,使gcc链接到gcc-4.4

$ ls -l /usr/bin/gcc*lrwxrwxrwx 1 root root      7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6$ cd /usr/bin
$ sudo mv gcc gcc.bak
$ sudo ln -s gcc-4.4 gcc

3、设置g++版本,使g++链接到g++-4.4

$ sudo mv g++ g++.bak
$ sudo ln -s g++-4.4 g++
复制代码

4、设置完毕后,重新进行编译即可

10) sh: gperf: not found
              calling gperf failed: 32512 at ./makeprop.pl line 96.
               make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] 错误 25

make: *** 正在删除文件“out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h”

解决方法:apt-get install libgl1-mesa-dev

结果:Android 编译完成后,将在根目录中生成一个 out 文件夹,所有生成的内容均放置在这个文件夹中。
              out 文件夹如下所示:

out/
|-- CaseCheck.txt
|-- casecheck.txt
|-- host
|    |-- common
|    `-- linux-x86
`-- target
      |-- common
      `-- product

主要的两个目录为 host和 target,前者表示在主机(x86)生成的工具,后者表示目标机(模认为 ARMv5)运行的内容。
host 目录的结构如下所示:
out/host/

|-- common
|     `-- obj  (JAVA 库)
`-- linux-x86
     |-- bin   (二进制程序)
     |-- framework     (JAVA 库,*.jar 文件)
     |-- lib       (共享库*.so)
     `-- obj      (中间生成的目标文件)

host 目录是一些在主机上用的工具,有一些是二进制程序,有一些是 JAVA 的程序。
target 目录的结构如下所示:
out/target/

|-- common
|     |-- R   (资源文件)
|     |-- docs
|     `-- obj   (目标文件)
`-- product
      `-- generic

其中 common 目录表示通用的内容,product 中则是针对产品的内容。
    在 common 目录的 obj 中,包含两个重要的目录:
          APPS 中包含了 JAVA 应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成 Android 应用程序的 APK 包。
         JAVA_LIBRARIES 中包含了 JAVA 的库,每个库对应其中一个子目录。

在默认的情况下,Android 编译将生成 generic 目录,如果选定产品还可以生成其他的目录。

generic 包含了以下内容:

out/target/product/generic/

|-- android-info.txt
|-- clean_steps.mk
|-- data
|-- obj
|-- ramdisk.img
|-- root
|-- symbols
|-- system
|-- system.img
|-- userdata-qemu.img
`-- userdata.img

编译也可以:$ make -j4

这里-j4表示用四个线程编译,4表示线程数,读者可根据自己机器的情况设置(如机器为单CPU双核处理器,可设置为-j2或-j4,即该数为CPU内核总数或内核总数的2倍。)

成功后:

Install: out/target/product/generic/system/app/Contacts.apk

Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp

Combining NOTICE files: out/target/product/generic/obj/NOTICE.html

Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img

Install system fs image: out/target/product/generic/system.img

Installed file list: out/target/product/generic/installed-files.txt

运行编译成功的文件:

$ vi .bashrc  添加:

export Android_PRODUCT_OUT=~/桌面/android2.3.4_32bit/out/target/product/generic  
        Android_PRODUCT_OUT_BIN=~/桌面/android2.3.4_32bit/out/host/linux-x86/bin  
        export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};

$ source .bashrc

$ emulator -image system.img -data userdata.img -ramdisk ramdisk.img

错误:

emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.

If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).

Otherwise, follow the instructions in -help-disk-images to start the emulator

原因是你没有建立avd,建立方法如下:

1、cd到bin 目录下,终端中输入 ./android 执行该脚本,启动 Android SDK Manager -> Tools -> Manage AVDs -> 打开 Android Virtual Device Manager 后,新建一个avd,然后再执行emulator -avd my_avd -partition-size 512 便可正常

错误:

SWT folder '/root/桌面/android2.3.4_32bit/out/host/linux-x86/framework/x86' does not exist.
         Please export ANDROID_SWT to point to the folder containing swt.jar for your platform.

错误:Error: Error parsing the sdk.
            Error: /root/桌面/android2.3.4_32bit/out/host/linux-x86/platforms is missing.
            Error: Unable to parse SDK content.

但在out/host/linux-x86/sdk/android-sdk_eng.lawrencekang_linux-x86/tools目录下 ./android 则可以 
            原来在out/host/linux-x86/sdk/android-sdk_eng.lawrencekang_linux-x86/下面有platforms目录,可见android会查找上一级目录下的platforms目录
    将platforms 和add-ons copy到 out/host/linux-x86下面然后运行 android就可以了

二,编译SDK

$ make  sdk

生成:out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86.zip

将 out/host/linux-x86/sdk/android-sdk_eng.huangjx_linux-x86.zip 解压到本地目录。进入tools 目录,输入下面的命令创建 AVD:

$ ./android create avd -t 1 -c 128M -n froyo -s HVGA           //建立目标机器 froyo

出现错误:Error: Target id is not valid. Use 'android list targets' to get the target ids.

Android 2.2 is a basic Android platform.

Do you wish to create a custom hardware profile [no]

Created AVD 'froyo' based on Android 2.2, with the following hardware config:

hw.lcd.density=160

输入下面的命令,启动模拟器:

$ ./emulator -avd froyo -partition-size 160 &

三,编译完成SDK 就要启动模拟器
        Android list 查看可以用的 sdk 和 avd  发现 为空自己编译的android sdk无法识别各版本platform的问题
        进入编译结果目录 out/host/linux-x86/sdk/android-sdk_eng.cmoaciopm_linux-x86/tools 发现android-2.3是存在的,那为什么SDKManager检测不到呢?
        SDKManager无法检测到Installpackages的原因了,我所检出的androidgingerbread源代码编译出的sdk目录结构与SDKManager检测逻辑是不一致的。
        调整: android在2.3对sdk目录结构进行了调整,将platform下面的tools文件夹移动到SDK根目录下,命名为platform-tools(里面包含了该platform的aapt和adb等工具。这样,platform在各操作系统下都统一了,不需要再为不同操作系统发布不同的platform,仅发布不同的platform-tools即可)。
         可见gingerbreak代码分支中sdkmanager的代码不是“最新的”,没有与编译出来的sdk目录结构保持一致。
         做了软链接,骗过sdkmanager,重启检测一切正常
         ln  -sf   /home/justin/android/src/out/host/linux-x86/sdk/android-sdk_eng.justin_linux-x86/tools        ~/android/sdk
        根据自己的路径设置吧

启动虚拟机出现

            SDL init failure, reason is: No available video device: OnUbuntu64
        问题需要安装
                 apt-get install ia32-libs lib32stdc++6
问题Cannot load 32-bit SWT libraries on 64-bit JVM
                 1.For Eclipse, go to Eclipse -> Preferences -> Java -> Installed JRE
                  2.For Flash Builder, go to Flash Builder -> Preferences -> Java ->Installed JREs Then, edit the selected Java VM, adding the following value forthe Default VM Arguments field -d32

启动编译好的源码(模拟器)

1)自己有一个可以运行的 SDK库,将编译好的 SDK 版本拷贝到platforms 文件夹下面

Android】源码编译 ---zzz相关推荐

  1. Android 源码编译及常见错误及解决方法

    Android 源码编译及常见错误及解决方法 参考文章: (1)Android 源码编译及常见错误及解决方法 (2)https://www.cnblogs.com/kyyblabla/p/360393 ...

  2. 【Android开发】构建Android源码编译环境

    原文:http://android.eoe.cn/topic/android_sdk 构建Android源码编译环境 123456789 10 11 12 13 14 15 16 17 18 $ su ...

  3. android源码编译出错的原因

    (1)gcc的版本过高,由于android源码编译要求为4.3,如果你的gcc版本为4.4,那你的编译可能会失败的!我的系统是ubuntu 10.04,默认的gcc版本为4.4,gcc-4.4太严格, ...

  4. [Android Pro] Android源码编译之Nexus5真机编译

    reference to : http://blog.csdn.net/liu1075538266/article/details/51272398 1.   前言 在Android安全的研究工作中, ...

  5. Android 源码编译详解【合集篇】

    Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...

  6. Android源码编译(基于Ubuntu18.0.4)

    文章目录 一.环境搭建 硬件要求 软件要求 操作系统和 JDK 主要软件包 软件安装 Git安装 repo工具安装 安装 openJDK 8 其他依赖安装 二.源码下载 建立源码文件夹 初始化仓库 源 ...

  7. Android 源码编译技巧--模块清理

    参考之前的 Android 源码编译技巧–模块编译_南国樗里疾的博客-CSDN博客 https://blog.csdn.net/weixin_44021334/article/details/1069 ...

  8. Android源码编译make的错误处理

    https://www.linuxidc.com/Linux/2011-11/47411.htm Android源码下载:官方下载 或参考android源码下载方式 Android编译版本: PLAT ...

  9. linux系统编译时make出错,Android源码编译make的错误处理

    Android编译版本:PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61- ...

  10. Android源码编译环境搭建教程 (一) - Ubuntu系统构建

    Android源码编译环境搭建教程 (一) - Ubuntu系统构建 本教程为感兴趣的同学提供Android源码编译的环境搭建,当然这里都是基于windows系统,mac系统也差不多,将相应的软件替换 ...

最新文章

  1. Java中有几种类型的流?以及常见的实现类都有哪些?
  2. wsl ubuntu update显示err: 404 Not Found解决方法
  3. 网站建设技术――智能建站系统
  4. Android RecyclerView 性能优化总结
  5. 《图书管理系统——java》
  6. iOS Airplay Screen Mirroring 同屏技术详解
  7. SAP云平台Neo环境支持nodejs module吗
  8. 深度学习与机器学习到底什么关系?
  9. php背景图片随页面大小改变,css背景图根据屏幕大小自动缩放
  10. Python爬虫项目---批量下载深圳证券信息
  11. iptables命令详解
  12. java在数组中放入随机数_如何在Java中随机播放数组
  13. Arduboy 游戏机制作参考教程
  14. HTC扣动板机出现射线。获得射线与VR中物体的交点并用linerender表示出来
  15. 保存Google、Bing翻译的语音
  16. 微信开发者工具 the permission value is offline verifying 异常
  17. 记录一下C#使用SmtpClient发送网易163、126邮件使用sll协议失败的坑
  18. numpy_absolute函数
  19. phpmywind 常用函数 整理中……
  20. 移动开发之我见 ——移动WEB

热门文章

  1. Kaggle---Toxic Comment Classification Challenge
  2. 2019展望|二手车电商:停不下来的混战,但是大家都要准备过冬了
  3. phpmyadin安装配置
  4. Scroll View 滚动窗口
  5. 美团OCTO万亿级数据中心计算引擎技术解析
  6. hdu 4043 FXTZ II [ 概率 + Java大数]
  7. 记录一次VCSA添加ESXI主机失败的处理过程
  8. 端口映射/dmz主机_在DMZ中使用Notes / Domino SMTP
  9. Mac Safari 配置 IE 代理 (支持 IE 调试)
  10. log4j2:占位符引起的内存泄漏bug