我正在尝试从 Ubuntu 13.04 上的源代码构建 Android,但存在许多问题:
- 设置环境问题(错误的工具链)
- 编译/构建错误
答案1
在花了一整天时间设置环境并从源代码构建 Android 之后,我想分享我发现的一些有用的信息。
我的系统是华硕 S56C (i7-3537U),4GB RAM。我下载了主分支,目前是android-4.0.1_r1
首先要做的是设置环境。这在来源.android.com。有三点需要注意:
- 尽管来源.android.com提供了使用 make 3.81 - 3.82 的选项,如果您没有设置 3.81,构建将失败。因此,您应该使用这个。
- 我最初安装了 openjdk-6-jre,但这是错误的 jre 版本。以下此链接,我安装
oracle-java6-installer
了 - 关于配置 ccache. 应为
prebuilt/misc/linux-x86/ccache/ccache -M 50G
下面是我从中得出对后续源/make 文件的更改的链接列表。
- [指南] 使用 openSuSE 12.1 从源代码构建 CyanogenMod 9。
- 修复 CyanogenMod 9 上的 Dalvik 编译错误
- Debian Bug 报告日志
- lenario 错误报告
- 在 64 位 Arch Linux 上构建 Android 4.0.4(主分支)
因此,做出了以下更改:
在第 31 行
frameworks/base/tools/aapt/Android.mk
,添加-fpermissive
LOCAL_CFLAGS += -Wno-format-y2k -fpermissive
在 的第 64 行
frameworks/base/libs/utils/Android.mk
,添加-fpermissive
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
在 的第 183 行
frameworks/base/libs/rs/Android.mk
,添加-fpermissive
LOCAL_CFLAGS += -Werror -Wall -Wno-unused-parameter -Wno-unused-variable -fpermissive
在第 22 行
frameworks/compile/slang/Android.mk
,删除-Werror
local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter
在 的第 125 行
frameworks/compile/linkloader/Android.mk
,替换LOCAL_LDFLAGS with LOCAL_LDLIBS
LOCAL_LDLIBS := \ -lpthread \ -ldl
在 的第 94 行
external/oprofile/libpp/format_output.h
,删除说明符mutable
在第 41 行
external/gtest/include/gtest/internal/gtest-param-util.h
之后#include <vector>
,添加#include <stddef.h>
在 的第 52 行和第 71 行
external/gtest/src/Android.mk
,添加-fpermissive
LOCAL_CFLAGS += -O0 -fpermissive LOCAL_CFLAGS += -O0 -fpermissive
在第 25 行
development/tools/emulator/opengl/Android.mk
,添加-fpermissive
EMUGL_COMMON_CFLAGS := -DWITH_GLES2 -fpermissive
在第 7 行之后
development/tools/emulator/opengl/host/renderer/Android.mk
添加新行LOCAL_LDLIBS += -lX11
我希望这能让您在构建 Android 时更加轻松。