常用命令

来源:互联网 发布:小米手机解锁软件 编辑:程序博客网 时间:2024/06/16 08:55

单独下载一个project
git clone http://myrepo.xxx.com/project/.git ,这样在当前目录下得到一个project子目录
例如下载alps/frameworks/av

<project name="mtk_N/alps/external/skia" path="alps/external/skia" />

对应的命令为:

git clone  ssh://xxxx@myrepo.xxx.com:29418/mtk_N/alps/external/skia/.git alps/external/skiagit branch -a,列出所有分支名称如下:remotes/origin/devremotes/origin/releasegit checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支

下载整个代码库
repo init -u ssh://yourname@myrepo.xxx.com:29418/mtk_N/alps/manifest -b -m
这里-m和-b的含义是:
注意到manifest.git本身也是一个git project
-b指定的是使用这个git project的哪个branch
-m指定的是,下载该git project中的哪个文件(应该是首先切换了branch,然后再下载该文件)。

开始抓取代码
repo sync
选项:
-j : 多任务,一般8核心可以开到16任务,过多会起反作用
-c: 只下载当前分支代码
-d: 让工程回退到manifest指定的版本
-f: 如果某个工程同步失败,继续同步

批量创建本地分支
repo start [–all | …]
刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b 命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与git checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上创建特性分支,而repo start是在清单文件设定分支的基础上创建特性分支。

Example:  repo start  stable  --all

查找包含字符串的文件

find . -name *.h -type f -print | xargs grep "libaudio_param_parser" --colorgrep -rn "libaudio_param_parser" *

查询当前磁盘容量

du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量 du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量。

动态开启framework日志

//必须是usedebug版本才可以adb shell setprop log.tag.AudioService.MOD Dadb shell setprop log.tag.AudioService.VOL Dadb shell setprop log.tag.AudioManager Dadb shell stopadb shell start

替换库文件调试脚本

#!/bin/shecho "mm"mmm vendor/mediatek/proprietary/hardware/audio/nxp/echo "root"adb rootadb remountecho "push"adb push out/target/product/tk6757_66_n1/system/lib/libtfa9891_interface.so /system/lib/adb push out/target/product/tk6757_66_n1/system/lib64/libtfa9891_interface.so /system/lib64/echo "reboot sleep"adb rebootsleep 30echo "root"adb rootadb remountecho "logcat"adb logcat | grep Tfa98xxx

按时间命名文件

#!/bin/shecho "mm"mmm speex/adb push out/target/product/tk6757_66_n1/system/bin/speextest /system/bin/adb push /mnt/hgfs/share_linux/采访功能/8k/echo.wav /sdcard/adb push /mnt/hgfs/share_linux/采访功能/8k/ref.wav /sdcard/adb shell rm /sdcard/out.pcmecho "bin"adb shell speextestadb pull /sdcard/out.pcm /mnt/hgfs/share_linux/采访功能/8K_out_$(date -d "today" +"%Y%m%d_%H%M%S").pcmecho "end"

修改编译的虚拟内存

alps/prebuilts/sdk/tools/jack_server_setup.mkifneq ($(ANDROID_JACK_VM_ARGS),)jack_vm_args := $(ANDROID_JACK_VM_ARGS) -Xmx4096melsejack_vm_args := -Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096mendifavailable_jack_jars := $(wildcard $(LOCAL_PATH)/jacks/jack-*.jar)

dump数据

void AudioTrackDump::dump(const char *filepath, void *buffer, int count, const char *property){    int ret;    char value[256];    property_get(property, value, "0");    int bflag = atoi(value);    if (bflag) {        ret = checkPath(filepath);        if (ret < 0) {            ALOGE("dump fail!!!");        } else {            FILE *fp = fopen(filepath, "ab+");            if (fp != NULL) {                fwrite(buffer, 1, count, fp);                fclose(fp);            } else {                ALOGE("dump %s fail", property);            }        }    }}int AudioTrackDump::checkPath(const char *path){    char tmp[256];    int i = 0;    while (*path) {        tmp[i] = *path;        if (*path == '/' && i) {            tmp[i] = '\0';            if (access(tmp, F_OK) != 0) {                if (mkdir(tmp, 0770) == -1) {                    ALOGE("mkdir error! %s",(char*)strerror(errno));                    return -1;                }            }            tmp[i] = '/';        }        i++;        path++;    }    return 0;}

堆栈打印
Linux Kernel
Kernel里最简单,直接有几现成的函数可以使用:
dump_stack() 这个函数打出当前堆栈和函数调用backtrace后接着运行WARN_ON(x) 这个函数跟dump_stack打出来。
打印出来的结果都在kernel log命令就可以看到了

Native C++
Android在新版(至少5.0, 6.0)里加入了CallStack类,这个类可以打出当前的backtrace。用法很简单:
1. 前面确保包含头文件 #include “utils/CallStack.h”;
2. Android.mk的库依赖列表(LOCAL_SHARED_LIBRARIES)里包含libutils,一般都已经包含了;
3. 然后在要打印堆栈处加入android::CallStack cs(“haha”);“haha”是在logcat输出的TAG,这里可以自己定义。
如果上下文已经在android namespace里,”android::”前缀就不必加了。Native C++的输出log可以在logcat里看到。

注意,在网上的一些文档里说要这么用:CallStack stack;stack.update();stack.dump();这样做已经不行了,在新版Android里编译不过。

Java
Java最详细,连文件名和行号都打出来了:
Exception e = new Exception(“haha”);
e.printStackTrace();
log里看以看到。

追踪出错地址
prebuilts/tools/gcc-sdk/addr2line -e out/target/product/z4dtg/obj/EXECUTABLES/xxxxx_intermediates/LINKED/xxxxxxxx 0x00007165

Ubuntu下安装最新OpenJdk1.8

1、sudo add-apt-repository ppa:openjdk-r/ppa2、sudo apt-get update3、sudo apt-get install openjdk-8-jdk4、执行:sudo update-alternatives –config java,选择java的版本5、执行:sudo update-alternatives –config javac,选择javac的版本

Fastboot烧鸡

adb reboot bootloaderfastboot devicesfastboot oem unlockfastboot oem unlock-gofastboot flash boot boot.imgfastboot flash system system.imgfastboot reboot

Ubuntu上ADB devices找不到设备

1. 用lsusb命令查询usb设备id,其中Device 027是我的手机设备,usb id为2717。2. 进入~/.android/目录,创建adb_usb.ini文件;3. 编辑adb_usb.ini文件,将设备的usb id添加到文件里 4. adb kill-server杀死adb服务;5. 最后,用adb devices重新查找设备,就可以找到了;

ubuntu配置adb环境变量

1sudo  gedit   ~/.bashrc 2、将下面的两句加到上面打开的文件里    export ANDROID_HOME=/home/sdk文件路径   export PATH=$PATH:$ANDROID_HOME/platform-tools3、重启电脑,大功告成!!

Jack故障处理

//编译卡住./prebuilts/sdk/tools/jack-admin kill-server./prebuilts/sdk/tools/jack-admin stop-server./prebuilts/sdk/tools/jack-admin start-server//Out of memory修改文件jack_server_setup.mk under prebuilts\sdk\toolsANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"./prebuilts/sdk/tools/jack-admin stop-server./prebuilts/sdk/tools/jack-admin start-server

拉取多媒体库

adb shell content query --uri content://media/external/file > external_file.txt