android或linux开发会经常遇到需要删除文件夹下的所有 .svn 文件 或.git文件目录的情况,具体使用如下:
删除项目里面所有.svn和.git 文件:
//删除文件夹下的所有 .svn 文件
find . -name ".svn"| xargs rm -Rf
//删除文件夹下的所有 .git 文件
find . -name ".git"| xargs rm -Rf
本地代码删除所有修改并同步服务器代码:
git删除所有修改:
git checkout . && git clean -xdf
git pull
或强制更新:
git fetch --all && git reset --hard origin/master && git pull
高通的fastboot烧录:
烧录aboot:
sudo adb reboot boodloader
sudo fastboot falsh aboot emmc_appsboot.mbn
sudo fastboot reboot
烧录bootimage:
sudo adb reboot boodloader
sudo fastboot falsh boot boot.img
sudo fastboot reboot
其它烧录方式请参看下载分区表文件rawprogram_unsparse.xml的内容。
jdk环境变量配置:
vim ~/.bashrc 在文件的最后添加
#######add jdk8u171 configure ########
export JAVA_HOME=/opt/java/java-1.8.0-openjdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
########end add jdk8u171 ############
fopen和open的区别:
一句话总结一下,就是open无缓冲,fopen有缓冲。前者与read, write等配合使用, 后者与fread,fwrite等配合使用。
使用fopen函数,由于在用户态下就有了缓冲,因此进行文件读写操作的时候就减少了用户态和内核态的切换(切换到内核态调用还是需要调用系统调用API:read,write);
而使用open函数,在文件读写时则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列的函数快;如果随机访问文件则相反
查看内存的命令:
adb shell dumpsys meminfo <应用包名> : 查看该包名应用的内存
adb shell top -m 数字 : 查看应用内存占用率,其中数字为返回的应用数量,从高到低排序 如:
adb shell top -m 10 查看10个进程的内存情况
adb shell top -n 1 -d 0.5 | grep proc_ id 查看进程占用cpu的情况
adb shell dumpsys meminfo <package_name> 查看APP使用的内存情况
其中,package_name 也可以换成程序的pid,pid可以通过 adb shell top | grep app_name 来查找
重点关注如下几个字段:
1)Native/Dalvik 的 Heap 信息
具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。
2)Total 的 PSS 信息
这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。
adb shell procrank 查看内存信息
VSS:VSS表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已经申请但尚未使用的内存空间。在实际中很少用这种方式来表示进程占用内存的情况,用它来表示单个进程的内存使用情况是不准确的。
RSS:表示一个进程在RAM中实际使用的空间地址大小,包括了全部共享库占用的内存,这种表示进程占用内存的情况也是不准确的。
PSS:表示一个进程在RAM中实际使用的空间地址大小,它按比例包含了共享库占用的内存。假如有3个进程使用同一个共享库,那么每个进程的PSS就包括了1/3大小的共享库内存。这种方式表示进程的内存使用情况较准确,但当只有一个进程使用共享库时,其情况和RSS一模一样。
USS:表示一个进程本身占用的内存空间大小,不包含其它任何成分,这是表示进程内存大小的最好方式!
可以看到:VSS>=RSS>=PSS>=USS
查看内存的使用情况:
adb shell dumpsys meminfo $package_name or $pid
adb shell dumpsys meminfo <package_name>
ssh生成sshkey:
ssh-keygen -t rsa
一路回车即可
查看某个模块的日志:
logcat | grep Camera
页内存释放:
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
查看网络状态和端口号:
netstat -n -l
lsof -i:8022 //8022是网络端口号,出来就可以看到这个端口号使用的进程PID
查看某个文件的git修改历史:
git log --pretty=oneline /xxx/xxx/MessageItem.java
android8.x编译jack服务器编译失败时的处理
1. ~/.jack-settings
SERVER_PORT_SERVICE=8022
SERVER_PORT_ADMIN=8023
2. ~/.jack-server/config.properties
jack.server.service.port=8022
jack.server.admin.port=8023
修改以上两个端口,在当前终端关闭jack服务器,或者重启终端,继续编译
内存定期释放:
flushcache.sh文件内容:
#!/system/bin/busybox sh
/system/bin/log -t pagecache "flush page cache"
echo 1 > /proc/sys/vm/drop_caches
dts编译:
dtc -p 1024 -O dtb -o msm8916.dtb msm8916.dts