草庐IT

ADB命令大全(adb命令获取签名证书信息)

Justin超 2023-07-06 原文

获取签名证书信息主要是用到 apktool.jar 这个jar包
先找到你想看的apk,知道它的包的路径举例子找: launcher

**adb shell pm list packages -f launcher**

将指定内部路径apk取出 到我们的当前路径

**adb pull /system/priv-app/Launcher/Launcher.apk**


也可以指定apk,pull到那个路径,不指定默认当前(红框里)
查看apk信息

**keytool -printcert -jarfile Launcher.apk**

正常情况下就获取到签名信息了

如果出现此类错误 ,那么需要对apktool.jar 进行单独调用,或更换jar包

ADB命令语法
adb [-d|-e|-s ]

查看adb的版本信息
adb version

adb devices
查看当前连接的设备的序列号

启动adb
adb start-server

停止adb
adb kill-server

以 root 权限运行 adbd
adb root

安装应用
adb install [-l] [-r] [-t] [-s] [-d] [-g]

常用:
adb install -d -r 路径名+xxx.apk

清除某包
adb shell pm clear com.tcl.android.launcher

查看项目类别
adb shell getprop |findStr low
在文件中寻找字符串
|findstr ?

参数 含义
-l 将应用安装到保护目录 /mnt/asec
-r 允许覆盖安装
-t 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
-s 将应用安装到 sdcard
-d 允许降级覆盖安装
-g 授予所有运行时权限
Success:代表安装成功。
Failure:代表安装失败。

adb shell pm clear com.tcl.android.launcher
清除一下数据,移除这个功能得同步排查一下是否会弹出提示语

从设备/模拟器卸载应用包
adb shell cmd package uninstall 【-k com.tcl.android.launcher】

指定 adb server 的网络端口
adb -P start-server
ADB的默认端口为 5037。

//指定apk 查看签名证书信息
keytool -printcert -jarfile C:\Users\lichao.jia.sz\Desktop\aaa\app-alcatel-withQuickstep-debug_release_new_platform.apk

//--------------------------------------------------------------
系统有关命令
1、adb shell getprop ro.hw.country —— 查询手机发货地址

2、adb shell getprop ro.product.cpu.abi ——查询海思芯片是32位还是64位

3、adb shell getprop ro.build.version.emui ——查询EMUI版本

4、adb shell getprop ro.product.manufacturer —— 查询设备制造商

5、adb shell getprop ro.product.brand ——查询手机品牌

6、adb shell getprop ro.product.model ——查询手机内部代号

7、adb shell getprop ro.product.name —— 查询设备名称

8、adb shell getprop ro.serialno —— 查询设备序列号

9、adb shell getprop ro.build.version.release —— 查询手机Android系统版本
//----------------------------------------------------------------
刷机相关命令
重启到 Recovery 模式
adb reboot recovery

从 Recovery 重启到 Android
adb reboot

从 Recovery 重启到 Android
adb reboot

通过 sideload 更新系统
如果我们下载了 Android 设备对应的系统更新包到电脑上,那么也可以通过 adb 来完成更新。
以 Recovery 模式下更新为例:

重启到 Recovery 模式。

adb reboot recovery

在设备的 Recovery 界面上操作进入 Apply update-Apply from ADB。注:不同 的 Recovery 菜单可能与此有差异,有的是一级菜单就有 Apply update from ADB。

通过 adb 上传和更新系统。

adb sideload <path-to-update.zip>
//------------------------------------------------------------------------

WLAN 连接(需要 USB 线)
借助 USB 通过 WiFi 连接来正常使用 adb 需要以下步骤:
操作步骤:
将 Android 设备与要运行 adb 的电脑连接到同一个 WiFi。
将设备与电脑通过 USB 线连接(可通过 adb devices 命令查看设备连接情况)。
通过 adb tcpip 5555 命令让设备在 5555 端口监听 TCP/IP 连接。
断开 USB 连接。
找到设备的 IP 地址(可以在「设置」-「关于手机」-「状态信息」-「IP地址」查看 IP 地址)。
通过 adb connect 命令使用 IP 地址将 Android 设备与电脑连接。
通过 adb devices 命令查看设备连接情况。
使用完毕后可通过 adb disconnect 命令断开无线连接。

WiFi 连接转为 USB 连接
通过adb usb命令以USB模式重新启动ADB:

adb usb

查看应用列表
查看应用列表的基本命令格式是:

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [–user USER_ID] [FILTER]

//---------------------------------------------------
1 查看所有应用
adb shell pm list packages

2 查看系统应用
adb shell pm list packages -s

3 查看第三方应用
adb shell pm list packages -3

4 包名包含某字符串的应用
比如要查看包名包含字符串 huawei 的应用列表,命令:

adb shell pm list packages huawei

adb install 实际是分三步完成:
push apk 文件到 /data/local/tmp。
调用 pm install 安装。
删除 /data/local/tmp 下的对应 apk 文件。

卸载应用
卸载应用的基本命令格式是:
adb uninstall [-k]

清除应用数据与缓存
adb shell pm clear

查看前台 Activity
adb shell dumpsys activity activities | grep mFocusedActivity

查看正在运行的 Services
adb shell dumpsys activity services []

查看应用详细信息
adb shell dumpsys package

查看应用安装路径
adb shell pm path

启动应用/ 调起 Activity
adb shell am start [options]

调起 Service
adb shell am startservice [options]

停止 Service
adb shell am stopservice [options]

发送广播
adb shell am broadcast [options]

从模拟器/设备下载指定的文件到计算机
从模拟器/设备下载指定的文件到计算机的基本命令格式是:
adb pull [local]

将指定的文件从计算机上传到模拟器/设备
将指定的文件从计算机上传到模拟器/设备的基本命令格式是:
adb push

列出指定目录的内容
列出模拟器/设备上指定目录的内容的基本命令格式是:
adb shell ls [options]

切换到目标目录
adb shell cd

删除文件或目录
adb shell rm [options]
参数 含义
无 删除文件
-f 强制删除文件,系统不提示
-r 强制删除指定目录中的所有文件和子目录
-d 删除指定目录,即使它是一个非空目录
-i 交互式删除,删除前提示

创建目录
adb shell mkdir [options]

输出当前目录路径
adb shell pwd

复制文件和目录
adb shell cp [options]

移动或重命名文件
adb shell mv [options]
//---------------------------------------------------------------
查看网络统计信息
adb shell netstat

通过配置文件配置和管理网络连接
netcfg 命令的格式如下:
adb shell netcfg [ {dhcp|up|down}]

显示、操作路由、设备、策略路由和隧道
ip 命令的格式如下:

adb shell ip [ options ] object

电源键
adb shell input keyevent 26

菜单键
adb shell input keyevent 82

HOME 键
adb shell input keyevent 3

返回键
adb shell input keyevent 4

音量控制
增加音量:

adb shell input keyevent 24

降低音量:

adb shell input keyevent 25

静音:

adb shell input keyevent 164
//-------------------------------------------------
媒体控制
播放/暂停:

adb shell input keyevent 85
1
停止播放:

adb shell input keyevent 86
1
播放下一首:

adb shell input keyevent 87
1
播放上一首:

adb shell input keyevent 88
1
恢复播放:

adb shell input keyevent 126
1
暂停播放:

adb shell input keyevent 127
//------------------------------------
滑动解锁
adb shell input swipe 300 1000 300 500

Android 日志
查看 Android 设备系统属性的基本命令格式是:

adb logcat [option] [filter-specs]

Android 的日志分为如下几个优先级(priority):

级别 含义
*:V 过滤只显示 Verbose 及以上级别(优先级最低)
*😄 过滤只显示 Debug 及以上级别
*:I 过滤只显示 Info 及以上级别
*:W 过滤只显示 Warning 及以上级别
*:E 过滤只显示 Error 及以上级别
*:F 过滤只显示 Fatal 及以上级别
*:S 过滤只显示 Silent 及以上级别(优先级最高,什么也不输出)
按某级别过滤日志则会将该级别及以上的日志输出。
比如,命令:

adb logcat *:W

清空已存在的日志
adb logcat -c

将日志显示在控制台
adb logcat -d

查看设备型号
adb shell getprop ro.product.model

查看设备电池状况
adb shell dumpsys battery

查看设备屏幕分辨率
adb shell wm size

查看设备屏幕密度
adb shell wm density

查看设备 android_id
adb shell settings get secure android_id

查看设备IMEI
在 Android 4.4 及以下版本可通过如下命令获取 IMEI:

adb shell dumpsys iphonesubinfo

Device ID 就是 IMEI。
而在 Android 5.0 及以上版本里这个命令输出为空,得通过其它方式获取了(需要 root 权限):

adb shell
su
service call iphonesubinfo 1

查看设备 Android 系统版本
adb shell getprop ro.build.version.release

查看设备 IP 地址
adb shell ifconfig | grep Mask

查看设备 Mac 地址
adb shell cat /sys/class/net/wlan0/address

屏幕截图
截图保存到电脑:
adb exec-out screencap -p > sc.png

重启手机
adb reboot

检测设备是否已 root
adb shell
su

使用 Monkey 进行压力测试
Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。
简单用法:

adb shell monkey -p -v 500

有关ADB命令大全(adb命令获取签名证书信息)的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  4. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  5. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  6. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  7. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  8. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  9. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

  10. ruby - 没有类方法获取 Ruby 类名 - 2

    如何在Ruby中获取BasicObject实例的类名?例如,假设我有这个:classMyObjectSystem我怎样才能使这段代码成功?编辑:我发现Object的实例方法class被定义为returnrb_class_real(CLASS_OF(obj));。有什么方法可以从Ruby中使用它? 最佳答案 我花了一些时间研究irb并想出了这个:classBasicObjectdefclassklass=class这将为任何从BasicObject继承的对象提供一个#class您可以调用的方法。编辑评论中要求的进一步解释:假设你有对象

随机推荐