如何在 Ubuntu 13.04 上从源代码构建 Android 内核

如何在 Ubuntu 13.04 上从源代码构建 Android 内核

我正在尝试从 Ubuntu 13.04 上的源代码构建 Android,但存在许多问题:

  1. 设置环境问题(错误的工具链)
  2. 编译/构建错误

答案1

在花了一整天时间设置环境并从源代码构建 Android 之后,我想分享我发现的一些有用的信息。

我的系统是华硕 S56C (i7-3537U),4GB RAM。我下载了主分支,目前是android-4.0.1_r1

首先要做的是设置环境。这在来源.android.com。有三点需要注意:

  1. 尽管来源.android.com提供了使用 make 3.81 - 3.82 的选项,如果您没有设置 3.81,构建将失败。因此,您应该使用这个。
  2. 我最初安装了 openjdk-6-jre,但这是错误的 jre 版本。以下此链接,我安装oracle-java6-installer
  3. 关于配置 ccache. 应为prebuilt/misc/linux-x86/ccache/ccache -M 50G

下面是我从中得出对后续源/make 文件的更改的链接列表。

  1. [指南] 使用 openSuSE 12.1 从源代码构建 CyanogenMod 9
  2. 修复 CyanogenMod 9 上的 Dalvik 编译错误
  3. Debian Bug 报告日志
  4. lenario 错误报告
  5. 在 64 位 Arch Linux 上构建 Android 4.0.4(主分支)

因此,做出了以下更改:

  1. 在第 31 行frameworks/base/tools/aapt/Android.mk,添加-fpermissive

    LOCAL_CFLAGS += -Wno-format-y2k -fpermissive
    
  2. 在 的第 64 行frameworks/base/libs/utils/Android.mk,添加-fpermissive

    LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
    
  3. 在 的第 183 行frameworks/base/libs/rs/Android.mk,添加-fpermissive

    LOCAL_CFLAGS += -Werror -Wall -Wno-unused-parameter -Wno-unused-variable -fpermissive
    
  4. 在第 22 行frameworks/compile/slang/Android.mk,删除-Werror

    local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter
    
  5. 在 的第 125 行frameworks/compile/linkloader/Android.mk,替换LOCAL_LDFLAGS with LOCAL_LDLIBS

    LOCAL_LDLIBS := \
      -lpthread \
      -ldl
    
  6. 在 的第 94 行external/oprofile/libpp/format_output.h,删除说明符mutable

  7. 在第 41 行external/gtest/include/gtest/internal/gtest-param-util.h之后#include <vector>,添加#include <stddef.h>

  8. 在 的第 52 行和第 71 行external/gtest/src/Android.mk,添加-fpermissive

    LOCAL_CFLAGS += -O0 -fpermissive 
    LOCAL_CFLAGS += -O0 -fpermissive
    
  9. 在第 25 行development/tools/emulator/opengl/Android.mk,添加-fpermissive

    EMUGL_COMMON_CFLAGS := -DWITH_GLES2 -fpermissive
    
  10. 在第 7 行之后development/tools/emulator/opengl/host/renderer/Android.mk添加新行

    LOCAL_LDLIBS += -lX11
    

我希望这能让您在构建 Android 时更加轻松。

相关内容