Android 是世界上使用最广泛的移动操作系统。 最好的部分,它是完全开源的,通俗地说,这意味着源代码,实际程序可供所有人公开下载、定制和构建自己的 ROM。
有很多定制的 Android 发行版可用,流行的有 CyanogenMod、SlimROM、Paranoid Android、AOKP、Liquid Smooth、MIUI、Xylon、Ice Cold Jelly 等。
对于今天的指南,我们将编译 CyanogenMod 10.2,这是最流行的 Android 售后市场 ROM。 该过程与所有自定义 ROM 的 99% 相同,因此本指南也可用作编译其他 ROM 的参考。
先决条件
- 具有现成的内核和设备源的 Android 手机,已经扎根并安装了自定义恢复。
- 64 位 Linux 发行版(我们更喜欢 Ubuntu)。
- 您的硬盘上至少有 100GB 可用空间。
- Linux 终端命令的工作知识。
- 相当快的互联网连接。
注意事项: 64 位 Linux 操作系统是必须的,并且必须是本机安装,而不是虚拟机。
设置您的构建机器
1. 安装您选择的 Linux 操作系统: 64位版本,根据官方说明。 (本指南假设我们运行的是 Ubuntu 13.04)。 使用 100GB 交换分区保留至少 16GB 的分区。
2. 安装以下软件包列表: 打开终端应用程序,然后键入
[html]sudo apt-get 安装[/html]
按回车键,它会提示你输入密码。
软件包列表
[HTML]
混帐核心
格努普
柔性
野牛
蟒蛇
RAR
原始awk
呆子
p7zip-完整
性能
libsdl1.2-dev
libesd0-dev
libwxgtk2.6-dev
squashfs-工具
必要的
拉链
卷曲
libncurses5-dev
zlib1g-dev
png粉碎
调度工具
libc6-dev
x11proto-core-dev
libx11开发
libg11-台面开发
明格威32
托弗罗多斯
蟒蛇降价
libxml2-实用程序
g++-多库
lib32z1-dev
ia32-库
lib32ncurses5-dev
lib32readline-gplv2-dev
gcc-multilib
g++-多库
xslt过程
[/ html]
3. 为 Linux 1.6 位安装 Java JDK 64: 文件名应该是jdk-6u##-linux-x64.bin,##是版本号。 将下载的包移动到您的主目录。 打开终端应用程序并运行以下命令集:
[HTML]
sudo apt-get purge openjdk-\* 冰茶-\* 冰茶6-\*
须藤 mkdir –p /opt/java/64/
须藤cp jdk-6u##-linux-x64.bin /opt/java/64
向南-
cd /opt/java/64
chmod a+x jdk-6u##-linux-x64.bin
./jdk-6u##-linux-x64.bin
出口
[/ html]
现在,我们必须将 JDK Path 添加到 .bashrc
[HTML]
sudo gedit~ / .bashrc
[/ html]
在文本文件的末尾添加这些行
[HTML]
# Java 路径
导出 JAVA_HOME=/opt/java/64/jdk1.6.0_##
导出路径=$PATH:$JAVA_HOME/bin
[/ html]
4. 安装安卓SDK: 打开终端应用程序
[HTML]
CD〜
mkdir android && cd android
mkdir SDK
[/ html]
下载 Android SDK 从 http://developer.android.com/sdk/index.html. 将包内容解压到 ~/android/sdk 我们必须将 Android SDK 路径添加到 .bashrc
[HTML]
sudo gedit~ / .bashrc
[/ html]
将这些行添加到文本文件的末尾:
[HTML]
# Android SDK 路径
导出 PATH=$PATH:~/android/sdk
导出 PATH=$PATH:~/android/sdk/platform-tools
导出 PATH=$PATH:~/android/sdk/tools
[/ html]
现在,通过键入安装 Android SDK 工具
[HTML]
安卓
[/ html]
5.设置你的github账号和远程仓库: 如果 CyanogenMod 正式支持您的手机,您可以跳过此步骤。 去github.com,为自己创建一个帐户。 对于本指南,我将您的用户名视为“用户”。
访问 'github.com/CyanogenMod/android',按 Fork。 远程清单将被分叉,并在您的个人仓库中可用。
现在,转到“github.com/user/android”。 打开文件 default.xml,按编辑。 找到这一行:
[HTML]
[/ html]
并将其替换为
[HTML]
[/ html]
我正在考虑将您的设备的内核源代码、设备源代码和 Android 4.3 的供应商库放在
[HTML]
github.com/user2/kernel_source
github.com/user2/device_source
github.com/user2/device-common_source
github.com/user2/供应商
[/ html]
我假设分支被命名为'jb4.3'。 您可以在实际的 repo 中找到确切的名称。 然后,在文件末尾添加这些行,并根据您设备的源代码修改它们。
[HTML]
[/ html]
提交您的更改。 您的远程清单已准备好部署。
6.安装回购命令: 打开终端并输入
[HTML]
CD〜
mkdir〜/箱
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a + x ~/bin/repo
[/ html]
我们必须将 Repo 路径添加到 .bashrc
[HTML]
sudo gedit~ / .bashrc
[/ html]
将此行添加到文本文件的末尾
[HTML]
导出路径=$PATH:~/bin
[/ html]
7. 获取ROM源代码: 打开终端并输入
[HTML]
mkdir ~/安卓/厘米
cd ~/安卓/厘米
[/ html]
如果您需要第 5 步,请输入
[HTML]
回购初始化 –u git://github.com/user/android.git –b cm-10.2
[/ html]
如果您的设备正式支持 CyanogenMod 10.2,请输入
[HTML]
回购初始化 –u git://github.com/CyanogenMod/android.git –b cm-10.2
[/ html]
现在运行
[HTML]
回购同步 –j16
[/ html]
去喝杯咖啡或吃顿饭,这需要很长时间。 源代码的大小超过 10GB,因此需要相当长的时间。
8. 设置设备特定的东西: 如果您的设备正式支持 CyanogenMod 10.2,则打开终端并输入
[HTML]
cd ~/安卓/厘米
. build/envsetup.sh && 早餐
[/ html]
需要一些时间,设备源大小约为3GB。 然后,您需要在手机上安装官方CM10.2,以USB Debugging模式连接到您的PC,并运行以下命令:
[HTML]
亚行根
cd ~/android/cm/设备/ / /
./提取文件.sh
[/ html]
如果您的设备不正式支持 CyanogenMod 10.2,那么您在此步骤中无所事事,源已经在等着您。
9. 下载 Prebuilt Stuff 并设置工具链: 打开终端并输入
[HTML]
cd ~/android/cm/供应商/cm
sh ./get-prebuilts
[/ html]
现在,我们必须将工具链路径添加到 ./bashrc
[HTML]
cd ~/安卓/厘米
sudo gedit~ / .bashrc
[/ html]
将这些行添加到文本文件的末尾
[HTML]
# Android 工具链
出口 ARCH=臂
导出 CCOMPILE=$CROSS_COMPILE
出口 CROSS_COMPILE=arm-eabi-
导出路径=$PATH:~/android/cm/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
[/ html]
10. 构建你的 ROM: 所以,一切都很好,准备好了。 是时候构建 ROM 了。 打开终端并输入
[HTML]
cd ~/安卓/厘米
. 构建/envsetup.sh
早午餐
[/ html]
是时候去睡午觉了。 在普通计算机上构建 ROM 需要数亿年的时间。 好吧,这有点夸张,但在我的家用 PC(Core i5 第二代,2GB RAM)上,从头开始构建需要 8 个多小时。 希望不会有错误,并且构建将正常完成。 你会得到输出包
[HTML]
~/android/cm/out/target/product/ /cm-10.2-something-UNOFFICIAL- 。压缩
[/ html]
是时候在手机上安装新编译的 ROM 了。 从“www.goo.im/gapps”下载适用于相应 Android 版本的 Google Apps 软件包。 将这两个包放入您的手机中,并在恢复模式下刷入它们。 瞧,您自己编译的 ROM 现在正在运行您的设备。
好了,你学会了如何编译 ROM。 那么现在怎么办?
更新您的源 ROM
要获取本地下载的源代码的新源代码更新,请打开终端,然后键入
[HTML]
cd ~/安卓/厘米
回购同步 –j16
[/ html]
要构建您的 ROM,请在更新源代码后,打开终端,然后键入
[HTML]
cd ~/安卓/厘米
使安装干净
find ./out/ -name 'build.prop' | xargs rm
找到 ./out/ -name 'cm_ -target_files-eng.*.zip' | xargs rm
. 构建/envsetup.sh
早午餐
[/ html]
由于您不是从头开始重新构建,而是按原样重新构建,因此花费的时间会大大减少,在大多数情况下只需大约 15-30 分钟。 您应该每周左右同步您的本地源,以保持您的本地源新鲜。
清理你的工作目录
要完全清理您的工作目录(阅读:将源文件夹恢复为库存状态),请打开终端并键入以下命令。
[HTML]
cd ~/安卓/厘米
使安装干净
搞砸
[/ html]
请记住,运行这些命令后,您的所有输出数据都将被删除,因此下一次构建将再次需要 3-4 小时,因为一切都是从头开始构建的。 如果你的硬盘分区很小,比如 100GB 左右,你应该每 4 次构建清理一次你的工作目录,否则你会用完硬盘空间。
通过 CCACHE 加速您的构建
构建 ROM 需要很多时间。 但是使用 CCACHE 可以减少大约 30-45% 的时间。 CCACHE 代表编译器缓存,它缓存早期构建的编译输出,以便可以在以后的构建中重用。
请注意,CCACHE 需要硬盘上的大量空间来缓存内容,因此当且仅当您的硬盘分区在 200GB 或更高的某个位置时才推荐使用它。 要设置 CCACHE,请打开终端并输入:
[HTML]
cd ~/安卓/厘米
出口 USE_CCACHE=1
导出 CACHE_DIR=~/.ccache
预建/misc/linux-x86/ccache/ccache –M 50G
[/ html]
您可以将分配给 CCACHE 的最大大小从 50GB 更改为您想要的任何大小,但至少应使用大约 30GB 以获得良好的结果。
从其他 ROM 获取提交
您可以从其他 ROM 源代码中挑选功能。 举例来说,我想从存储库“github.com/user/reporepo”中选择功能 A,提交 ID 为“12345”。
您导航到本地源代码中的包并在终端中运行它们。
[HTML]
光盘~/
git 获取 https://github.com/user/reporepo
git 樱桃挑选 12345
[/ html]
著名Android自定义ROM发行版源代码链接
CyanogenMod的 – https://github.com/CyanogenMod
超薄ROM – https://github.com/SlimRoms
ParanoidAndroid – https://github.com/ParanoidAndroid
AOKP – https://github.com/AOKP
液体平滑 – https://github.com/liquidsmooth
木纹只读存储器 –
冰镇果冻 – https://github.com/IceColdJelly
所以,伙计们,这是一个简单、直接的指南,可以通过 10 个简单的步骤编译几乎任何基于 Android AOSP 的 ROM。 虽然我的指南侧重于 CyanogenMod,但您只需修改存储库链接即可编译几乎所有 AOSP ROM。 或者,您可以选择功能、提交它们、修改内容并创建您自己的个性化 ROM,也许也可以在线共享您的 ROM?
巨大的
嗨,感谢今天的这篇文章,这个 android 世界像流行病一样蔓延,这是一篇不错的文章
陪审团规则
令人印象深刻的作品! 我真的很想为我的应用程序创建自己的代码!
Jessica
我真的很喜欢看到这段代码,但我无法理解这段代码的某些部分。
山丹丹
嗨,肖纳克,
Android在全球范围内确实广为流传。 感谢这篇精彩的帖子
苏茜·兰普曼
伟大的。 现在,如果我只能理解这些术语。 然后我可以编译android ROM