总结了下Linux环境下Android常用工具和技巧。一方面巩固复习之前的知识,另一方面共享出来,这里工具和技巧可能会对大家有用。
一.终端
1.新建终端 ctrl-alt-t
2.创建新终端窗口 ctrl-shift-t
二.安装/更新软件
$sudo apt-cache search xxx 搜索包含xxx的软件
$sudo apt-get update 更新源
$sudo apt-get upgrade 升级软件
$sudo apt-get install(remove/autoremove) xxx 安装(卸载/自动卸载) xxx软件
$sudo rm /var/lib/apt/lists/lock 释放apt-get锁
三.编译
1.编译源码
$cd source code path
$. source code path/build/envsetup.h
$make
2.编译工程
$cd source code path
$. source code path/build/envsetup.h
$cd project path
$mm
3.64位系统 Android内核编绎错误解决方案
http://blog.csdn.net/zyc13701469860/archive/2011/02/25/6207522.aspx
四.ADB
1.adb命令
adb push <local> <remote> - copy file/dir to device
adb pull <remote> [<local>] - copy file/dir from device
adb shell - run remote shell interactively
adb shell <command> - run remote shell command
adb emu <command> - run emulator console command
adb logcat [ <filter-spec> ] - View device log
adb install [-l] [-r] [-s] <file> - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
('-s' means install on SD card instead of internal storage)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
adb start-server - ensure that there is a server running
adb kill-server - kill the server if it is running
adb devices -restart device
2.如果device断开可用以下方法重启
sudo adb kill-server
sudo adb devices
3.终端启动模拟器
$sudo cp android SDK path/tools/emulator /usr/bin/
$emulator -avd avdname [参数1|参数2|...]
$android-sdk-linux_x86/tools/emulator -avd avd4.0 -partition-size 1024 -sdcard mysdcard.iso"
4.在adb push时,发生以下情况:
1.out of memory --内存不足,终端启动模拟器加上 -partition-size xxx参数,xxx为内存大小(MB)
2.read-only --模拟器文件夹只读,使用 $sudo adb remount
3.not found device 同device断开重启方法
5.在终端显示模拟器/真机的log
$adb logcat --一般显示
$adb logcat -v time --输出时间
$adb logcat -v time|grep "xxx" --输出时间和含有字串xxx的log
6.64位系统启动android 3.0模拟器
需要安装$sudo apt-get ia32-libs
五.xp虚拟机无法启动解决方法
$sudo invoke-rcid virtualbox-ose stop
$sudo invoke-rcid virtualbox-ose start
六.VIM + TAGLIST + CSCOPE
1.vimrc
"忽略大小写"
set ignorecase
"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限"
set nocompatible
"use mouse everywhere "
set mouse=ni
"显示行号 "
set nu
"检测文件的类型 "
filetype on
"为特定文件类型载入相关缩进文件
filetype indent on
"记录历史的行数 "
set history=1000
"背景使用黑色 "
set background=dark
"语法高亮度显示 "
syntax on
"打开自动缩进"
set cindent
"下面两行在进行编写代码时,在格式对起上很有用; "
"第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行; "
"第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编 "
"写上很有用 "
set autoindent
set smartindent
"支持C/C++的缩进 "
set cin
"方便使用taglist "
nmap <F2> : Tlist <CR>
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
"第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格 "
set tabstop=4
set shiftwidth=4
"设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号 "
set showmatch
"去除vim的GUI版本中的toolbar "
set guioptions-=T
"当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声 "
set vb t_vb=
"在编辑过程中,在右下角显示光标位置的状态行 "
set ruler
"寻找匹配是高亮度显示的 "
set hls
"设置高亮搜索
set hlsearch
"查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一 "
"个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依 "
"次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词 "
"时,别忘记回车 "
set incsearch
"修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀"
set backup
" 保持上一次退出的位置
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("{1}quot;) |
\ exe "normal g`\"" |
\ endif
"按C语言格式缩进
set cindent
"继承前一行的缩进方式,特别适用于多行注释
set autoindent
"显示括号匹配
set showmatch
"括号匹配显示时间为1(单位是十分之一秒)
set matchtime=1
"增强模式中的命令行自动完成操作
set wildmenu
"不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
" cscope setting
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif
nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>{1}lt;CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
2.建立cscope使用的索引文件
在你需要浏览源码的根目录下(如你想用cscope看linux源码)使用下面命令:
#: cscope -Rbkq<回车>
R 表示把所有子目录里的文件也建立索引
b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库
q生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
k在生成索引文件时,不搜索/usr/include目录
七.Eclipse(linux)
1.设置智能匹配
perferences -> java -> editer -> content attist -> auto activation triggers for java
可设置任意多个
八.linux命令
1.使用back n 代替 cd ../../../
1.1编写goback.sh
#!/bin/bash
if [ $# != 1 ]
then
echo "a go back dir number required."
exit 1
fi
newdir=`echo "../" | awk -v num=$1 '{for(i=1;i<=num;i++) printf($0)}'`
cd $newdir
1.2新建一个脚本
myutil.sh
alias back="source ~/goback.sh"
1.3在终端输入 $. myutil.sh
然后使用back n就可以返回n层目录
九.Android
1.sqlite3查看数据库
1.1列出所有表
.table
1.2查看表结构
select * from sqlite_master where type="table";
1.3显示标题
.head on
1.4android多媒体数据库位置
/data/data/com.android.providers.media/databases/external.db
需要root权限
2.使用系统权限(适用与用反射调用系统类)
将代码放到源码中编译
2.1在androidmanifast中添加android:sharedUserId="android.uid.system"
2.2编写makefile文件
拿其他app的makefile文件改下就行
2.3mm编译
十.java正则表达式
验证数字的正则表达式集
验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\一-\龥],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?
十一.Ubuntu android使用mtp连接
1.下载安装mtpfs
2.sudo mtpfs -o allow_other /media/mt