显示标签为“translate”的博文。显示所有博文
显示标签为“translate”的博文。显示所有博文

2019-09-28

translate-102-principle


translate-102-principle

https://en.wikipedia.org/wiki/Phonics

Alphabetic principle 字母原则
某些字母语言(例如西班牙语,葡萄牙语(尤其是意大利语))的拼写结构在拼字法上相对透明,或者在拼字法上较浅,因为声音和表示它们的字母模式之间几乎是一对一的对应关系。
英语拼写更为复杂,是一种很深的拼字法,部分原因是它试图用仅由26个字母组成的字母表(并且没有变音符号)来代表40种以上的口语音素。结果,经常将两个字母一起使用来代表不同的声音,称为有向图digraphs。例如,t和h并排放置以表示/θ/或/ð/。
字母ee几乎总是代表/iː/,但是声音也可以由字母i和y代表。同样,信群ough:
/ʌf/ as in   enough,
/oʊ/ as in   though,
/uː/ as in  through,
/ɒf/ as in    cough,
/aʊ/ as in    bough,
/ɔː/ as in    bought, and
/ʌp/ as in hiccough,
while in slough and lough, 发音会有所不同。

Vowel phonics patterns 元音拼音模式
Short vowels 短元音是五个单字母元音,分别是: a, e, i, o, u, “短元音”一词是历史悠久的,意味着一次(在中古英语中)这些元音的发音时间特别短;目前,这意味着他们还没有像长元音一样的双元音。(元音字母在重读闭音节中发短元音)
/æ/ as in cat,
/ɛ/ as in bet,
/ɪ/ as in sit,
/ɒ/ or /ɑ/ as in hot,
/ʌ/ as in cup.

Long vowels 长元音 有相同的声音作为元音的名称。(元音字母在开音节中发长元音,即字母音)。如such as
/eɪ/ in bay,
/iː/ in bee,
/aɪ/ in mine,
/oʊ/ in no,
/juː/ in use.
教育者使用“长元音”一词的方式与语言学家使用该术语的方式不同。细心的教育者使用术语“长元音字母”或“长元音”,而不是“长元音声音”,"long vowel letters" or "long vowels", not "long vowel sounds",
因为五个长元音字母(长元音字母)(long vowel letters)中的四个实际上代表了声音的组合(a, i, o, u)中,只有一个由一个长的元音组成(/iː/ in bee),这是语言学家所使用的术语。在教室里,长元音被教导具有“与字母名称相同的声音”。老师教给孩子一个长元音“说”它的名字。

Schwa是大多数单个元音拼写可以代表的第三种声音。它是许多重读音节中元音的含混不清的声音,用语言符号 /ə/表示。是sofa沙发中a的声音。尽管schwa是英语口语中最常见的元音,但并不总是向小学生教授schwa,因为有些人很难理解。但是,一些教育家认为schwa应该包含在初级阅读程序中,因为schwa对于正确地发音英语单词至关重要。(元音字母在非重读音节中发/ə/)

Closed syllables 封闭音节是在单个元音字母single vowel letter后跟辅音consonant的音节。在单词button中,两个音节都是封闭音节,因为它们包含单个元音,后跟辅音。因此,字母u代表短音/ʌ/。(第二个音节中的o发出/ə/声音,因为它是一个非重读音节unstressed syllable。)

Open syllables 开放音节是在音节末尾出现元音的音节。元音会说出很长的声音。在basin盆地这个词中,ba是一个开放的音节,因此说/beɪ/。

Diphthongs是融合两个相邻元音的语言元素。英语有四种常见的双音diphthongs。公认的双元音是:
/aʊ/ as in cow and /ɔɪ/ as in boil.
有三个(a,i,o字母)长元音实际上也是两个元音的组合,换句话说就是双音元:
/aɪ/ as in "I" or mine, /oʊ/ as in no, and /eɪ/ as in bay,
这部分说明了他们被认为是“长”的原因。

Vowel digraphs 元音二字图是那些拼写模式,其中两个字母用于表示元音。的 ai in sail 是一个有向图元音。因为元音二位字母中的第一个字母有时会说出它的长元音,例如在sail 航行中,一些语音程序曾经教过“两个元音走路时,第一个元音会说话”。由于许多非示例,例如such as
'au' spelling of the /ɔː/ sound and
'oo' spelling of the /uː/ and /ʊ/ sounds
这两者都没有遵循这种模式。

Vowel-consonant-E 元音-辅音-E拼写是指单个元音字母,后跟辅音和字母e发出长元音的拼写。这种趋势通常被称为“无声规则”"Silent-e Rule",例如: bake, theme, hike, cone, and cute.烘烤,主题,远足,锥形和可爱。(ee拼写(例如在Meet中)有时被认为是此模式的一部分,但前后不一致。)

R-controlled R控制的音节包括那些元音后跟r的音节与其常规模式不同的音节。例如,像car汽车这样的单词应该具有“封闭音节”的模式,因为它具有一个元音并且以辅音结尾。但是,a in car没有常规的“短”声音 (/æ/ as in cat) ,因为它由r控制。r改变它前面的元音的声音。其他示例包括:
park, horn, her, bird, and burn. 公园,喇叭,她的鸟,鸟和燃烧。

Consonant-le 辅音-le是最后音节,位于底座/根字base/root 的结尾。它包含一个辅音,后跟字母le。该e是沉默不发音,因为它是在早期的英语发音存在,并且拼写历史。

Consonant phonics patterns 辅音拼音模式
Consonant digraphs 辅音字母是那些使用两个字母表示单个辅音音素consonant phoneme的拼写。最常见的辅音字母:
ch for /tʃ/,
ng for /ŋ/,
ph for /f/,
sh for /ʃ/,
th for /θ/ and /ð/.
字母组合(例如: wr for /r/ and kn for /n/ )在技​​术上也是辅音字母,尽管它们很少见,有时被认为是带有“无声字母”的模式。

Short vowel+consonant 短元音+辅音模式涉及到
/k/ as in peek,
/dʒ/ as in stage,
/tʃ/ as in speech.
每个这些声音有两个可能的拼写在单词,
ck and k for /k/,
dge and ge for /dʒ/,
tch and ch for /tʃ/.
拼写由声音之前的元音类型决定。如果在声音之前有短元音,则使用前一个拼写,如: pick, judge, and match.
如果在声音之前没有短元音,则使用后者的拼写,如: took, barge, and launch.


Stay alert and keep close.
Follow our instructions and you'll be fine.

In other words, do what we say and don't get in our way.






translate-101-phonics-rules


translate-101-phonics-rules

https://www.understood.org/en/learning-attention-issues/child-learning-disabilities/reading-issues/14-phonics-rules-for-reading-and-spelling

15个拼读阅读和拼写规则  作者:Ginny Osewalt

1. 音节中的元音
每个单词的每个音节必须至少有一个元音。元音可以单独存在于一个音节中,如 u●nit 和 an●i●mal。它也可以被辅音包围,如 jet, nap●kin, and fan●tas●tic.

2. 短元音和长元音
元音可以发出不同的声音。他们发出的声音取决于他们在一个单词中的位置。例如,元音后面是辅音吗?这有助于确定元音是否发出短音或长音: go vs. got, she vs. shed, hi vs. him.

“closed syllable”当一个音节中只有一个元音,后面跟着至少一个辅音时,元音通常发出短促的声音。例子包括 on, itch, mas●cot, and Wis●con●sin. 这种模式被称为“闭音节”,因为辅音“接近”短元音。

“open syllable”当只有一个元音并且它在一个音节的末尾时,元音发出长长的声音,就像  he and ban●jo. 这种模式被称为“开放音节”。

3. 无声的e
“vowel-consonant-e.”当 e 是一个单词中的最后一个字母,并且该音节中只有一个其他元音时,该音节中的第一个元音通常发长元音(字母音)而 e 是不发音的,如 sale and in●side. 这个音节模式被称为“元音-辅音-e”。
“silent e”有些老师称之为“无声ê ”的规则。有人称之为“魔术e”规则。e赋予另一个元音所有的力量并使该元音使用其长音 (“say its name”).

4. 辅音混合Consonant blends 和 复合字母Digraph
复合字母是代表一种声音的两个字母的奇特单词。在由辅音制成的复合字母中,两个辅音一起工作以形成新的声音。例子包括(ch,sh,th,wh,ph) chap, ship, thin, whiz, and photo. 辅音混合物是不同的。这些由两个或多个辅音组成的小组一起工作。但是与复合字母不同的是,当它们混合在一起时,它们仍能听到它们各自的声音。例子包括(cl,gr,sp,scr) clam, grasp, and scrub.

5. Vowel digraphs复合元音
在复合元音字母中,两个元音是并排的。第一个元音很长,并且说出了它的名字。第二个元音是沉默的,如(oa,ai,ea) boat, paint, and beach.

有时,两个元音一起工作以形成新的声音。这被称为双元音diphthong。例子包括(ou,oi) cloud and boil.

6. 被R控制的元音
“bossy r”当一个音节有后跟一个元音R ,元音是被“控制”R并产生了新的声音。例子包括 car, bird, germ, form, and hurt. 这个规则有时被称为“专横的r ”。

7. “schwa”的声音
任何元音都可以发出schwa的声音; 这听起来像一个弱的 uh or ih. 像(o,a) from and final 这样的词有schwa声音。有些话有一个以上的元音的声音,像 apartment and banana. 这是英语中最常见的声音。 a partm e nt  and  b a nan a .

8. 软c和硬c,软g和硬g
当字母 c 后跟元音 e,i或 y时,它通常会发出柔和的声音。其中的例子是 cent, circus, and cyclone. 对于其他元音,字母 c 发出硬声,如  cat and cot.

同样,当字母 g 后面跟着元音 e,i或 y时,它通常会发出柔和的声音。其实例是 gel, giant, and gym. 与其他元音字母 g 由硬质的声音,如  gas, gorilla, and yogurt.

9. “fszl”(fizzle)啸 规则
字母f,s,z和l 通常在紧跟短元音之后的单音节词的末尾加倍。例子包括 stuff, grass, fuzz, and shell. 例外情况包括 quiz and bus.

10. 以k或ck结尾
当一个单音节的单词以短小元音后面的/k/声音结束时,它通常用ck拼写,就像在 duck and trick. 当/k/声音遵循辅音,长元音或双元音时,它通常拼写为k,如 task, cake, soak, and hawk.

11. /j/声音和/ch/声音
在一音节字,当/j/声音紧跟一个短元音,它拼写为 dge 如 badge, hedge, bridge, dodge, and smudge.(  d “保护”元音免受“魔法e ”规则的影响。)

在一音节字,当/ch/声音紧跟一个短元音,它通常拼写 tch 比如  catch, fetch, stitch, blotch, and clutch. 这条规则的例外情况有  such, much, rich, and which.

12. 用-ing换掉e
当字用不发声的e结尾,删除e加入-ing。例如:bike/biking, give/giving, and dodge/dodging. 此规则也适用于以元音开头的其他后缀,例如  -ed, -er, -able, and -ous. 例子:grieve/grievous, excite/excitable, and hope/hoped.

13. Doubling双写
在这样一个音节词的胜利,其中一个短元音后面跟着一个辅音,添加以元音开头的前后缀一倍辅音。示例: winner, winning, winnable.

14. Plurals复数
对于大多数单词,添加s以使它们复数,如 cat/cats。但是当一个单词以 s, sh, ch, x, or z, 结尾时  ,添加  es  使其复数,如 classes, brushes, and foxes.

15. Y规则
要使复数形成一个以y后面的元音结尾的单词,只需添加s,就像 toy/toys. 当y紧跟辅音后,将y更改为i并添加es。例如: family/families, pony/ponies, and treaty/treaties.

后缀遵循类似的y规则集。如果在y之前有一个元音,请保留y并简单地添加后缀。例子 play/playing and annoy/annoying.

当一个字结束与辅音紧接着y,改变y为i -添加后缀像以前一样-ed和-est。例子 carry/carried and happy/happiest.

但是当后缀以i开头时,请保留y并简单地添加后缀,如 fly/flying and baby/babyish.

规则的例外情况
英语中的大多数单词都遵循拼音规则。但是,这些规则的任何例外都需要教授和记忆,以便阅读和拼写。这些单词通常出现在视觉词或高频词的列表中。

如果您的孩子正在努力阅读或拼写,请与老师联系。额外的一些语音教学可以帮助你的孩子赶上来。您可能还想了解  阅读专家和阅读干预措施,这些是学校用来帮助苦苦挣扎的读者的常用资源。

2019-07-17

lineageos-libra(translate)


lineageos-libra(translate)[2019-07-17]

Wingtech Redmi 2 (wt88047)

有关天秤座的信息

info_outline
注意:此页面是根据设备的信息自动为小米Mi 4c生成的,位于 此处。您可以在此Wiki上找到每个官方支持的设备的类似说明。
警告:小米米4c不再维护。对于想要进行私有构建甚至重新启动官方支持的开发人员,可以使用构建指南。

获取适用于小米Mi 4c的LineageOS

安装

如何在小米米4c上安装LineageOS

构建指南

如何为小米米4c构建LineageOS

更新指南

如何在小米米4c上更新LineageOS

特殊启动模式

  • 恢复:关闭设备,按住Volume UpPower。按住两个按钮,直到屏幕上出现“MI”标志,然后松开。
  • 下载:关闭设备,按住Volume DownPower。按住两个按钮,直到屏幕上出现“FASTBOOT”字样,然后松开。

在线寻求帮助

您可以在我们的subredditfreenode上的#LineageOS中找到LineageOS的帮助。
Xiaomi Mi 4c (libra) 小米4c(天秤座)
发布 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毫安

为天秤座建造

info_outline
注意:此页面是根据设备的信息自动为小米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恢复

info_outline
注意:您只需执行一次这些步骤。如果您已准备好构建环境并下载了源代码,请跳至准备特定于设备的代码

安装SDK

如果您以前未安装adbfastboot,您可以从谷歌下载它们。提取它运行:
unzip platform-tools-latest-linux.zip -d ~
现在,你需要添加adbfastboot到您的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
输入以下内容以初始化存储库:
info_outline
注意:确保您在此处输入的分支是您要构建的分支!
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上可用的所有分支。
info_outline
注意:这可能需要一段时间,具体取决于您的互联网速度。在此期间去喝啤酒/咖啡/茶/午睡!
校验
提示: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

info_outline
注意: 此步骤要求设备已经运行最新的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文件中。
info_outline
注意:如果启用了压缩,则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
在那里你可以找到所有创建的文件。更感兴趣的两个文件是:
  1. recovery.img,这是LineageOS恢复图像。
  2. lineage-14.1-20190717-UNOFFICIAL-libra.zip,这是LineageOS安装程序包。

成功!下一个是什么?

你做到了!欢迎来到自建者的精英俱乐部。您从头开始构建您的操作系统。你是你所在领域的主人/情妇...希望你在途中学到了一些东西并且也有一些乐趣。

获得帮助


从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.brsystem.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/




签署构建

生成密钥

info_outline
注意:您只需运行一次。如果您重新运行这些,则需要在构建之间进行迁移 - 请参阅更改密钥
从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
info_outline
注意:如果未使用默认证书目录,则可能需要修改此脚本以更改证书目录的位置。
这将以所需格式将密钥和证书打印到终端。接下来,编辑脚本以使用您的密钥。您需要注释掉(通过前缀a #),或删除“release”键和证书的现有定义。现在,将上面的输出复制并粘贴到前一行所在的脚本中。确保保持“测试”键和证书定义不变。
你的脚本准备好了!将其推送到设备并以与上述相同的方式运行它,然后安装您自己的签名zip。如果您需要反向运行,只需使用“非官方”参数而不是“官方”,您的密钥将被替换为官方密钥。

所有内容


如何 ...








Sound

导航 (返回顶部) 1. Sound 1.1 声-音 1.2 声波的性质及特性 2. 声音频率 2.1 听力范围 2.2 VF-语音频率 2.3 人声基本频率 2.4 8度音阶表 2.5 综合表 3. 声波 3.1 Compression and she...