常用命令

转载自 常用命令

单独下载一个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/skia
git branch -a,列出所有分支名称如下:
remotes/origin/dev
remotes/origin/release
git 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" --color
grep -rn "libaudio_param_parser" *

查询当前磁盘容量

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

动态开启framework日志

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

替换库文件调试脚本

#!/bin/sh
echo "mm"
mmm vendor/mediatek/proprietary/hardware/audio/nxp/
echo "root"
adb root
adb remount
echo "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 reboot
sleep 30
echo "root"
adb root
adb remount
echo "logcat"
adb logcat | grep Tfa98xxx

按时间命名文件

#!/bin/sh
echo "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.pcm
echo "bin"
adb shell speextest
adb pull /sdcard/out.pcm /mnt/hgfs/share_linux/采访功能/8K_out_$(date -d "today" +"%Y%m%d_%H%M%S").pcm
echo "end"

修改编译的虚拟内存

alps/prebuilts/sdk/tools/jack_server_setup.mk
ifneq ($(ANDROID_JACK_VM_ARGS),)
jack_vm_args := $(ANDROID_JACK_VM_ARGS) -Xmx4096m
else
jack_vm_args := -Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m
endif
available_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/ppa
2、sudo apt-get update
3、sudo apt-get install openjdk-8-jdk
4、执行:sudo update-alternatives –config java,选择java的版本
5、执行:sudo update-alternatives –config javac,选择javac的版本

Fastboot烧鸡

adb reboot bootloader
fastboot devices
fastboot oem unlock
fastboot oem unlock-go
fastboot flash boot boot.img
fastboot flash system system.img
fastboot reboot

Ubuntu上ADB devices找不到设备

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

ubuntu配置adb环境变量

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

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\tools
ANDROID_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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值