• 关于

    ro

    的搜索结果

问题

4、class_rw_t 和 class_ro_t 的区别

4、class_rw_t 和 class_ro_t 的区别...
游客bnlxddh3fwntw 2020-04-13 15:05:25 0 浏览量 回答数 1

问题

ipython NameError,找不到类

这就是遇到问题的app.py from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) mysql://user...
kun坤 2019-12-27 10:12:15 0 浏览量 回答数 0

回答

@RestController public class ShopController { @Autowired private ShopService shopService; /** * 获取商店详情 * * @param userId * 用户id * @param shopId * 商家id * * @return 商店详情 */ @RequestMapping(value = "/getShopDeatil") public ResultObject getShopDeatil(@RequestParam("userId") String userId, @RequestParam("shopId") Integer shopId) { System.out.println("请求路径:/getShopDeatil"+"\n"+"{"+"\n"+ "loginInfo:"+userId+"\n"+ "password:"+shopId+"\n"+ "}" ); ResultObject ro = shopService.getShopDetail(userId, shopId); return ro; } }
a123456678 2019-12-02 02:14:11 0 浏览量 回答数 0

回答

public class MACHelper { [DllImport("wininet.dll")] private extern static bool InternetGetConnectedState(int Description, int ReservedValue); /// <summary> /// 是否能连接上Internet /// </summary> /// <returns></returns> public bool IsConnectedToInternet() { int Desc = 0; return InternetGetConnectedState(Desc, 0); } /// <summary> /// 获取MAC地址 /// </summary> public string GetMACAddress() { //得到 MAC的注册表键 RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control") .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}"); IList<string> list = macRegistry.GetSubKeyNames().ToList(); IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties(); NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); var adapter = nics.First(o => o.Name == "本地连接"); if (adapter == null) return null; return string.Empty; } /// <summary> /// 设置MAC地址 /// </summary> /// <param name="newMac"></param> public void SetMACAddress(string newMac) { string macAddress; string index = GetAdapterIndex(out macAddress); if (index == null) return; //得到 MAC的注册表键 RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control") .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}").OpenSubKey(index, true); if (string.IsNullOrEmpty(newMac)) { macRegistry.DeleteValue("NetworkAddress"); } else { macRegistry.SetValue("NetworkAddress", newMac); macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("Default", newMac); macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("ParamDesc", "Network Address"); } Thread oThread = new Thread(new ThreadStart(ReConnect));//new Thread to ReConnect oThread.Start(); } /// <summary> /// 重设MAC地址 /// </summary> public void ResetMACAddress() { SetMACAddress(string.Empty); } /// <summary> /// 重新连接 /// </summary> private void ReConnect() { NetSharingManagerClass netSharingMgr = new NetSharingManagerClass(); INetSharingEveryConnectionCollection connections = netSharingMgr.EnumEveryConnection; foreach (INetConnection connection in connections) { INetConnectionProps connProps = netSharingMgr.get_NetConnectionProps(connection); if (connProps.MediaType == tagNETCON_MEDIATYPE.NCM_LAN) { connection.Disconnect(); //禁用网络 connection.Connect(); //启用网络 } } } /// <summary> /// 生成随机MAC地址 /// </summary> /// <returns></returns> public string CreateNewMacAddress() { //return "0016D3B5C493"; int min = 0; int max = 16; Random ro = new Random(); var sn = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}", ro.Next(min, max).ToString("x"),//0 ro.Next(min, max).ToString("x"),// ro.Next(min, max).ToString("x"), ro.Next(min, max).ToString("x"), ro.Next(min, max).ToString("x"), ro.Next(min, max).ToString("x"),//5 ro.Next(min, max).ToString("x"), ro.Next(min, max).ToString("x"), ro.Next(min, max).ToString("x"), ro.Next(min, max).ToString("x"), ro.Next(min, max).ToString("x"),//10 ro.Next(min, max).ToString("x") ).ToUpper(); return sn; } /// <summary> /// 得到Mac地址及注册表对应Index /// </summary> /// <param name="macAddress"></param> /// <returns></returns> public string GetAdapterIndex(out string macAddress) { ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection colMObj = oMClass.GetInstances(); macAddress = string.Empty; int indexString = 1; foreach (ManagementObject objMO in colMObj) { indexString++; if (objMO["MacAddress"] != null && (bool)objMO["IPEnabled"] == true) { macAddress = objMO["MacAddress"].ToString().Replace(":", ""); break; } } if (macAddress == string.Empty) return null; else return indexString.ToString().PadLeft(4, '0'); } #region Temp public void noting() { //ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapter"); ManagementObjectCollection colMObj = oMClass.GetInstances(); foreach (ManagementObject objMO in colMObj) { if (objMO["MacAddress"] != null) { if (objMO["Name"] != null) { //objMO.InvokeMethod("Reset", null); objMO.InvokeMethod("Disable", null);//Vista only objMO.InvokeMethod("Enable", null);//Vista only } //if ((bool)objMO["IPEnabled"] == true) //{ // //Console.WriteLine(objMO["MacAddress"].ToString()); // //objMO.SetPropertyValue("MacAddress", CreateNewMacAddress()); // //objMO["MacAddress"] = CreateNewMacAddress(); // //objMO.InvokeMethod("Disable", null); // //objMO.InvokeMethod("Enable", null); // //objMO.Path.ReleaseDHCPLease(); // var iObj = objMO.GetMethodParameters("EnableDHCP"); // var oObj = objMO.InvokeMethod("ReleaseDHCPLease", null, null); // Thread.Sleep(100); // objMO.InvokeMethod("RenewDHCPLease", null, null); //} } } } public void no() { Shell32.Folder networkConnectionsFolder = GetNetworkConnectionsFolder(); if (networkConnectionsFolder == null) { Console.WriteLine("Network connections folder not found."); return; } Shell32.FolderItem2 networkConnection = GetNetworkConnection(networkConnectionsFolder, string.Empty); if (networkConnection == null) { Console.WriteLine("Network connection not found."); return; } Shell32.FolderItemVerb verb; try { IsNetworkConnectionEnabled(networkConnection, out verb); verb.DoIt(); Thread.Sleep(1000); IsNetworkConnectionEnabled(networkConnection, out verb); verb.DoIt(); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } } /// <summary> /// Gets the Network Connections folder in the control panel. /// </summary> /// <returns>The Folder for the Network Connections folder, or null if it was not found.</returns> static Shell32.Folder GetNetworkConnectionsFolder() { Shell32.Shell sh = new Shell32.Shell(); Shell32.Folder controlPanel = sh.NameSpace(3); // Control panel Shell32.FolderItems items = controlPanel.Items(); foreach (Shell32.FolderItem item in items) { if (item.Name == "网络连接") return (Shell32.Folder)item.GetFolder; } return null; } /// <summary> /// Gets the network connection with the specified name from the specified shell folder. /// </summary> /// <param name="networkConnectionsFolder">The Network Connections folder.</param> /// <param name="connectionName">The name of the network connection.</param> /// <returns>The FolderItem for the network connection, or null if it was not found.</returns> static Shell32.FolderItem2 GetNetworkConnection(Shell32.Folder networkConnectionsFolder, string connectionName) { Shell32.FolderItems items = networkConnectionsFolder.Items(); foreach (Shell32.FolderItem2 item in items) { if (item.Name == "本地连接") { return item; } } return null; } /// <summary> /// Gets whether or not the network connection is enabled and the command to enable/disable it. /// </summary> /// <param name="networkConnection">The network connection to check.</param> /// <param name="enableDisableVerb">On return, receives the verb used to enable or disable the connection.</param> /// <returns>True if the connection is enabled, false if it is disabled.</returns> static bool IsNetworkConnectionEnabled(Shell32.FolderItem2 networkConnection, out Shell32.FolderItemVerb enableDisableVerb) { Shell32.FolderItemVerbs verbs = networkConnection.Verbs(); foreach (Shell32.FolderItemVerb verb in verbs) { if (verb.Name == "启用(&A)") { enableDisableVerb = verb; return false; } else if (verb.Name == "停用(&B)") { enableDisableVerb = verb; return true; } } throw new ArgumentException("No enable or disable verb found."); } #endregion }
a123456678 2019-12-02 02:00:05 0 浏览量 回答数 0

问题

@ResponseBody与response.getWriter .write()区别

前台ajax提交一个请求,spring mvc中用注解@ResponseBody与response.getWriter .write()有什么区别呢?当前项目网页版用@ResponseBody没问题,但是wap的用@Response的就报异...
蛮大人123 2019-12-01 19:59:20 2797 浏览量 回答数 1

问题

关于Android下面代码运行时候报错,仔细核对了控件名,没有问题

button_user_alert.setOnClickListener(new OnClickListener() { View view = View.inflate(DialogComponentTest.this, R.layou...
爵霸 2019-12-01 20:24:52 1245 浏览量 回答数 1

问题

java语言怎么反转字符

怎么用java把 To be or not to be 变成 oT eb ro ton ot eb ? ?...
蛮大人123 2019-12-01 19:58:13 1005 浏览量 回答数 1

问题

磁盘锁定之后如何清理数据?

磁盘满判定条件 任何一个计算组磁盘空间达到限制或者主节点(Master)磁盘空间达到限制,就会锁定整个实例。 检查是否锁定 检查实例是否被锁定的命令如下(需要直接连接数据库...
云栖大讲堂 2019-12-01 21:28:21 1299 浏览量 回答数 0

回答

回 楼主(allen.ro) 的帖子 allen同学,您可以按年购买,这样送一个备案许可号
nono20011908 2019-12-02 03:14:31 0 浏览量 回答数 0

回答

磁盘满判定条件 任何一个计算组磁盘空间达到限制或者主节点(Master)磁盘空间达到限制,就会锁定整个实例。 检查实例是否锁定 直接连接数据库,执行以下命令,检查实例是否被锁定: show rds_force_trans_ro_non_sup; 根据返回结果,如果 rds_force_trans_ro_non_sup 的值为 on,表示实例已被锁定,数据库已处于只读状态。 如何清理数据 当实例因磁盘满被锁定时,AnalyticDB for PostgreSQL 仍然支持对数据表进行truncate/drop/grant 操作。清理数据后,如果磁盘空间降到阈值以下,过大约5分钟实例会自动解锁。 注意 实例锁定后,不支持 delete 操作。因为 delete 会写 xlog,使空间占用增大。 另外,您可以执行以下语句来查询表的大小: select pg_size_pretty(pg_total_relation_size('test'));
保持可爱mmm 2020-03-29 13:14:23 0 浏览量 回答数 0

回答

ipv6转换服务:https://help.aliyun.com/document_detail/85570.html?spm=5176.cnipv6trans.0.0.651b39f64Ik6ro
aoteman675 2019-12-02 01:43:37 0 浏览量 回答数 0

回答

回 楼主(ro_se) 的帖子 你好,这次比赛比较特殊,不能下载数据到本地,只能在我们的平台进行
宁晶 2019-12-02 02:21:01 0 浏览量 回答数 0

问题

短信套餐无法购买

这个页面的短信套餐无法购买 https://promotion.aliyun.com/ntms/act/communication/aliyun-group/buy.html?group=ro3n2yeCHc ...
1083534597607198 2019-12-01 18:57:38 410 浏览量 回答数 1

问题

后台登不进去,那个默认的admin 和123456是在代码哪里啊?test_ro?报错

@獨家微笑 你好,想跟你请教个问题: 后台报错  ...
爱吃鱼的程序员 2020-06-22 18:54:07 1 浏览量 回答数 1

回答

如果不是你主动挂载成 ro 的(并且那个文件系统/介质确实是可写的,不是 ISO 镜像、光盘、squashfs 等),通常说明文件系统有地方出错了。请检查内核日志。尝试使用 fsck 命令来修复文件系统(如有重要数据请先备份,fsck 也经常把文件系统搞得更坏)。
a123456678 2019-12-02 02:53:02 0 浏览量 回答数 0

回答

如果不是你主动挂载成 ro 的(并且那个文件系统/介质确实是可写的,不是 ISO 镜像、光盘、squashfs 等),通常说明文件系统有地方出错了。请检查内核日志。尝试使用 fsck 命令来修复文件系统(如有重要数据请先备份,fsck 也经常把文件系统搞得更坏)。
a123456678 2019-12-02 02:51:21 0 浏览量 回答数 0

回答

如果不是你主动挂载成 ro 的(并且那个文件系统/介质确实是可写的,不是 ISO 镜像、光盘、squashfs 等),通常说明文件系统有地方出错了。请检查内核日志。尝试使用 fsck 命令来修复文件系统(如有重要数据请先备份,fsck 也经常把文件系统搞得更坏)。
a123456678 2019-12-02 02:51:21 0 浏览量 回答数 0

回答

/成了只读了目测你的很多程序都没法工作了,起码/tmp下释放临时文件的那些全得挂。mysql这些在/var/run建立unix domain socket的程序也得挂。想让/变只读,简单,怒砸硬盘,产生坏道,只要系统还能工作,你就会发现内核自动把/改为ro模式
a123456678 2019-12-02 02:49:04 0 浏览量 回答数 0

问题

将linux根目录挂载成只读

有个项目做完之后需要将linux根目录挂载成只读,不允许用户修改。 系统:centos 6.3 文件系统:ext4 内核:2.6.x 已经使用过的方法 1.关闭非关键服务,使用mount -no remount,ro /进行重新挂载成只读,...
a123456678 2019-12-01 20:00:24 2035 浏览量 回答数 1

问题

云数据库PolarDB的功能特性

POLARDB采用了Active R/W – Active RO的数据库读写分离的策略,同时使用了RDMA高速网络和分布式共享存储,并针对数据库内核进行了深度优化。 性能大幅提升,最高的读性能能达到...
云栖大讲堂 2019-12-01 21:31:56 981 浏览量 回答数 1

回答

class_rw_t:代表的是可读写的内存区,这块区域中存储的数据是可以更改的。 class_ro_t:代表的是只读的内存区,这块区域中存储的数据是不可以更改的。 OC对象中存储的属性、方法、遵循的协议数据其实被存储在这两块儿内存区域的,而我们通过runtime动态修改类的方法时,是修改在class_rw_t区域中存储的方法列表。
游客bnlxddh3fwntw 2020-04-13 15:05:34 0 浏览量 回答数 0

回答

  解决办法:使用CentOS安装光盘进行开机GRUB引导修复   具体操作:   使用CentOS系统光盘引导计算机(系统盘要与原来安装的系统版本相同)   按F5进入系统修复模式   输入:linux rescue 回车   默认OK   选择Continue出现下面的界面   输入:chroot /mnt/sysimage ,回车 #将当前目录切换到原来系统的根目录   继续输入:grub 回车   输入:root (hd0,0) 回车 #注意root与(hd0,0) 之间必须要有空格   继续输入:setup (hd0) 回车 #注意root与(hd0) 之间必须要有空格   再次输入:quit 回车 #退出grub模式   最后输入:reboot #重启系统   拿出光盘,grub修复完毕,可以正常进入系统   备注:如果通过上面的操作还是无法正常进入系统   可以在   输入:chroot /mnt/sysimage 之后继续输入   vi /boot/grub/grub.conf #编辑,添加以下内容(CentOS 5.9为例)   # grub.conf generated by anaconda   #   # Note that you do not have to rerun grub after making changes to this file   # NOTICE: You have a /boot partition. This means that   # all kernel and initrd paths are relative to /boot/, eg.   # root (hd0,0)   # kernel /vmlinuz-version ro root=/dev/sda3   # initrd /initrd-version.img   #boot=/dev/sda1   default=0   timeout=5   splashimage=(hd0,0)/grub/splash.xpm.gz   hiddenmenu   title CentOS (2.6.18-348.el5)   root (hd0,0)   kernel /vmlinuz-2.6.18-348.el5 ro root=LABEL=/   initrd /initrd-2.6.18-348.el5.img   :wq! #保存退出   输入:quit 回车 #退出grub模式   输入:reboot #重启系统   一般都可修复成功,正常进入系统。   如果系统是通过U盘安装的,拔了U盘之后就进不了系统,插上U盘又可以正常启动   可以采用如下方法修复   插上U盘,正常进入系统   输入:grub-install /dev/sda #安装grub到sda   vi /boot/grub/device.map #编辑修改为   (hd0) /dev/sda   之前可能为:   (hd1) /dev/sda   (hd0) /dev/sdb   vi /boot/grub/grub.conf #编辑修改里面的(hd1,0)为(hd0,0)   title CentOS (2.6.18-348.el5)   root (hd0,0)   kernel /vmlinuz-2.6.18-348.el5 ro root=LABEL=/   initrd /initrd-2.6.18-348.el5.img   后面的全部删除   保存后重启,拿掉U盘,即可正常进入系统。 答案来源网络,供参考,希望对您有帮助
问问小秘 2019-12-02 03:02:31 0 浏览量 回答数 0

回答

首先,您的adduser命令对您有用吗?按照您的模式,我使用useradd而不是adduser创建了一个用户: useradd -m -d /home/name -s /bin/bash -g 1002 name 假设您的系统上已经存在ID为1002的组,那么以下docker命令也应为您工作: docker run -v /home/name:/usr/share/nginx/html:ro -p 8080:80 -d nginx 95e38e96b6b1fdfbf18aece7ccb3c3486db5dc1b142f60515076d8d49fc815f6
祖安文状元 2020-01-16 17:45:27 0 浏览量 回答数 0

问题

请教:安卓触摸屏经常“连击”误操作 点击报错

本人不懂编程,给家人买了个平板,其它都行,就是固件触摸屏单击命令经常会变成连击操作了。使用体验不好。看了网上的方法,尝试修改了build.prop文件,添加了ro.min...
huc_逆天 2020-05-27 21:27:27 1 浏览量 回答数 0

问题

请教:安卓触摸屏经常“连击”误操作,问题可能出在那里? - 安卓报错

本人不懂编程,给家人买了个平板,其它都行,就是固件触摸屏单击命令经常会变成连击操作了。使用体验不好。看了网上的方法,尝试修改了build.prop文件,添加了ro.min...
kun坤 2020-06-05 21:53:17 3 浏览量 回答数 1

回答

这个问题基本断定是容器内的网络环境无法与外网连通。 $:docker exec -ti ${containerId} bash $:ping www.aliyun.com $:mysql -u ${user} -P 3306 -p 以下后台启动 默认采用bridge桥接模式 $:docker run -d --restart=always -v /opt/jar:/opt/jar:rw -v /etc/localtime:/etc/localtime:ro docker有五种网络模式: 使用命令行启动 $: docker --net=bridge # 桥接模式 $: docker --net=host # 与本机共享网络 $: docker --net=none # 不启用虚拟网卡 $: docker --net=container # 采用另一个容器网络 $: docker --net=overlay # 这个比较复杂,主要用于两台独立物理主机内的docker容器中的多台主机相互通讯
哈尼 2019-12-02 02:10:32 0 浏览量 回答数 0

回答

创建要导出的目录: mkdir /tmp/nfs 通过添加以下行/tmp/nfs *(sync,sync,ro,no_subtree_check,fsid=0468884e-fdab-11e9-8ee6-4b007bc13e45)来配置目录/etc/exports sudo exportfs -ra 确保NFS服务器正在运行。 创建要挂载客户端的目录: mkdir /tmp/hang mount -t nfs -o vers=3 localhost:/tmp/nfs /tmp/hang 运行ls /tmp/hang-一切都很好。 关闭NFS服务器。 运行ls /tmp/hang-它会挂起。 再次运行NFS服务器。 该ls命令将被释放。 关闭NFS服务器的另一种方法是通过阻止客户端iptables。这样的好处是,您可以设置多个网络接口,通过不同的接口安装多个客户端,然后通过使用阻止网络接口来选择性地阻止客户端iptables。
祖安文状元 2020-01-08 15:21:29 0 浏览量 回答数 0

问题

请教:安卓触摸屏经常“连击”误操作,问题可能出在那里? -安卓报错

本人不懂编程,给家人买了个平板,其它都行,就是固件触摸屏单击命令经常会变成连击操作了。使用体验不好。看了网上的方法,尝试修改了build.prop文件,添加了ro.min...
montos 2020-05-30 22:31:26 5 浏览量 回答数 1

问题

为什么centos7没有~/mbox这个目录?

鸟哥说用mail查看过的邮件会转移到~/mbox这个目录中,可以用mail -f mbox查看,为什么本机就没有这个目录呢?& 2 Message 2: From none@localhost.localdomain Mon J...
a123456678 2019-12-01 20:07:41 764 浏览量 回答数 1

回答

adb介绍: Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互。 ADB是一个C/S架构的应用程序,由三部分组成: 运行在pc端的adb client: 命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求; 运行在pc端的adb server: ADB Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上; 运行在设备端的常驻进程adb demon (adbd): 程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。 adb下载及安装: 一共有两种方法: 首先第一种就是最简单的方法,只下载adb压缩包去解压即可:链接:https://pan.baidu.com/s/1SKu24yyShwg16lyIupO5VA 提取码:ih0i (备注:如果下载放入到D盘去解压,打开dos窗口那么就要进入到D盘,然后再去执行adb命令,输入adb查看它是否安装成功) 第二种方法前提是已安装了Android Studio,它本身带有adb命令,如果配置好的Android Studio 一般都是可以直接调用adb命令的;如果不行,找到adb在SDK里的绝对路径,放入环境变量path中(绝对路径不带入adb.exe) 然后输入adb version 查看版本 可以看出是否安装成功,如下就已经成功了。 启动 adb server 命令:adb start-server 停止 adb server 命令:adb kill-server 查询已连接设备/模拟器:adb devices 该命令经常出现以下问题: offline —— 表示设备未连接成功或无响应; device —— 设备已连接; no device —— 没有设备/模拟器连接; List of devices attached 设备/模拟器未连接到 adb 或无响应 USB连接: 在手机“设置”-“关于手机”连续点击“版本号”7 次,可以进入到开发者模式;然后可以到“设置”-“开发者选项”-“调试”里打开USB调试以及允许ADB的一些权限;连接时手机会弹出“允许HiSuite通过HDB连接设备”点击允许/接受即可; 驱动也是必须安装的,可以用豌豆荚,或者是手机商家提供的手机助手,点进去驱动器安装即可(部分电脑双击无法直接进入到驱动器里,可以使用右键找到进入点击即可) 再次输入adb devices验证是否连接成功,连接成功即如下图: 也可以进行无线连接,其中非root权限也需借助USB线进行操作,完成后即可断开USB线;root用户可以进行无线连接,具体步骤可以参考网上资源。 **查看是否有root权限:**输入adb shell,然后输入su KaTeX parse error: Expected 'EOF', got '#' at position 5: 如果变为#̲则成功,如果仍为则未有root权限;恢复命令:adb unroot 查看应用列表: 查看所有应用列表:adb shell pm list packages 查看系统应用列表:adb shell pm list packages -s 查看第三方应用列表:adb shell pm list packages -3: 安装apk:adb install “-lrtsdg” “path_to_apk” “-lrtsdg”: -l:将应用安装到保护目录 /mnt/asec; -r:允许覆盖安装; -t:允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用; -s:将应用安装到 sdcard; -d:允许降级覆盖安装; -g:授予所有运行时权限; path_to_apk:apk的绝对路径。 示例安装淘宝apk:adb install -l /data/local/tmp/taobao.apk 卸载apk:adb uninstall -k “packagename” “packagename”:表示应用的包名,以下相同; -k 参数可选,表示卸载应用但保留数据和缓存目录。 示例卸载 手机淘宝:adb uninstall com.taobao.taobao 清除应用数据与缓存命令:adb shell pm clear “packagename” 相当于在设置里的应用信息界面点击「清除缓存」和「清除数据」。 示例:adb shell pm clear com.taobao.taobao 表示清除 手机淘宝数据和缓存。 Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器,具体不做多讲,常用的有以下: 查看前台 Activity命令:adb shell dumpsys activity activities | grep mFocusedActivity 查看正在运行的 Services命令:adb shell dumpsys activity services “packagename” 其中参数不是必须的,指定 “packagename” 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。 查看应用详细信息命令:adb shell dumpsys package “packagename” 调起 Activity命令格式:adb shell am start [options] 例如:adb shell am start -n com.tencent.mm/.ui.LauncherUI表示调起微信主界面 调起 Service命令格式:adb shell am startservice [options] 例如:adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService 表示调起微信的某 Service。 强制停止应用命令:adb shell am force-stop “packagename” 例如强制停止淘宝:adb shell am force-stop com.taobao.taobao 模拟按键/输入:adb shell input keyevent keycode 不同的 keycode有不同的功能: keycode 含义 3 HOME 键 4 返回键 5 打开拨号应用 6 挂断电话 26 电源键 27 拍照(需要在相机应用里) 61 Tab键 64 打开浏览器 67 退格键 80 拍照对焦键 82 菜单键 85 播放/暂停 86 停止播放 92 向上翻页键 93 向下翻页键 111 ESC键 112 删除键 122 移动光标到行首或列表顶部 123 移动光标到行末或列表底部 124 插入键 164 静音 176 打开系统设置 207 打开联系人 208 打开日历 209 打开音乐 220 降低屏幕亮度 221 提高屏幕亮度 223 系统休眠 224 点亮屏幕 224 点亮屏幕 224 点亮屏幕 231 打开语音助手 276 如果没有 wakelock 则让系统休眠 滑动解锁:如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。 命令:adb shell input swipe 300 1000 300 500 (其中参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。) 输入文本:在焦点处于某文本框时,可以通过 input 命令来输入文本。 命令:adb shell input text *** (***即为输入内容) 打印日志: Android 的日志分为如下几个优先级(priority): V —— Verbose(最低,输出得最多) D —— Debug I —— Info W —— Warning E —— Error F—— Fatal S —— Silent(最高,啥也不输出) 按某级别过滤日志则会将该级别及以上的日志输出。 比如,命令:adb logcat *:W 会将 Warning、Error、Fatal 和 Silent 日志输出。 (注: 在 macOS 下需要给 :W 这样以 作为 tag 的参数加双引号,如 adb logcat “:W”,不然会报错 no matches found: :W。) adb logcat 打印当前设备上所有日志 adb logcat :W 过滤打印严重级别W及以上的日志 adb logcat l findstr ***> F:\log.txt 把仅含的日志保存到F盘的log.txt文件中 adb logcat -c 清除屏幕上的日志记录 adb logcat -c && adb logcat -s ActivityManager l grep "Displayed” 客户端程序启动时间获取日志 adb logcat > F:\log.txt 打印当前设备上所有日志保存到F盘的log.txt文件中 adb logcat l findstr *** 打印过滤仅含的日志 adb logcat l findstr ***> F:\log.txt 把仅含**的日志保存到F盘的log.txt文件中 按 tag 和级别过滤日志:命令:adb logcat ActivityManager:I MyApp:D *:S 表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。 日志格式可以用:adb logcat -v 选项指定日志输出格式。 日志支持按以下几种 :默认格式brief、process、tag、raw、time、long 指定格式可与上面的过滤同时使用。比如:adb logcat -v long ActivityManager:I *:S 清空日志:adb logcat -c 内核日志:adb shell dmesg 查看设备情况: 查看设备信息型号命令:adb shell getprop ro.product.model 电池状况命令:adb shell dumpsys battery 屏幕分辨率命令:adb shell wm size 如果使用命令修改过,那输出可能是: Physical size: 1080x1920 Override size: 480x1024 表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。 屏幕密度命令:adb shell wm density 如果使用命令修改过,那输出可能是: Physical density: 480 Override density: 160 表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。 显示屏参数:adb shell dumpsys window displays 输出示例: WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays) Display: mDisplayId=0 init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731 deferred=false layoutNeeded=false 其中 mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp。 android_id查看命令:adb shell settings get secure android_id 查看Android 系统版本:adb shell getprop ro.build.version.release 查看设备ip地址:adb shell ifconfig | grep Mask或者adb shell netcfg 查看CPU 信息命令:adb shell cat /proc/cpuinfo 查看内存信息命令:adb shell cat /proc/meminfo 更多硬件与系统属性: 设备的更多硬件与系统属性可以通过如下命令查看:adb shell cat /system/build.prop 单独查看某一硬件或系统属性:adb shell getprop <属性名> 属性名 含义 ro.build.version.sdk SDK 版本 ro.build.version.release Android 系统版本 ro.product.model 型号 ro.product.brand 品牌 ro.product.name 设备名 ro.product.board 处理器型号 persist.sys.isUsbOtgEnabled 是否支持 OTG dalvik.vm.heapsize 每个应用程序的内存上限 ro.sf.lcd_density 屏幕密度 rro.build.version.security_patch Android 安全补丁程序级别 修改设置: 修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。 修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。 修改分辨率命令:adb shell wm size 480x1024 恢复原分辨率命令:adb shell wm size reset 修改屏幕密度命令:adb shell wm density 160 表示将屏幕密度修改为 160dpi;恢复原屏幕密度命令:adb shell wm density reset 修改显示区域命令:adb shell wm overscan 0,0,0,200 四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。恢复原显示区域命令:adb shell wm overscan reset 关闭 USB 调试模式命令:adb shell settings put global adb_enabled 0 需要手动恢复:「设置」-「开发者选项」-「Android 调试」 状态栏和导航栏的显示隐藏:adb shell settings put global policy_control 可由如下几种键及其对应的值组成,格式为 =:=。 key 含义 immersive.full 同时隐藏 immersive.status 隐藏状态栏 immersive.navigation 隐藏导航栏 immersive.preconfirms ? 这些键对应的值可则如下值用逗号组合: value 含义 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 的所有应用里隐藏导航栏。 恢复正常模式:adb shell settings put global policy_control null 实用功能: 截图保存到电脑:adb exec-out screencap -p > sc.png 然后将 png 文件导出到电脑:adb pull /sdcard/sc.png 录制屏幕:录制屏幕以 mp4 格式保存到 /sdcard:adb shell screenrecord /sdcard/filename.mp4 需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。 如果需要导出到电脑:adb pull /sdcard/filename.mp4 挂载、查看连接过的 WiFi 密码、开启/关闭 WiFi、设置系统日期和时间都需要root权限,不做多说。 使用 Monkey 进行压力测试:Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。 简单用法:adb shell monkey -p < packagename > -v 500 表示向 指定的应用程序发送 500 个伪随机事件。 查看进程:adb shell ps 查看实时资源占用情况:adb shell top 查看进程 UID:adb shell dumpsys package | grep userId=
问问小秘 2020-04-29 15:55:55 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板