跳至主要內容
烂笔头

烂笔头

好记性不如烂笔头

项目名称
项目详细描述
链接名称
链接详细描述
书籍名称
书籍详细描述
文章名称
文章详细描述
伙伴名称
伙伴详细介绍
自定义项目
自定义项目
自定义详细介绍
git 相关

查询master分支 push、fetch时间

$  git reflog origin/master --date=iso 

Mr.WenYue大约 2 分钟蔬菜
页面配置

more 注释之前的内容被视为文章摘要。


Mr.WenYue大约 2 分钟使用指南页面配置使用指南
Note

懒加载Fragment 让应用更优化

懒加载,可以处理相机权限初始化等相关的问题,还可以优化网络请求,优化内存

Android 秘钥生成

$ keytool -genkey -alias ifdebugkey -keyalg RSA -validity 20000 -keystore ifdebug.keystore

Mr.WenYue小于 1 分钟
adb 相关

发送广播

adb shell am broadcast args
args:
[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>] 
[-c <CATEGORY> [-c <CATEGORY>] ...] 
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] 
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] 
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] 
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]

eg:
adb shell am broadcast -a actionStr --es test_key "this is test string" --ei test_int 100 --ez test_boolean true

Mr.WenYue小于 1 分钟
brew Uses

brew 私有仓库 Formula 创建使用

brew 仓库搜索路径是先core在搜索私有仓库,所以创建后的配置文件一定要从core工程中删除,不然编译安装会报错

# 1.创建Formula配置文件
$  brew create https://github.com/..../xxx/archive/v1.0.0.tar.gz
# 2.将配置文件拷贝到配置仓库工程中,并删除homebrew-core/Formula 下xxx.rb 配置文件
#  路径为:/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/xxx.rb
# 3.修改并上传仓库配置

Mr.WenYue小于 1 分钟
cmake 使用
GCC 使用的各种flags,可用于生成库文件的调优
https://gcc.gnu.org/onlinedocs/gcc-4.8.4/gcc/Invoking-GCC.html#Invoking-GCC

Android NDK编译选项设置
http://crash.163.com/#news/!newsId=24


LOCAL_CPPFLAGS += -fexceptions
由于NDK编译从R5开始才支持C++异常控制,为了通用性,异常处理默认是禁用的(-fno-exceptions),因此需要在指定module中添加LOCAL_CPPFLAGS += -fexceptions编译选项方可编译带异常处理的C++代码。也可以直接在Application.mk中配置APP_CPPFLAGS += -fexceptions。

LOCAL_CPPFLAGS += -frtti
从NDK R5开始,NDK也开始支持C++ RTTI了,但为了通用性,所有的C++源文件被构建的时候默认是不支持RTTI的(-fno-rtti),可以通过在Android.mk中添加:LOCAL_CPPFLAGS += -frtti或者在Application.mk添加APP_CPPFLAGS += -frtti来开启RTTI。

LOCAL_CFLAGS += -fvisibility=hidden
在NDK开发中,源文件的函数都有一个默认的visibility属性为public,编译生成的so文件中几乎所有的函数名、全局变量名均被导出,其实只需要导出java_com开头的jni函数即可,其他函数不需要暴露出来,在Android.mk中设置LOCAL_CFLAGS += -fvisibility=hidden,就可以隐藏不需要导出的函数,若某个函数需要导出,则添加JNIEXPORT或者__attribute__ ((visibility ("default")))即可。
除了安全,不导出不必要的函数外,还能减小so体积。

LOCAL_CFLAGS += -ffunction-sections
不添加此参数时,编译文件.o中代码部分只有.text段,使用此参数,会使每个函数单独有一个段,举个栗子,函数func1()会编译成.text.func1段,虽然段多了,但对链接后代码大小并没有影响。

LOCAL_CFLAGS += -fdata-sections
同上,每个data都有一个单独的段。

LOCAL_LDFLAGS += -Wl --gc-sections
-Wl,<option>选项是告诉编译器,将后面选项<option>传递给连接器,-Wl,--gc-sections的意思是使用连接器ld链接时删除不用的段。若使用LOCAL_CFLAGS += -ffunction-sections -fdata-sections,则代码和数据均被分割成不同的段,若某个函数或数据未被任何函数调用,则ld不会链接未被调用的函数,从而减小so文件体积,达到优化so的目的。

LOCAL_LDFLAGS += -fPIC
PIC(position independent code)用于编译位置无关代码,生成可用于共享库的位置独立代码。若不添加-fPIC,则加载.so文件的代码段时,代码段引用的数据对象需要重定位,重定位会修改代码段内容,这样就导致没使用这个.so,代码段的进程在内核中就会生成这个文件的拷贝。

LOCAL_LDFLAGS += -Wall 
这个的意思是wring all 意思在编译和链接过程中显示所有警告信息

Mr.WenYue大约 2 分钟
Docker Uses
# 新建并启动一个ubuntu:18.04的bash
# -t :让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
# -i :让容器的标准输入保持打开
$ docker run -t -i ubuntu:18.04 /bin/bash

# 启动bash,并把本地目录/uer/dir 挂载到容器/opt/temp目录
# --mount type=bind,source=/uer/dir,target=/opt/temp,readonly  :挂载可以指定读写权限,默认是可读可写
$ docker run -t -i --mount type=bind,source=/uer/dir,target=/opt/temp  ubuntu:16.04 /bin/bash

# 可指定多个挂载
$ docker run -ti -v /Users/temp:/opt/temp \
								 -v /Users/uname/.zsh_history:/root/.zsh_history \       		wswenyue/my_ubuntu_16_04 /bin/zsh

Mr.WenYue小于 1 分钟
FFMpeg 使用

格式转换

# webm(视频) 转换成MP3(品质为320K)
# -ab : audio bit rate
# -ar : audio sample rate
# -i : 输入
# -y : 输出
# -vn : 过滤video
$ ffmpeg -i in.webm -vn -ab 320K -y out.mp3
# 过滤调视频轨。输出的音频编码使用源视频的音频编码
$ ffmpeg -i in.webm -vn -acodec copy -y out.webm

Mr.WenYue大约 2 分钟
Other

javah 生成对应类的头文件

$ javah -classpath $ANDROID_PLATFORMS/android-22/android.jar:. com.xx.Xxx
# -classpath $ANDROID_PLATFORMS/android-22/android.jar 这个如果用到了Android相关的类,必须要添加,比如:Context、Bitmap...
# ":." 如果写了classpath这个一定不能少。表示当前目录也加入到编译目录当中
# 执行命令的目录应该是com.xx.Xxx.class 这个“com”包的父目录下

Mr.WenYue小于 1 分钟

这是一个博客主页的案例。

要使用此布局,你应该在页面前端设置 layout: BlogHomehome: true

相关配置文档请见 博客主页open in new window