adb 操控系统命令开关:WIFI,GPS,蓝牙等

1. 获取内部版本号: adb shell getprop ro.build.display.innerver
2. 获取按键值: adb shell getevent
3. 获取apk信息: adb shell dumpsys package 包名 ->info.txt
4. 获取应用包名:adb shell dumpsys window windows | grep mFocusedApp  或者 adb shell dumpsys window windows | findstr mFocusedApp
5. 打开WiFi设置界面:adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
6. 打开热点设置界面:adb shell am start -n com.android.settings/.TetherSettings
7. 查询蓝牙是否开启:
adb shell settings get global bluetooth_on   返回结果0代表关闭,1代表开启
adb shell dumpsys bluetooth_manager | findstr enabled     返回结果是true或者false,说明开启或关闭
8. 查询WiFi是否开启:adb shell settings get global wifi_on     返回结果0代表关闭,1代表开启 
9. 查询蓝牙地址:adb shell settings get secure bluetooth_address
10. 查询WiFi地址:adb shell cat /sys/class/net/wlan0/address
11. 开启WiFi:adb shell svc wifi enable
12. 关闭WiFi:adb shell svc wifi disable
13. 打开蓝牙设置界面:adb shell am start -a android.settings.BLUETOOTH_SETTINGS
14. 获取手机休眠时间:adb shell settings get system screen_off_timeout
15. 更改手机休眠时间:adb shell settings put system screen_off_timeout 600000(10分钟)
16. 获取系统默认输入法:adb shell settings get secure default_input_method
17. 获取手机是否为自动亮度:adb shell settings get system screen_brightness_mode  (0代表非自动,1代表为自动)
18. 设置手机为自动调整亮度:adb shell settings put system screen_brightness_mode 1    
19. 获取手机当前亮度:adb shell settings get system screen_brightness
20. 设置手机亮度(0-255):adb shell settings put system screen_brightness 350
21. 打开定位设置界面:adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
22. 开启定位:adb shell settings put secure location_providers_allowed +gps
23. 关闭定位:adb shell settings put secure location_providers_allowed -gps
24. 查看定位方式:adb shell settings get secure location_providers_allowed  (前提是位置信息开启)
25. 拨打电话:adb shell am start -a android.intent.action.CALL tel:8888888888888
26. 发送短信:adb shell am start -a android.intent.action.SENDTO -d sms:10086(发送目的号码) --es sms_body "hello"(短信内容) --ez exit_on_sent true 
27. 获取应用包名:adb shell dumpsys window windows | findstr  mFocusedApp 
28. 清除应用数据与缓存: adb shell pm clear cn.com.test.mobile
29. 启动应用: adb shell am start -n cn.com.test.mobile/.ui.SplashActivity 
30. 停止应用:adb shell am force-stop cn.com.test.mobile
31. 飞行模式:adb shell settings set global airplane_mode_on   (0==关闭,1==开启)
32. 开启飞行模式:adb shell settings put global airplane_mode_on 1
33. 手机震动测试(前提手机root):①adb shell ②echo '3000'>/sys/devices/virtual/timed_output/vibrator/enable
34. 向上滑:adb shell input touchscreen swipe 930 880 930 380 
35. 向下滑:adb shell input touchscreen swipe 930 380 930 880
36. 向右滑:adb shell input touchscreen swipe 330 880 930 880 
37. 向左滑:adb shell input touchscreen swipe 930 880 330 880
38. 模拟鼠标点击操作:adb shell input mouse tap 100 500
39. 长按:adb shell input swipe startX startY startX startY 500
40. 滑动解锁:adb shell input swipe 300 1000 300 500
41. 冷启动app:adb shell am start -W -n package/activity
42. 热启动:①停止app: adb shell input keyevent 3  ②adb shell am start -W -n package/activity
43. 查看内存占用情况:adb -s 设备号 shell top -m 进程数量 -n 数据的刷新次数 -s 按哪列进行排序 -d 刷新时间间隔(默认5秒)
44. 切换手机电池为非充电状态: adb shell dumpsys battery set status 1
45. 改变手机电量: adb shell dumpsys battery set level 58
46. 获取当前电量:adb shell cat /sys/class/power_supply/battery/capacity
47. 手机截屏:adb shell /system/bin/screencap -p /sdcard/screenshot.png
48. 录制屏幕:adb shell screenrecord --time-limit 10 /sdcard/demo.mp4
49. 获取手机型号:adb shell getprop ro.product.model
50. 获取电池信息:adb shell dumpsys battery  
51. 获取屏幕分辨率:adb shell wm size
52. 获取屏幕密度:adb shell wm density
53. 显示屏参数:adb shell dumpsys window displays
54. 获取手机IP地址:adb shell ifconfig | findstr Mask
55. 查看WiFi局域网地址:adb shell ifconfig wlan0
56. 显示区域位置:adb shell wm overscan 0,0,0,200  (四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白)
57. 恢复原显示区域命令:adb shell wm overscan reset
58. 获取USB调试模式:adb shell settings get global adb_enabled
59. 关闭USB调试模式:adb shell settings put global adb_enabled 0
60. 状态栏和导航栏的显示隐藏:
adb shell settings put global policy_control <key-values>
<key-values> 可由如下几种键及其对应的值组成,格式为 <key1>=<value1>:<key2>=<value2>。
  immersive.full----------同时隐藏
  immersive.status----------隐藏状态栏
  immersive.navigation----------隐藏导航栏
  immersive.preconfirms----------?
这些键对应的值可则如下值用逗号组合:
  apps----------所有应用
  *----------所有界面
  packagename----------指定应用
 -packagename----------排除指定应用
例如:
adb shell settings put global policy_control immersive.full=*
表示设置在所有界面下都同时隐藏状态栏和导航栏。
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。
61. 打开网页: adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com
62. 查看通信日志 :adb logcat -b radio (常用于查看详细的通话状态)
63. 获取界面控件:adb uiautomator dump
64. 列出输入法:adb shell ime list -s 
65. 永不休眠:adb shell settings put system screen_off_timeout 2147483647
66. 关闭\打开自动旋转:adb shell settings put system accelerometer_rotation 0\1
<think>好的,我现在要解决用户在IAR编译器中遇到的错误:“incomplete type is not allowed”。首先,我需要理解这个错误的含义和常见原因。根据我的知识库,这个错误通常发生在代码中使用了未完全定义的类型,比如结构体或联合体声明了但未定义,或者前向声明了某个类型但没有提供完整的定义。 首先,我应该检查用户代码中是否有结构体或联合体的声明但没有定义的情况。比如,如果有一个结构体声明为`struct MyStruct;`,但没有后续的完整定义,那么在需要该结构体大小或成员的地方,编译器就会报这个错误。这时候,需要用户补全结构体的定义,包括成员变量。 其次,检查是否在头文件中只声明了类型而没有包含定义。例如,如果在头文件中使用前向声明,但在使用该类型的源文件中没有包含实际的定义头文件,这也会导致错误。此时,需要确保在使用类型的地方包含了正确的头文件,或者将前向声明替换为完整的定义。 另外,还要考虑typedef的问题。如果用户使用了typedef创建别名,但原始类型未完全定义,同样会引发错误。例如,`typedef struct MyStruct MyType;`之后,如果尝试使用MyType但MyStruct尚未定义,就会出错。需要确保在使用typedef之前,原始类型已经被完整定义。 此外,数组声明中的类型不完整也是一个常见原因。比如声明数组时,如果元素类型未完全定义,编译器无法确定数组的大小,导致错误。需要检查数组声明中的类型是否已经完整定义。 可能还有其他情况,比如在C和C++混合编程时,如果没有正确使用extern "C",或者在头文件中遗漏了必要的包含,也可能导致类型不完整。需要用户检查这些方面。 接下来,我需要将这些可能的原因整理成清晰的解决步骤,并给出具体的代码示例,帮助用户理解如何修改。同时,根据用户提供的引用内容,虽然引用[1]和引用[2]是关于其他错误的,但用户可能希望看到类似的结构,即分点说明解决方案,并引用相关资源。 最后,生成相关问题,帮助用户进一步了解可能相关的编译错误,比如类型未定义、前向声明问题等。这样用户可以有更全面的认识,预防其他类似错误的发生。</think>### IAR编译器错误'incomplete type is not allowed'解决方案 该错误表示代码中使用了**未完全定义的类型**,编译器无法确定其内存布局或成员信息。以下是具体原因及解决方法: #### 1. 结构体/联合体未定义完整 若声明了结构体但未定义成员,在实例化时会报错: ```c struct MyStruct; // 前向声明不完整 struct MyStruct var; // 错误:使用未完成类型 ``` **解决方案**:补全类型定义 ```c struct MyStruct { int id; char name[20]; }; ``` #### 2. 头文件包含缺失 当跨文件使用类型时,需确保定义可见: ```c // file.h struct Data; // 前向声明 // file.c struct Data { // 实际定义 int value; }; ``` **解决方案**:在使用该类型的文件中包含定义头文件 ```c #include "file.c" // 包含实际定义 ``` #### 3. typedef别名问题 使用typedef时原始类型必须完整: ```c typedef struct Node NodeT; // 前向声明 NodeT* ptr; // 允许指针声明 NodeT instance; // 错误:不完整类型 ``` **解决方案**:先完成类型定义再typedef ```c struct Node { int data; struct Node* next; }; typedef struct Node NodeT; ``` #### 4. 数组声明不完整 数组元素类型必须完全定义: ```c struct Element; struct Element arr[10]; // 错误:元素类型未定义 ``` **解决方案**: ```c struct Element { int type; float value; }; struct Element arr[10]; // 合法 ``` #### 调试建议 1. 在IAR工程中搜索错误行号定位问题代码 2. 使用Go to Definition功能追踪类型定义 3. 检查所有头文件包含链 4. 确认没有循环依赖的头文件 编译器需要知道类型的完整信息才能: - 计算sizeof大小 - 分配内存空间 - 访问成员变量 - 进行类型对齐 [^1]: 类似类型转换错误可参考浮点转整型的类型适配问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值