使用专有 blobs
使用专有 blobs
所有设备都应该在其设备树中有一个名为 proprietary-files.txt
的专有 blobs 列表。此列表用于创建供应商仓库,通过从运行最新 LineageOS 副本的设备和/或系统转储中提取 blobs 来构建设备。通常,设备只需要一个 blobs 列表,尽管您可能会遇到同时具有 proprietary-files.txt
和 proprietary-files-qc.txt
(或更多)的设备。没有必要拆分文件,拆分的原因很大程度上是历史遗留问题。
对于 LineageOS 21 及更低版本,请从 tools/extract-utils/templates
(LineageOS 17.1 及更早版本上为 vendor/lineage/build/templates
)复制相应的 extract-files.sh
和 setup-makefiles.sh
模板到您的设备树,并编辑它们以填写三个必填字段(设备、供应商和版权年份)。
从 LineageOS 22 开始,您应该使用 Python 提取实用程序,它们更快且更通用。从 tools/extract-utils/templates
复制 extract-files.py
和 setup-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 将在构建期间简单地复制。
如果条目带有冒号 (:
) 以及 source
和 destination
名称,则提取器将检查目标文件是否存在。如果目标文件存在,则将提取它。如果不存在,则将提取源文件名,但保存为目标名称。这允许您从库存(未重命名)转储或 LineageOS 转储/设备中提取,同时对其进行重命名。
sha1sum
是我们想要“固定”的 blob 版本的校验和。如果现有供应商树中该 blob 的副本与 sha1sum
不匹配,则会忽略它,并正常进行提取。如果它确实匹配,则无论您从设备/转储中提取的内容如何,都将保留它。
proprietary-files.txt
列表以更新 sha1sum
。请花时间记录移植 (kang) 的来源或重现十六进制编辑的步骤。如果您从 odexed 系统转储(又名具有 boot.oats)中提取应用程序 (*.apk
) 或 jar 文件,并且该应用程序/jar 尚未包含 classes.dex,则在提取时将自动对其进行 de-odexed 处理。