lineageos-libra(translate)[2019-07-17]
有关天秤座的信息
警告:小米米4c不再维护。对于想要进行私有构建甚至重新启动官方支持的开发人员,可以使用构建指南。
获取适用于小米Mi 4c的LineageOS
安装
构建指南
更新指南
特殊启动模式
-
恢复:关闭设备,按住Volume Up+ Power。按住两个按钮,直到屏幕上出现“MI”标志,然后松开。
-
下载:关闭设备,按住Volume Down+ Power。按住两个按钮,直到屏幕上出现“FASTBOOT”字样,然后松开。
在线寻求帮助
您可以在我们的subreddit或freenode上的#LineageOS中找到LineageOS的帮助。
发布 2015年9月
系统芯片 Qualcomm MSM8992 Snapdragon 808
内存 2/3 GB
CPU Hexa-core Cortex-A53和Cortex-A57 4 x 1.44 GHz和2 x 1.82 GHz
建筑Architecture arm64
GPU Adreno 418
网络
-
2G频段:850 900 1800 1900 GSM
-
3G频段:850 900 1800 2100 HSDPA
- 4G频段:1(2100),3(1800),7(2600),38(2600),39(1900),40(2300),41(2500)LTE
存储 16/32
GB
屏幕 1920x1080(441
PPI) IPS LCD
蓝牙 4.1与A2DP的
Wi-Fi 802.11
a/b/g/n/ac,双频,Wi-Fi
Direct,热点
外设
-
A-GPS
-
加速度计
-
双SIM卡
-
GLONASS
-
全球定位系统
-
陀螺仪
-
霍尔效应传感器
-
IR Blaster
-
光传感器
-
接近传感器
- USB OTG
相机 2
-
13 MP,相位检测自动对焦,双LED(双音)闪光灯
- 5 MP,没有闪光灯
外形尺寸138.1毫米(5.44英寸)(高)69.6毫米(2.74英寸)(宽)7.8毫米(0.31英寸)(d)
电池 不可拆卸的锂离子3080毫安
为天秤座建造
注意:此页面是根据设备的信息自动为小米Mi 4c生成的,位于 此处。您可以在此Wiki上找到每个官方支持的设备的类似说明。
介绍
这些说明将有助于您开始使用小米Mi
4c,解锁引导程序(如有必要),然后为您的设备下载所需的工具以及LineageOS的最新源代码(基于Google的Android操作系统)
。使用这些,您可以从源代码构建LineageOS和LineageOS恢复映像,然后将它们安装到您的设备。
很难说遵循这些说明需要多少经验。虽然本指南当然不是非常非常不熟悉,但这些步骤也不需要在软件开发方面获得博士学位。有些读者可以毫不费力地轻松完成这些步骤。其他人可能会在最基本的操作上挣扎。由于人们的经历,背景和直觉各不相同,因此通过阅读以确定您是否感到舒适或是否已经过头可能是一个好主意。
请记住,您承担尝试这一切的所有风险,但您将获得回报!启动你在家里烤制的新操作系统是非常令人满意的:)。一旦你成为Android构建忍者,就不再需要等待任何人的“夜间”构建。无论何时何地,您都可以轻松获得从代码到运行设备构建完整操作系统的技能。你去哪里
-
也许你会添加一个功能,修复一个错误,添加一个翻译,或者使用你学到的东西来构建一个新的应用程序或端口到新设备
- 或许你永远不会再建立
- 这一切都取决于你。
你需要什么
-
A小米米4c
-
相对较新的64位计算机(Linux,macOS或Windows),具有合理数量的RAM和大约100 GB的可用存储空间(如果您启用
ccache
或构建多个设备,则更多)。内存越少,构建时间越长(目标为8 GB或更多)。与传统硬盘相比,使用SSD可以大大加快构建时间。 -
与小米Mi 4c兼容的USB线
-
良好的互联网连接和可靠的电力:)
- 熟悉基本的Android操作和术语。如果您已在其他设备上安装自定义rom并熟悉恢复,这将有所帮助。了解一些基本的命令行概念也很有用,例如
cd
,代表“更改目录”,目录层次结构的概念,以及在Linux中它们由/等分隔的概念。
提示:如果您不习惯使用Linux,这是一个很好的学习机会。它是免费的
-
只需下载并运行虚拟机(VM),如 VirtualBox,然后安装Linux发行版,如Ubuntu(AOSP也检查Ubuntu)。任何最近的64位版本都应该很好用,但建议使用最新的长期支持(LTS)版本。有很多关于设置VirtualBox来运行Ubuntu的说明,所以我们将把它留给你。
让我们开始!
构建LineageOS和LineageOS恢复
注意:您只需执行一次这些步骤。如果您已准备好构建环境并下载了源代码,请跳至准备特定于设备的代码
安装SDK
如果您以前未安装adb
和fastboot
,您可以从谷歌下载它们。提取它运行:
unzip platform-tools-latest-linux.zip -d ~
现在,你需要添加adb
和fastboot
到您的PATH。打开~/.profile
并添加以下内容:
# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
PATH="$HOME/platform-tools:$PATH"
fi
然后,运行source ~/.profile
以更新您的环境。
安装构建包
构建LineageOS需要几个包。您可以使用您的发行版的软件包管理器来安装它们。
提示:一个包管理器的Linux是用来安装或删除软件(通常源自Internet)您的计算机上的系统。使用Ubuntu,您可以使用Ubuntu软件中心。更好的是,您也可以apt-get install
直接在终端中使用该命令。
要构建LineageOS,您需要:
bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
对于早于16.04(xenial)的Ubuntu版本,替换:
libwxgtk3.0-dev
→libwxgtk2.8-dev
Java的
不同版本的LineageOS需要不同的JDK(Java Development Kit)版本。
-
LineageOS 16.0:OpenJDK 1.9(默认包含)
-
LineageOS 14.1-15.1:OpenJDK 1.8(安装
openjdk-8-jdk
) - LineageOS 11.0-13.0:OpenJDK
1.7(安装
openjdk-7-jdk
)*
* Ubuntu 16.04及更新版本的标准软件包存储库中没有OpenJDK 1.7。请参阅Ask Ubuntu问题“ 如何在Ubuntu 16.04或更高版本上安装openjdk 7?”。请注意,使用PPA openjdk-r的建议已过时(PPA从未更新过openjdk-7-jdk的产品,因此缺少安全修复程序); 跳过那个答案,即使它是最受欢迎的。
创建目录
您需要在构建环境中设置一些目录。
要创建它们:
mkdir -p ~/bin
mkdir -p ~/android/lineage
该~/bin
目录将包含git-repo工具(通常名为“repo”),该~/android/lineage
目录将包含LineageOS的源代码。
安装repo
命令
输入以下内容以下载repo
二进制文件并使其可执行(runnable):
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
将~/bin
目录放在执行路径中
在最新版本的Ubuntu中,~/bin
应该已经在你的PATH中了。您可以通过打开~/.profile
文本编辑器并验证以下代码来检查这一点(如果缺少则添加它):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
然后,运行source ~/.profile
以更新您的环境。
初始化LineageOS源存储库
以下分支可用于构建小米米4c:
- CM-14.1
输入以下内容以初始化存储库:
注意:确保您在此处输入的分支是您要构建的分支!
cd ~/android/lineage
repo init -u https://github.com/LineageOS/android.git -b cm-14.1
下载源代码
要开始将源代码下载到您的计算机,请键入以下内容:
repo sync
LineageOS清单包括repo的合理默认配置,我们强烈建议您使用(即不添加任何选项以进行同步)。作为参考,我们的默认值是-j 4
和-c
。该-j 4
部分意味着将有四个同时的线程/连接。如果您遇到同步问题,可以将其降低为-j 3
或-j 2
。另一方面,-c
将要求repo仅引入当前分支而不是GitHub上可用的所有分支。
提示:该repo sync
命令用于更新LineageOS和Google的最新源代码。请记住它,因为您可能希望每隔几天执行一次,以保持代码库的新鲜和最新状态。
准备特定于设备的代码
下载源代码后,确保您位于源代码(cd ~/android/lineage
)的根目录中,然后键入:
source build/envsetup.sh
breakfast libra
这将下载您设备的设备特定配置和 内核。
>
设备:
https://github.com/LineageOS/android_device_xiaomi_libra
> 内核:
https://github.com/LineageOS/android_kernel_xiaomi_msm8992
重要提示:某些设备需要在早餐成功之前填充供应商目录。如果您在此处收到有关供应商makefile的错误,请跳至Extract专有blob。早餐的第一部分应该已经成功,完成后你可以重新运行 breakfast
提取专有blob
注意: 此步骤要求设备已经运行最新的LineageOS,具体取决于您要为其构建的分支。如果您无法访问此类设备,请参阅从可安装zip文件中提取专有blob。
现在确保您的Mi 4c通过USB电缆连接到您的计算机,启用了ADB和root,并且您在~/android/lineage/device/xiaomi/libra
文件夹中。然后运行extract-files.sh
脚本:./extract-files.sh
blob应该被拉入~/android/lineage/vendor/xiaomi
文件夹。如果您看到"command not found"错误,adb
可能需要放入~/bin
。
打开缓存以加快构建速度
使用ccache
,如果你想加快后续构建运行:
export USE_CCACHE=1
并将该行添加到您的~/.bashrc
文件中。然后,ccache
通过键入以下内容指定要使用的最大磁盘空间量:
ccache -M 50G
其中50G
对应50GB的缓存。这需要运行一次。从25GB到100GB的任何地方都可以显着提高构建速度(例如,典型的1小时构建时间可以减少到20分钟)。如果您只为一台设备构建,那么25GB-50GB就可以了。如果您打算为几个不共享相同内核源的设备构建,请瞄准75GB-100GB。此空间将永久占用您的驱动器,因此请考虑到这一点。
您还可以启用可选ccache
压缩。虽然这可能会导致性能略有下降,但它会增加适合缓存的文件数量。要启用它,请运行:
export CCACHE_COMPRESS=1
或者将该行添加到您的~/.bashrc
文件中。
注意:如果启用了压缩,则ccache
大小可以更低(对于一个设备,目标是大约20GB)。
配置插孔
Jack是目前用于构建LineageOS 14.1和15.1的Java工具链。众所周知,如果配置不正确,通常会耗尽内存 - 一个简单的解决方法是运行此命令:
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
将该命令添加到您的~/.bashrc
文件将自动配置Jack以分配足够的内存量(在本例中为4GB)。
开始构建
是时候开始建设!现在,键入:
croot
brunch libra
构建应该开始。
提示: 想要了解如何签署自己的版本?看一下Signing构建。
安装构建
假设构建完成且没有错误(当它完成时将很明显),在构建运行的终端窗口中键入以下内容:
cd $OUT
在那里你可以找到所有创建的文件。更感兴趣的两个文件是:
-
recovery.img
,这是LineageOS恢复图像。 lineage-14.1-20190717-UNOFFICIAL-libra.zip
,这是LineageOS安装程序包。
成功!下一个是什么?
你做到了!欢迎来到自建者的精英俱乐部。您从头开始构建您的操作系统。你是你所在领域的主人/情妇...希望你在途中学到了一些东西并且也有一些乐趣。
获得帮助
- #LineageOS-dev -
Freenode IRC网络上一个有用的实时聊天室(或“频道”)。
从LineageOS zip文件中提取专有blob
介绍
可以从已经运行LineageOS的设备或LineageOS可安装的zip中提取专有的blob。在本指南中,我们将描述从可安装拉链中提取专有文件所需的步骤。
在开始之前,需要知道基于块的OTA和基于文件的OTA之间的区别。在基于文件的OTA中,系统分区的内容在名为zip的文件夹中可用system
。在基于块的OTA中,系统分区的内容作为二进制数据存储在文件内。如果您的zip没有system
文件夹或几乎为空的system
文件夹,以及system.transfer.list
在其根目录中命名的文件,那么您拥有的是基于块的OTA。在这种情况下,跳转到基于块的OTA提取专有blob。如果您在system
文件夹中拥有系统分区的全部内容而没有system.transfer.list
,那么您拥有的是基于文件的OTA。请参阅从基于文件的OTA中提取专有blob。
从基于块的OTA中提取专有blob
创建一个临时目录并移动到那里:
mkdir ~/android/system_dump/
cd ~/android/system_dump/
提取system.transfer.list
和/ system.new.dat.br
或system.new.dat
从可安装的LineageOS zip:
unzip path/to/lineage-*.zip system.transfer.list system.new.dat*
path/to/
可安装zip的路径在哪里。
如果存在system.new.dat.br
(brotli存档),您首先需要使用该brotli
实用程序对其进行解压缩:
sudo apt-get install brotli
brotli --decompress --input system.new.dat.br --output system.new.dat
你现在需要得到一份副本sdat2img
。此脚本可以将基于块的OTA的内容转换为可以装入的转储。sdat2img
可以在以下git存储库中找到,您可以使用以下方法克隆:
git clone https://github.com/xpirt/sdat2img
获得后sdat2img
,使用它来提取系统映像:
python sdat2img/sdat2img.py system.transfer.list system.new.dat system.img
您现在应该有一个名为system.img
可以挂载的文件,如下所示:
mkdir system/
sudo mount system.img system/
安装映像后,移动到设备源的根目录并运行extract-files.sh
如下:
./extract-files.sh ~/android/system_dump/
这将告诉extract-files.sh
从已安装的系统转储而不是从连接的设备获取文件。
解压缩所有专有文件后,卸载系统转储并删除不再需要的文件:
sudo umount ~/android/system_dump/system
rm -rf ~/android/system_dump/
从基于文件的OTA中提取专有blob
创建一个临时目录来提取zip的内容并移动到那里:
mkdir ~/android/system_dump/
cd ~/android/system_dump/
system
从zip中提取文件夹:
unzip path/to/lineage-*.zip system/*
path/to/
可安装zip的路径在哪里。
解压缩system
文件夹后,移动到设备源的根目录,然后运行extract-files.sh
如下:
./extract-files.sh ~/android/system_dump/
这将告诉extract-files.sh
从提取的系统转储而不是从连接的设备获取文件。
一旦提取了所有专有文件,就可以删除从zip中提取的文件:
rm -rf ~/android/system_dump/
签署构建
生成密钥
注意:您只需运行一次。如果您重新运行这些,则需要在构建之间进行迁移 - 请参阅更改密钥
从Android树的根目录运行这些命令,更改subject
行以反映您的信息:
subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
mkdir ~/.android-certs
for x in releasekey platform shared media testkey; do \
./development/tools/make_key ~/.android-certs/$x "$subject"; \
done
您应该保持这些密钥的安全,并将密码保存在安全的位置。
生成安装包
提示:如果您希望保留来自未构建的Lineage构建的数据,请参阅更改密钥。
生成和签署目标文件
按照设备的构建说明而不是运行后brunch <codename>
,运行以下命令:
breakfast <codename>
mka target-files-package otatools
坐下来等待 - 可能需要一段时间,具体取决于您的计算机规格。完成后,您只需要签署所有APK:
croot
./build/tools/releasetools/sign_target_files_apks -o -d ~/.android-certs \
$OUT/obj/PACKAGING/target_files_intermediates/*-target_files-*.zip \
signed-target_files.zip
生成安装包
现在,要生成可安装的zip,请运行:
./build/tools/releasetools/ota_from_target_files -k ~/.android-certs/releasekey \
--block --backup=true \
signed-target_files.zip \
signed-ota_update.zip
然后,像往常一样在恢复时安装zip。
改变钥匙
使用迁移构建
警告:使用这些补丁构建是不安全的 - 它们会在每次启动时重置所有程序包上的密钥。尽可能少地安装它们。
您可以通过运行以下命令来设置自己的迁移构建:
LineageOS 16.0:
repopick 239520
LineageOS 15.1:
repopick -f 192655 -P vendor/lineage
repopick -f 192656 -P frameworks/base
LineageOS 14.1:
repopick 156047 162144
然后,按照说明生成安装包。
回去
安装迁移构建后,您可以切换回构建正常构建:
LineageOS 16.0:
cd frameworks/base
git reset --hard github/lineage-16.0
LineageOS 15.1:
cd vendor/lineage
git reset --hard github/lineage-15.1
croot
cd frameworks/base
git reset --hard github/lineage-15.1
LineageOS 14.1:
cd vendor/cm
git reset --hard github/cm-14.1
croot
cd frameworks/base
git reset --hard github/cm-14.1
使用脚本
在使用新密钥安装构建之前,您还可以使用设计为运行一次的脚本或小型可刷新zip。该脚本可在下面找到 ./lineage/scripts/key-migration/script.sh
通过将脚本插入类似于此的zip,也可以将脚本制成zip 。此zip文件META-INF/com/google/android/update-binary
包含一些脚本, 其中包含一些用于向恢复打印状态消息的附加内容。
测试密钥为官方,反之亦然
如果您从测试密钥构建(例如“未签名的”非官方构建)转移到官方LineageOS构建,您可以将脚本推送到您的设备并从Android运行它:
adb root # This requires an userdebug/eng build and ADB root access to be enabled
adb shell stop
adb push ./lineage/scripts/key-migration/migration.sh /data/local/tmp/migration.sh
adb shell chmod +x /data/local/tmp/migration.sh
adb shell sh /data/local/tmp/migration.sh official
adb reboot recovery
# Now install the official LineageOS install zip
或者从恢复中运行它:
# Ensure both /data and /system are mounted, then continue
adb push ./lineage/scripts/key-migration/migration.sh /data/local/tmp/migration.sh
adb shell chmod +x /data/local/tmp/migration.sh
adb shell /data/local/tmp/migration.sh official
如果要从正式版本迁移到自己的“未签名”版本,则可以以相同的方式运行脚本,而是使用参数“unofficial”而不是“official”。
测试密钥到您自己的释放键,反之亦然
如果要从测试密钥移动到自己的已签名版本,则可以将自己的密钥添加到脚本中。首先,通过运行脚本将密钥导出为所需的格式 ./lineage/scripts/key-migration/export-keys.sh
。
注意:如果未使用默认证书目录,则可能需要修改此脚本以更改证书目录的位置。
这将以所需格式将密钥和证书打印到终端。接下来,编辑脚本以使用您的密钥。您需要注释掉(通过前缀a #
),或删除“release”键和证书的现有定义。现在,将上面的输出复制并粘贴到前一行所在的脚本中。确保保持“测试”键和证书定义不变。
你的脚本准备好了!将其推送到设备并以与上述相同的方式运行它,然后安装您自己的签名zip。如果您需要反向运行,只需使用“非官方”参数而不是“官方”,您的密钥将被替换为官方密钥。
所有内容
-
建立指南 Build guides
-
特约 Contributing
-
贡献给维基 Contributing to the wiki
-
从LineageOS zip文件中提取专有blob Extracting proprietary blobs
-
经常问的问题 Frequently Asked Questions
-
Google应用 Google apps
-
如何 … How-to …
-
天堂开发者的信息 Information for Lineage Developers
-
安装指南 Install guides
-
LineageOS贡献者 LineageOS contributors
-
LineageSDK Requesting LineageOS for your device
-
为您的设备申请LineageOS Requesting LineageOS for your device
-
签署构建 Signing Builds
-
提交端口 Submitting a port
-
升级指南 Upgrade guides
-
使用ADB和fastboot Using ADB and fastboot
-
验证构建真实性 Verifying Build Authenticity
如何 ...
-
...捕获日志 capture logs
-
...将源导入Android Studio/IntelliJ import the sources to Android Studio / IntelliJ
-
...提交错误报告 submit a bug report
-
...提交补丁 submit a patch
-
......翻译 translate
-
......用Gerrit use Gerrit