LineageOS for Redmi K20 Pro

Wiki

XDA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Install dependencies on arch:
`yay lineageos-devel`

Allow 300 gigabytes of disk space

// create directory
LINEAGE_BUILD_ROOT=~/android/lineage
LINEAGE_BUILD_CCACHE=~/android/ccache
mkdir -p ~/android/bin
mkdir -p $LINEAGE_BUILD_ROOT
mkdir -p $LINEAGE_BUILD_CCACHE
mkdir -p $LINEAGE_BUILD_CCACHE/tmp

// setup tools
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/android/bin/repo
chmod a+x ~/android/bin/repo
PATH="~/android/bin:$PATH"

git lfs install

// configure cache
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache
ccache -M 50G
ccache -o compression=true
export MXE_CCACHE_DIR=$LINEAGE_BUILD_CCACHE/tmp
export CCACHE_DIR=$LINEAGE_BUILD_CCACHE

// pull source
cd $LINEAGE_BUILD_ROOT
repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs
repo sync

mkdir -p kernel/xiaomi/sm8150
git clone git@github.com:xiaomi-sm8150-devs/android_kernel_xiaomi_sm8150-legacy.git kernel/xiaomi/sm8150

// prepare build
source build/envsetup.sh
breakfast raphael

// download vendor (need phone connected in debug mode)
cd $LINEAGE_BUILD_ROOT/device/xiaomi/raphael
./extract-files.sh
cd $LINEAGE_BUILD_ROOT

// build
croot
brunch raphael

==> ls out/target/product/raphael/ -lah

If error on pull source:
rm -rf external/chromium-webview/prebuilt/*
rm -rf .repo/projects/external/chromium-webview/prebuilt/*.git
rm -rf .repo/project-objects/LineageOS/android_external_chromium-webview_prebuilt_*.git
repo sync


update and rebuild:
repo sync
cd kernel/xiaomi/sm8150
git pull
cd $LINEAGE_BUILD_ROOT
source build/envsetup.sh
breakfast raphael
croot
brunch raphael

android系统签名生成

生成android系统签名

  • 找到源码build\target\product\security目录下的platform.pk8和platform.x509.pem两个文件
  • 2.利用platform.pk8生成platform.priv.pem
    1
    openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
  • 2.利用platform.x509.pem生成platform.pk12
    1
    openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name 别名
  • 3.利用上述文件生成keystore
    1
    keytool -importkeystore -deststorepass 密码 -destkeypass 别名密码 -destkeystore 名称.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass 密码 -alias 别名

查看apk签名信息

1.使用jdk keytool查看

keytool -list -printcert -jarfile xxx.apk

2.使用apksigner查看

apksigner verify -v –print-certs xxx.apk

logcat

猫咪不吃鱼:Android 日志系统分析

一、前言

logcat 作为读取日志的工具,相当于client 的角色;在前两篇文章中,关于 logcat 如何与其他部分沟通获取日志信息的流程已经介绍的比较清晰,本文不在赘述,转而归纳一下 logcat 的一些常用指令,并对其中一些做详细分析

二、命令简介

选项 描述 eg
-s 输出指定 tag 的日志,相当于过滤器表达式 ‘*:S’ logcat -s tag
-f 设置logcat 内容保存的位置,默认是stdout logcat -f sdcard/log.txt
-r 每输出 时轮替日志文件,默认是16 必须配合 -f (暂不明白) logcat -f sdcard/log.txt -r 1
-n 设置日志输出的最大数目, 需要 -r 参数 暂不明白
-v 设置日志消息的输出格式。详见下文 格式化输出 logcat -v thread
-D 输出各个日志缓冲区之间的分隔线 logcat -D …
-c 清除(清空)所选的缓冲区并退出,默认清除 main、system 和 crash logcat -c / -b all -c
-d 将日志转储到屏幕并退出 logcat -d > log.txt
-e 输出正则匹配的日志消息 logcat -e 匹配数据 -m 5
-m 输出 行后退出 ……
-t 仅输出最新的行数,此选项包括 -d 功能 logcat -t 5
-t ‘ 输出自指定时间以来的最新行,此选项包括 -d 功能 logcat -t ‘01-26 20:52:41.820’
-g 获取指定日志缓冲区的大小并退出 logcat -g
-G 设置日志环形缓冲区的大小,可以在结尾处添加 K 或 M logcat -G 2M
-b 加载可供查看的日志缓冲区,更多可见下文 日志缓冲区 logcat -b system
-B 以二进制文件形式输出日志 ……
-S 在输出中包含统计信息,以识别和定位日志垃圾信息发送者 ……
–pid= 仅输出来自给定 PID 的日志 logcat –pid=4355
Read more

adb

挂载
mount -o rw,remount /product

打印运行奔溃
logcat -s DEBUG AndroidRuntime

Read more