Android 命令笔记
Android 笔记
获取root
adb root
adb shell
$ 表示未进入root #表示进入 root环境
whyred:/ $
whyred:/ #
查询apn信息
content query --uri content://telephony/carriers/preferapn
列出所有程序包名,列出目标设备中已安装的应用程序包
255|whyred:/ # pm list packages
package:com.miui.screenrecorder
package:com.android.cts.priv.ctsshim
package:com.qualcomm.qti.perfdump
package:com.miui.contentextension
package:com.android.internal.display.cutout.emulation.corner
package:com.android.gpstest.osmdroid
package:com.android.internal.display.cutout.emulation.double
package:com.android.providers.telephony
package:com.miui.powerkeeper
package:com.goodix.fingerprint
package:com.xiaomi.miplay_client
package:com.miui.fm
...
列出程序具体位置,列出目标设备中已安装的应用程序包的具体位置
127|whyred:/ # pm list packages -f
package:/data/app/MiuiScreenRecorder/MiuiScreenRecorder.apk=com.miui.screenrecorder
package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/system/app/Perfdump/Perfdump.apk=com.qualcomm.qti.perfdump
package:/system/priv-app/ContentExtension/ContentExtension.apk=com.miui.contentextension
package:/vendor/overlay/DisplayCutoutEmulationCorner/DisplayCutoutEmulationCornerOverlay.apk=com.android.internal.display.cutout.emulation.corner
package:/data/app/com.android.gpstest.osmdroid-_5BeZgq2hr50CRg3LYjDqw==/base.apk=com.android.gpstest.osmdroid
package:/vendor/overlay/DisplayCutoutEmulationDouble/DisplayCutoutEmulationDoubleOverlay.apk=com.android.internal.display.cutout.emulation.double
查看正在运行的 activity dumpsys activity [
包名是必须的、不需要写完整的包名、支持模糊匹配
whyred:/ # dumpsys activity com.android.camera
TASK com.android.camera id=1314 userId=0
ACTIVITY com.android.camera/.Camera 15d1ffa pid=9166
Local FragmentActivity 89bc38 State:
mCreated=truemResumed=true mStopped=false mReallyStopped=false
mLoadersStarted=true
Active Fragments in 944cb28:
#0: FragmentBottomPopupTips{120e041 #0 id=0x7f0a00f2 4081}
mFragmentId=#7f0a00f2 mContainerId=#7f0a00f2 mTag=4081
mState=5 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
mAdded=true mRemoving=false mResumed=true mFromLayout=false mInLayout=false
mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
mRetainInstance=false mRetaining=false mUserVisibleHint=true
mFragmentManager=FragmentManager{944cb28 in HostCallbacks{29979e6}}
mHost=android.support.v4.app.FragmentActivity$HostCallbacks@29979e6
mContainer=android.widget.FrameLayout{6f08e14 V.E...... ........ 0,1358-1080,2160 #7f0a00f2 app:id/bottom_popup_tips}
mView=android.widget.FrameLayout{40f3bf3 V.E...... ........ 0,0-1080,192}
mInnerView=android.widget.FrameLayout{40f3bf3 V.E...... ........ 0,0-1080,192}
Child FragmentManager{c612b27 in FragmentBottomPopupTips{120e041}}:
FragmentManager misc state:
mHost=android.support.v4.app.FragmentActivity$HostCallbacks@29979e6
mContainer=android.support.v4.app.Fragment$1@7af71d4
mParent=FragmentBottomPopupTips{120e041 #0 id=0x7f0a00f2 4081}
mCurState=5 mStateSaved=false mDestroyed=false
未知包名,查看最上层activity
adb shell dumpsys activity activities | findstr mFocusedActivity # 安卓8.0以下
adb shell dumpsys activity activities | findstr mResumedActivity # 安卓8.0以上
dumpsys activity activities | grep mFocusedActivity # 安卓8.0以下
dumpsys activity activities | grep mResumedActivity # 安卓8.0以上
停止应用 am force-stop
am force-stop com.android.camera
启动 activity am start -n [
whyred:/ # am start -n com.android.camera/.Camera
Starting: Intent { cmp=com.android.camera/.Camera }
启动service
am startservice com.nandhan.myservice/.MyService
查看正在运行的service
dumpsys activity services [<packagename>]
清除应用数据
pm clear com.googleplayapp.storerootsuaction
打开网站
am start -a android.intent.action.VIEW -d http://baidu.com
设备控制
reboot #重启
svc wifi enable #打开wifi
svc wifi disable #关闭wifi
settings get global wifi_on #查看WiFi状态
svc data enable #打开数据
svc data disable #关闭数据
# 打开飞行模式
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
#关闭飞行模式
settings put global airplane_mode_on 0
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false
#打开gps
settings put secure location_providers_allowed +gps
#关闭gps
settings put secure location_providers_allowed -gps
#查看gps状态
settings get secure location_providers_allowed
#打开蓝牙
service call bluetooth_manager 6
settings put global bluetooth_on 1
#打开蓝牙
svc bluetooth enable
#关闭蓝牙
service call bluetooth_manager 8
settings put global bluetooth_on 0
#关闭蓝牙
svc bluetooth disable
#查看蓝牙状态
settings get global bluetooth_on
#开启nfc
svc nfc enable
#关闭nfc
svc nfc disable
#设置未知来源
settings put secure install_non_market_apps 1
#恢复出厂设置
am broadcast -a android.intent.action.MASTER_CLEAR
# 切换网络制式,修改preferred_network_mode
settings put global preferred_network_mode2 7 #mode2 表示sim卡2
adb shell stop ril-daemon
adb shell start ril-daemon
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE
sleep 5
settings put global airplane_mode_on 0
am broadcast -a android.intent.action.AIRPLANE_MODE
拨打电话 service call phone 2 s16 "10086" am start -a android.intent.action.CALL tel:XXXX
挂断电话 input keyevent KEYCODE_ENDCALL 或 input keyevent 6
whyred:/ # am start -a android.intent.action.CALL tel:10000
Starting: Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxx }
whyred:/ # input keyevent KEYCODE_ENDCALL
whyred:/ #
/通过shell命令设置gateWay/
route add default gw 192.168.1.1 dev eth0
/通过shell命令查看gateWay/
ip route show
返回值:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.109
/通过shell命令设置IP和netmask/
ifconfig eth0 192.168.0.173 netmask 255.255.255.0
/通过shell命令查看IP和netmask/
ifconfig eth0
返回值:
eth0: ip 192.168.1.109 mask 255.255.255.0 flags [up broadcast running multicast]
/通过shell命令查看DNS/
getprop net.eth0.dns1
getprop net.eth0.dns2
/通过shell命令设置DNS/
setprop net.eth0.dns1 8.8.8.8
setprop net.eth0.dns2 8.8.4.4
/通过shell命令查看所有网络信息/
netcfg
返回值:
tunl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
gre0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
eth0 UP 192.168.1.74/24 0x00001043 1c:ca:e3:40:58:b1
sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
ip6tnl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
绑定port启动ViewServer
adb shell service call window 1 i32 $port
停止ViewServer
adb shell service call window 2
检查ViewServer是否正在运行
adb shell service call window 3
按home键(详见KeyEvent.java中的定义)
adb shell input keyevent 3
按back键
adb shell input keyevent 4
按menu键
adb shell input keyevent 82
viewRootImpl.java
设置系统属性“viewancestor.profile_rendering”为true能强制当前窗口以60 HZ渲染。它可用作度量潜在帧率。
显示fps
dumpsys gfxinfo activity_name
收集动作指令
getevent
sendevent
android c/c++ 编译
参考链接 https://www.jianshu.com/p/c30860804713
需要在 android studio中 安装 cmake NDK
新建目录 编写 c 文件 和 CMakeLists.txt
CMakeList.txt
# CMake最低版本号要求
cmake_minimum_required(VERSION 3.4.1)
# 项目信息
project (hello)
# 设置目标文件的名字
set(TARGET_NAME hello)
# 生成可执行文件
add_executable(${TARGET_NAME} helloworld.c)
创建 build.bat 执行 cmake
#选择编译系统环境
REM set abi=armeabi-v7a
set abi=x86
set ndk-bundle=ndk/21.3.6528147
if not exist %abi% md %abi%
cd %abi%
%ANDROID_SDK_HOME%/cmake/3.10.2.4988404/bin/cmake ^
-DANDROID_ABI=%abi% ^
-DANDROID_NDK=%ANDROID_SDK_HOME%/%ndk-bundle% ^
-DCMAKE_BUILD_TYPE=Debug ^
-DCMAKE_TOOLCHAIN_FILE=%ANDROID_SDK_HOME%/%ndk-bundle%/build/cmake/android.toolchain.cmake ^
-DANDROID_NATIVE_API_LEVEL=9 ^
-DANDROID_TOOLCHAIN=clang -DCMAKE_GENERATOR="Ninja" ^
-DCMAKE_MAKE_PROGRAM=%ANDROID_SDK_HOME%/cmake/3.10.2.4988404/bin/ninja ^
..
%ANDROID_SDK_HOME%/cmake/3.10.2.4988404/bin/ninja
cd ..
pause
将可执行文件push 到安卓设备中 chmod 777 file 后 运行
注意 需要将文件push 到 /data/local/tmp 目录下,其他会出现 Permission denied 错误
generic_x86:/storage/test # ./hello
/system/bin/sh: ./hello: can't execute: Permission denied
#######
generic_x86:/data/local/tmp # ./hello
Hello World!

浙公网安备 33010602011771号