git批量修改全部提交的提交信息、作者名称、邮箱
将所有提交的作者信息、提交信息中的邮箱、作者名称全部修改为指定值1git filter-branch --env-filter 'export GIT_COMMITTER_NAME="NasdaqGodzilla" export GIT_COMMITTER_EMAIL="26323326+NasdaqGodzilla@users.noreply.github.com" export GIT_AUTHOR_NAME="NasdaqGodzilla" export GIT_AUTHOR_EMAIL="26323326+NasdaqGodzilla@users.noreply.github.com" ' --tag-name-filter cat -- --branches --tags
AndroidStudio in Docker: 使用文档
[TOC]
简介本文是DaaS的使用文档。关于DaaS详见Docker as AS Daas: 在Docker中运行的AndroidStudio。
Getting Started从Docker hub拉取镜像:
启动DAAS:创建容器
创建容器
docker run -dit --name PeaceDAASMaker -p 8205:5901 -v ~/project/:/metaworld peacedocker10/niko-daas:1.4
注意,当服务器的端口被占用时,请在启动命令中自行更改端口。
请替换PeaceDAASMaker为你自定义的容器名称,也可以直接复制命令以使用该名称。缺省时Docker会随机命名。
请选择需要挂载进容器/metaworld的目录,如上命令所示~/project将会被挂载到Docker内的/metaworld。
进入容器容器创建指令执行后可以自动进入容器的shell。上述指令执行后我们会自动进入。通过该指令同样可以在容器没有退出时进入。123docker container ls # 找到你的容器IDdocker exec -it ...
Docker as As DaaS: 在Docker中运行的AndroidStudio
[TOC]
简介本文阐述在Linux系统中安装Android Studio,并通过VNC工具以远程虚拟桌面的形式提供给Client端使用。借助Docker打包,实现轻量级、轻易发布和移植的容器应用。
镜像已经打包好并上传至DockerHub(链接)
本文阐述的方案针对大型项目进行设计,将大型项目开发过程中对CPU、RAM、Disk资源有限的终端开发机器的性能要求和负载压力(包含Code Index、Analysis、Complie&Build、Refacotor等)转移到具备更高硬件规格的Linux服务器中。
通过轻量级的虚拟桌面协议实现接近原生的界面交互。
面向容器设计,易打包、移植和发布,易于添加扩展成为自定义的PaaS。
Feature
提供Android Studio套件
提供adb套件
提供辅助套件(Chrome、xfce)
默认提供宿主机挂载点(/metaworld)
默认暴露一个vnc端口(8205:5901(Host:Docker))
DAAS遵循了容器化思维,维持了最小的功能切面,仅提供android studio功能。一些常见的Linux功能
项目 ...
WebView白屏问题粗查
[TOC]
简介不可避免地愈来愈多的前端页面被嵌入到Android App中,对我们系统稳定性的维护工作和分析工作带来一定的挑战和不小的精力消耗。有时候,具备对WebView的基本排查、分析能力可以很好地缩短问题定位周期,减轻精力消耗和心智负载。本篇从客户端系统层的角度来阐述如何初步地粗略排查Android WebView白屏问题,提供一个定位大概问题的思路。
注意!本文讲的是WebView加载失败、保持白屏的状态,不是短时白屏、短暂白屏的情况(这通常取决于网络和前端实现的性能)。
白屏原理及成因WebView在一块默认的空白的、颜色为白色的画布(Canvas)上绘制网页,当网页绘制工作的前两步——加载、解析等出现问题时,或者在DOM解析、JS执行时,或WebView绘制时出现问题,此时无法绘制网页,仅留下原始的白色画布(也有纯黑色的画布,好像之前在U4内核碰见过)。就是白屏问题的形成原因。除短暂的白屏外,长期保持白屏的状态可能来自于网络、前端、业务逻辑以及WebView兼容性。
白屏问题总的来说分为两类。一类是网络请求和HTML/CSS/JS解析的因素,另一类是J ...
《命运赋》吕蒙正
吕蒙正(946年-1011年),字圣功。宋代河南洛阳人,知名大臣,曾三度拜相,赠中书令。太平兴国二年(公元977年),考中状元后,授将作丞,出任升州通判。步步高升,三次登上相位,封为许国公,授太子太师。为人宽厚正直,对上遇礼而敢言,对下宽容有雅度。他正是中国历史上第一位平民出身的宰相,他读书中状元,三次登上相位,封许国公,授太子太师。他有一篇《命运赋》流传千年,文章以自己从凄惨到富贵的经历,引述历史上大量的事实,说明人生无常,堪称一代奇文。
原文天有不测风云,人有旦夕祸福。蜈蚣百足,行不及蛇;雄鸡两翼,飞不过鸦。马有千里之程,无骑不能自往;人有冲天之志,非运不能自通。
盖闻:人生在世,富贵不能淫,贫贱不能移。文章盖世,孔子厄于陈邦;武略超群,太公钓于渭水。颜渊命短,殊非凶恶之徒;盗跖年长,岂是善良之辈。
尧帝明圣,却生不肖之儿;瞽叟愚顽,反生大孝之子。张良原是布衣,萧何称谓县吏。晏子身无五尺,封作齐国宰相;孔明卧居草庐,能作蜀汉军师。
楚霸虽雄,败于乌江自刎;汉王虽弱,竟有万里江山。李广有射虎之威,到老无封;冯唐有乘龙之才,一生不遇。韩信未遇之时,无一日三餐,及至遇行,腰悬三尺玉印 ...
Recovery安装流程
Recovery升级准备流程
OTA应用调用Framework内提供的系统接口RecoverySystem.installPackage()后,在/cache/recovery/block.map中写入升级信息。该文件将会在设备重启时,由启动引导程序读取内容,并根据内容启动为recovery模式,调起recovery进行OTA包的升级。
Recovery启动后,首先挂载分区,读取系统属性,然后通过block.map指定的路径尝试读取升级文件并进行校验。
取出OTA包内的升级文件和列表system.patch.dat、system.new.dat、system.transfer.list、boot.img、uboot.img。metadata用于校验版本。若update-binary有,则取出,用于执行升级脚本定义的升级命令。updater-script定义了用于执行升级的脚本。
根据OTA包内metadata定义的post-build和pre-build的匹配来确定当前OTA是否是本设备对应Android版本的合适差分包。确认版本号匹配后,才会进行校验。若版本号不匹配,则在校验进行 ...
Android Jack-Server多用户编译时Communication error with Jack server (60), try 'jack-di
2019年12月10日10:24:35
错误1Communication error with Jack server (60), try 'jack-diagnose' or see Jack server log
12345678FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts ...
Postman发送请求报错
背景
通过nodejs创建一个简易的http服务器http.createServer,监听到连接后直接返回一个标准格式的json串
Postman发送GET请求,请求成功并正确返回了json串,但是Postman显示错误1Expected ',' instead of 's'
原因排查
在Postman中把返回的串按照Raw或Preview或TEXT格式显示
检查转换后的格式是不是==一个json里面包含着一个子json结构(即一个{}内有一个成员自己也有{}。
如果确实是json嵌套,那么内层的json的{}里面的双引号必须要使用反斜杠转义,即:正确:12345{ "foo": 1, "bar": "{\"a\": 10, \"hash\": \"hhhh\"}", # 错误:"bar": "{"a" ...
Linux定制自定义格式的一键安装、解压包
应用
单文件的一键安装包,通过命令行或鼠标点击执行的安装包。
单文件一键安装包的结构
本质是将一个能够执行安装逻辑的脚本与待安装的文件拼接在一起。通过linux cat命令将安装文件拼接到安装脚本的后面变成一个新的组合文件。
1234567891011```--------------| 安装脚本 || install.sh ||--- ---|| 安装文件 || so || tar || bin || .... |--------------
其中,为了方便对待安装文件的管理,往往将它们打包为一个整体1234567--------------| 安装脚本 || install.sh ||--- ---|| 安装文件 || tar(so bin)|--------------
单文件一键安装包的制作制作安装文件
将要安装的文件打包为一个tar:test.tar
制作install.sh
实现调用bash:所以第一行:#!/bin/bash
分离出安装文件
后面会讲到把install. ...
Linux通过shell终端直接打开socket文件进行TCP、UDP通信
linux中有一个特殊的文件/dev/tcp,打开这个文件就类似于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。
打开/dev/tcp以读写方式打开/dev/tcp,并指定服务器名为: www.csdn.net,端口号为:80,指定描述符为81exec 8<>/dev/tcp/www.csdn.net/80
命令解读:
1234567> 注意:/dev/tcp本身是不存在的,无法在/dev下看到这个设备节点。- 实际上,这个设备节点不存在于系统中,在bash中通过打开```/dev/tcp```来取得socket的功能实际上是bash的特性,并不是系统的功能。2. 向文件中写入数据向文件中随便写一些数据: echo -e "GET">&8
echo -e “GET”>&FD
解析:echo -e是以某种格式发出去(忘了-e是代表二进制还是ASCII了);```>&```表示流的流向, ...