红米K20 Pro 尊享版刷Pixel Experience

折腾了一阵子才搞定,记录一下

首先解锁不用说了,网上多的是,重点是解锁以后的操作。
先刷 twrp ,重启进 twrp,然后从电脑上把下的 PE zip 包拷贝到手机里面。
用 twrp install 这个 zip 以后, 正常 Wipe Cache/Dalvik
之后是重点了!

重要的话要说三遍
用 twrp Wipe 里面的 Format data 把 internal storage 给格式化一下!
用 twrp Wipe 里面的 Format data 把 internal storage 给格式化一下!
用 twrp Wipe 里面的 Format data 把 internal storage 给格式化一下!

这个疑似是因为 K20 Pro 默认把 /data 分区给开启加密了,如果不格式化,/data 和 /sdcard 下面文件名都是乱码,这会导致重启失败直接进 twrp,格式化就可以去掉这个加密的标识。直接 Wipe /data 和 Internal Storage 行不行?不知道,你可以试试。(此处也不要参考网上说的什么刷印度版本底包之类,红米自己固件就是底包,没必要刷其他底包。更不要照着其他教程 Wipe /system ,那样底包就被你清掉了)

GitLab自动merge延迟巨长的bug

有一个 GitLab 上开了 CI,设置 pipeline 测试通过以后自动 merge,一开始还可以,到后来自动 merge 的响应速度越来越慢,经常是 pipeline 通过以后等了一天都没有什么动静。

在GitLab Admin Area 里面 Monitoring -> Background Jobs 里面查看,发现队列里面有上万的 automerge:auto_merge_process 任务在等待,然后看了一下细节,发现每个 Merge Request 都起了一个任务,不管是不是已经 merged,但是实际上大部分都已经 merged 了,所以这些 job 就是起来看了一下这个 MR 已经被 merged 了,就退出了。

也懒得去看 gitlab 代码了,直接执行 /opt/gitlab/bin/gitlab-pgsql, 进去以后 update merge_requests set merge_when_pipeline_succeeds = false where state = ‘merged’ or state = ‘closed’;

然后在 background jobs 里面把堆积的 job 全都删掉,问题立即就解决了。

UE4 用 fastbuild 实现并行编译 Shader

其实也是用网上代码改的,参见这里 https://github.com/fastbuild/fastbuild/issues/539

然后自己集成进去就可以,参考 XGE 的实现即可,几个需要改的地方
1: UE4 ShaderCompiler.cpp 里面有个地方把 Shader mapping directory 从相对路径给转换成绝对路径了,这个需要去掉,同时保证UE4引擎和项目处于同一个盘上。
2: 编译机器上需要把 VC 2017 redistributable 和 DX 的 runtime 都装上,前者有很多地方可以下载,后者搜索 dxwebinstaller,从微软站上下了以后把 directx 的库都装齐
3: 依赖关系需要增加一些,需要修改 ShaderCompilerFASTBuild.cpp 里面,之前只有 .ush 和 .usf 的依赖,请照葫芦画瓢增加 .h .hlsl .glsl 的依赖,此外依赖文件除了 Engine\\Binaries\\ThirdParty\\Windows\\DirectX\\x64\\d3dcompiler_47.dll 之外,还需要增加下面这几个依赖
Engine\\Binaries\\ThirdParty\\Windows\\DirectX\\x64\\WinPixEventRuntime.dll
Engine\\Binaries\\Win64\\dxcompiler.dll
Engine\\Binaries\\Win64\\dxcompiler_sc.dll
Engine\\Binaries\\Win64\\dxil.dll

加上以后重新编译 UE4,配置好 fastbuild 即可,比花钱买 IncrediBuild 还是划算很多。

用山寨方法解决wine运行微信残留阴影窗口的问题

wine 运行微信时候,微信会留下一些阴影窗口在其他窗口上面,很影响操作。于是用最山寨的方式解决之。

用 WinSpy 可知,阴影窗口的类名微信统一叫做 “popupshadow”, 这样正好可以最大限度防止误杀,于是写个最简单的程序,每3秒查找所有这个类名的窗口,然后用 ShowWindow 隐藏即可。代码如下

#include “windows.h”
LPCTSTR windowClassName = L”popupshadow”;
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
for (;;)
{
for (HWND h = FindWindowEx(NULL, NULL, windowClassName, NULL);
h = FindWindowEx(NULL, h, windowClassName, NULL);
h != NULL)
{
ShowWindow(h, SW_HIDE);
}
Sleep(3000);
}
return 0;
}

然后用 mingw 交叉编译即可

i686-w64-mingw32-g++ -municode -m32 -o wechatkill wechatkill.cpp

后台保持它运行就可以正常使用微信了。

最近评论

时光机

其他