使用专有 blobs

使用专有 blobs

所有设备都应该在其设备树中有一个名为 proprietary-files.txt 的专有 blobs 列表。此列表用于创建供应商仓库,通过从运行最新 LineageOS 副本的设备和/或系统转储中提取 blobs 来构建设备。通常,设备只需要一个 blobs 列表,尽管您可能会遇到同时具有 proprietary-files.txtproprietary-files-qc.txt(或更多)的设备。没有必要拆分文件,拆分的原因很大程度上是历史遗留问题。

对于 LineageOS 21 及更低版本,请从 tools/extract-utils/templates(LineageOS 17.1 及更早版本上为 vendor/lineage/build/templates)复制相应的 extract-files.shsetup-makefiles.sh 模板到您的设备树,并编辑它们以填写三个必填字段(设备、供应商和版权年份)。

从 LineageOS 22 开始,您应该使用 Python 提取实用程序,它们更快且更通用。从 tools/extract-utils/templates 复制 extract-files.pysetup-makefiles.py 模板到您的设备树,并进行类似的编辑以填写必填字段。

proprietary-files.txt 的内容是 blobs 列表,带有可选的注释(以 # 开头的行)。每个 blob 行的格式如下

[-]source[:destination][|sha1sum]

每个文件名都相对于系统分区。条目 vendor/lib/libblob.so 将从 /system/vendor/lib/libblob.so 中提取并在之后安装到该位置。 您可以编写的所有变体的示例是

libbasic.so
-libneeded-to-build.so
libsource.so:libdestination.so
-libneeded-source.so:libneeded-destination.so
libstock.so|sha1sum
-libstock-needed.so|sha1sum
-libstock-source.so:libstock-destination.so|sha1sum

如果条目以破折号 (-) 开头,则供应商仓库将声明一个提供该 blob 的模块。如果该 blob 用于构建 Android 中的另一个组件,则这是必需的。如果破折号不存在,则 blob 将在构建期间简单地复制。

如果条目带有冒号 (:) 以及 sourcedestination 名称,则提取器将检查目标文件是否存在。如果目标文件存在,则将提取它。如果不存在,则将提取源文件名,但保存为目标名称。这允许您从库存(未重命名)转储或 LineageOS 转储/设备中提取,同时对其进行重命名。

sha1sum 是我们想要“固定”的 blob 版本的校验和。如果现有供应商树中该 blob 的副本与 sha1sum 不匹配,则会忽略它,并正常进行提取。如果它确实匹配,则无论您从设备/转储中提取的内容如何,都将保留它。

如果您从 odexed 系统转储(又名具有 boot.oats)中提取应用程序 (*.apk) 或 jar 文件,并且该应用程序/jar 尚未包含 classes.dex,则在提取时将自动对其进行 de-odexed 处理。