安卓软件开发常用命令集合

Android开发 专栏收录该内容
45 篇文章 0 订阅

本文地址 https://blog.csdn.net/CSqingchen/article/details/108150595
最新 文章连接,本文不再同步

adb 常用命令

  • logcat 并用tee重定向输出到文件log.txt
    adb logcat |tee log.txt

  • logcat过滤关键字abc的日志,grep在windows依赖C:\Program Files\Git\usr\bin\grep.exe
    adb logcat |grep abc

  • logcat 只抓去ERROR的日志,更多使用可以参考 android logcat
    adb logcat *:E

  • 截屏
    adb exec-out screencap -p > screen.png

  • 录屏
    adb shell screenrecord /sdcard/example.mp4
    adb pull /sdcard/example.mp4

  • 当前acitivity信息
    adb shell dumpsys activity | grep mResumedActivity

  • 系统安装所有应用包名及位置
    adb shell "pm list packages -f "
    adb shell "pm list packages -f |grep saic" 关键字过滤

  • 启动安卓原生Launcher3桌面应用
    adb shell am start -n com.android.launcher3/.Launcher

  • 启动安卓原生设置应用
    adb shell am start -n "com.android.settings/.Settings"

  • 启动安卓原生拨号应用
    adb shell "am start -n com.android.dialer/.DialtactsActivity"

  • 启动MTK工程模式 (##3646633## )
    adb shell am start -n com.mediatek.engineermode/.EngineerMode

  • 启动MTK日志应用mtklog ( *1973461# )
    adb shell am start -n com.mediatek.mtklogger/.MainActivity

  • 启动高通日志应用 ( *1973461# )
    adb shell am start -n com.hmct.ftmode/.FTModeMain

  • 发广播恢复出厂设置,不是所有设备都有效,其流程参考 链接
    adb shell am broadcast -a android.intent.action.MASTER_CLEAR

  • 发带参数广播如下,更多介绍参考 链接
    adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true

  • 启动服务Service
    adb shell am startservice -n com.chenjim.pkg/.YourService


adb 远程无线调试

需要完全root权限,一般手机系统不行

  1. 手机连接电脑,执行 adb root

  2. 手机下载安装 终端 ,并授权ROOT权限
    (MIUI系统开发版在菜单’设置–>应用设置–>授权管理->ROOT权限管理’)
    终端 执行以下命令设置远程调试端口,并重启 adbd

    su
    setprop service.adb.tcp.port 5555
    stop adbd
    start adbd
    
  3. 在手机 终端 执行以下命令获取手机IP信息
    ip neigh

  4. 在电脑远程连接设备命令如下
    adb connect 192.168.59.132
    192.168.59.132 是手机WIFI分配的IP地址,默认端口是上面步骤设置的5555

参考自:https://juejin.cn/post/6844903496861351943


tar 常用命令

  • tar 分卷压缩
    要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令
    tar cjf - logs/ |split -b 1m - logs.tar.bz2.
    完成后会产生下列文件
    logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
  • tar 分卷解压
    cat logs.tar.bz2.a* | tar xj
  • 压缩为.tar.gz的包
    tar czf hello.tar.gz hello
  • 解压.tar.gz到已存在的目录
    tar xvzf hello.tar.gz -C out.dir

Android NDK开发Crash错误定位

原文http://blog.csdn.net/xyang81/article/details/42319789

  • 方式1:使用arm-linux-androideabi-addr2line 定位出错位置
    以arm架构的CPU为例,执行如下命令:
    android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-addr2line -e hello-jni/obj/local/armeabi-v7a/libhello-jni.so 00000cf4 00000d1c
    -e:指定so文件路径
    0000cf4 0000d1c:出错的汇编指令地址

  • 方式2:使用arm-linux-androideabi-objdump 定位出错的函数信息
    android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-objdump -S -D hello-jni/obj/local/armeabi-v7a/libhello-jni.so > dump.log
    通过这种方式,也可以查出这两个出错的指针地址分别位于哪个函数中。

  • 方式3:ndk-stack 以armv7架构为例,执行如下命令:
    adb logcat | ndk-stack -sym hello-jni/obj/local/armeabi-v7a
    测试人员发现crash,用adb logcat保存日志文件,然后发给程序员通过ndk-stack命令分析
    adb logcat > crash.log
    NDK_DIR/ndk-stack -sym hello-jni/obj/local/armeabi-v7a -dump crash.log


OTA 升级,差分包制作

ota=./build/tools/releasetools/ota_from_target_files
$ota -i v2_old.zip v3_new.zip v2_3_ota.zip

//v2_old.zip和v3_new.zip是*_target_files.zip 在以下目录  
./out/target/product/项目名称/obj/PACKAGING/target_files_intermediates

//加签名的ota包
SFile=./device/mediatek/build/releasetools/mt_ota_from_target_files.py
KFile=./device/mediatek/common/security/vanzo/releasekey
$ota -s $SFile --block -k $KFile  -i v2_old.zip v3_new.zip v2_3_ota.zip 

odex去除的源码模块编译方法

build/core/dex_preopt_odex_install.mk 中添加

ifeq ($(LOCAL_MODULE),Gallery2)
LOCAL_DEX_PREOPT:=
endif

编个系统Rom版本,下载到手机。
或者在Android.mk 中添加
LOCAL_DEX_PREOPT := false
然后mmm 图库模块,adb push编译好的apk,重启设备


打开ipod debug模式

输入如下命令,ipo关机后,adb仍然可以处于工作的状态。
adb shell setprop ipod_debug 1


windows的adb自动按键测试bat脚本

: 注释:bat文件默认字符集为ANSI,否则有乱码
@echo off
set times=5
set gap=3
echo 最多执行%times%次,每次间隔%gap%秒
for /l %%i in (1,1,%times%) do (
    choice /t %gap% /d y /n >nul
    adb shell input keyevent 21
    echo 按键 KeyEvent.KEYCODE_DPAD_LEFT,当前第%%i%次
)
pause

MTK 按键映射dws修改

vendor/mediatek/proprietary/scripts/dct/DrvGen.exe
打开kernel-*.*/drivers/misc/mediatek/dws/mt6739/项目名称.dws


jgrep cgrep mgrep resgrep mangrep

在源码 build/envsetup.sh中有相关命令
需要执行source build/envsetup.sh将这些命令加到环境中
这些命令详细封装如下

function ggrep()
{
    find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.gradle" \
        -exec grep --color -n "$@" {} +
}

function jgrep()
{
    find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.java" \
        -exec grep --color -n "$@" {} +
}

function cgrep()
{
    find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \
        -exec grep --color -n "$@" {} +
}

function resgrep()
{
    for dir in `find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -name res -type d`; do
        find $dir -type f -name '*\.xml' -exec grep --color -n "$@" {} +
    done
}

function mangrep()
{
    find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -type f -name 'AndroidManifest.xml' \
        -exec grep --color -n "$@" {} +
}

相关连接

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值