首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android 调试桥 (adb)

Android 调试桥 (adb)

作者头像
云深无际
发布于 2021-04-14 03:15:53
发布于 2021-04-14 03:15:53
5.7K00
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令来从命令行终端调用客户端。
  • 守护进程 (adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。
  • 服务器:管理客户端和守护进程之间的通信。服务器在开发机器上作为后台进程运行。

adb 包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,该管理器会将其安装在 android_sdk/platform-tools/ 下。

adb 的工作原理

当您启动某个 adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。

然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:

模拟器 1,控制台:5554 模拟器 1,adb:5555 模拟器 2,控制台:5556 模拟器 2,adb:5557 依此类推

如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。

服务器与所有设备均建立连接后,您便可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。

在设备上启用 adb 调试

要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下)。

在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需将其显示出来,请依次转到设置 > 关于手机,然后点按版本号七次。返回上一屏幕,在底部可以找到开发者选项

在某些设备上,“开发者选项”屏幕所在的位置或命名方式可能有所不同。

现在,您已经可以通过 USB 连接设备。您可以通过从 android_sdk/platform-tools/ 目录执行 adb devices 来验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出。

注意:当您连接搭载 Android 4.2.2 或更高版本的设备时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。这种安全机制可以保护用户设备,因为它可以确保用户只有在能够解锁设备并确认对话框的情况下才能执行 USB 调试和其他 adb 命令。

通过 WLAN 连接到设备

一般情况下,adb 通过 USB 与设备进行通信,但您也可以在通过 USB 完成一些初始设置后通过 WLAN 使用 adb.

  1. 将 Android 设备和 adb 主机连接到这两者都可以访问的同一 WLAN 网络。请注意,并非所有接入点都适用;您可能需要使用防火墙已正确配置为支持 adb 的接入点。
  2. 如果您要连接到 Wear OS 设备,请关闭与该设备配对的手机上的蓝牙。
  3. 使用 USB 数据线将设备连接到主机。
  4. 设置目标设备以监听端口 5555 上的 TCP/IP 连接。 adb tcpip 5555
  5. 拔掉连接目标设备的 USB 数据线。
  6. 找到 Android 设备的 IP 地址。例如,对于 Nexus 设备,您可以在设置 > 关于平板电脑(或关于手机)> 状态 > IP 地址下找到 IP 地址。或者,对于 Wear OS 设备,您可以在设置 > WLAN 设置 > 高级 > IP 地址下找到 IP 地址。
  7. 通过 IP 地址连接到设备。 adb connectdevice_ip_addres
  8. 确认主机已连接到目标设备: $ adb devices List of devices attached device_ip_address:5555 device

现在,您可以开始操作了!

如果 adb 连接断开:

  1. 确保主机仍与 Android 设备连接到同一个 WLAN 网络。
  2. 通过再次执行 adb connect 步骤重新连接。
  3. 如果上述操作未解决问题,重置 adb 主机: adb kill-server
  4. 然后,从头开始操作。

查询设备

在发出 adb 命令之前,了解哪些设备实例已连接到 adb 服务器会很有帮助。您可以使用 devices 命令生成已连接设备的列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      adb devices -l

作为响应,adb 会针对每个设备输出以下状态信息:

  • 序列号:由 adb 创建的字符串,用于通过端口号唯一标识设备。下面是一个序列号示例:emulator-5554
  • 状态:设备的连接状态可以是以下几项之一:
    • offline:设备未连接到 adb 或没有响应。
    • device:设备现已连接到 adb 服务器。请注意,此状态并不表示 Android 系统已完全启动并可正常运行,因为在设备连接到 adb 时系统仍在启动。不过,在启动后,这是设备的正常运行状态。
    • no device:未连接任何设备。
  • 说明:如果包含 -l 选项,则 devices 命令会告知您设备是什么。当您连接了多个设备时,此信息很有用,可帮助您将它们区分开来。

以下示例展示了 devices 命令及其输出。有三个设备正在运行。列表中的前两行表示模拟器,第三行表示连接到计算机的硬件设备。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ adb devices
    List of devices attached
    emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
    emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
    0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

模拟器未列出

adb devices 命令的极端命令序列会导致正在运行的模拟器不显示在 adb devices 输出中(即使在您的桌面上可以看到该模拟器)。当满足以下所有条件时,就会发生这种情况:

  1. adb 服务器未在运行,且
  2. 您在使用 emulator 命令时,将 -port-ports 选项的端口值设为 5554 到 5584 之间的奇数,且
  3. 您选择的奇数号端口处于空闲状态,因此可以与指定端口号的端口建立连接,或者该端口处于繁忙状态,模拟器切换到符合第 2 条中要求的另一个端口,且
  4. 启动模拟器后才启动 adb 服务器。

要避免出现这种情况,一种方法是让模拟器自行选择端口,并且每次运行的模拟器数量不要超过 16 个。另一种方法是始终先启动 adb 服务器,然后再使用 emulator 命令,如下例所示。

示例 1:在下面的命令序列中,adb devices 命令启动了 adb 服务器,但是设备列表未显示。

停止 adb 服务器,然后按照所示顺序输入以下命令。对于 avd 名称,请提供系统中有效的 avd 名称。要获取 avd 名称列表,请输入 emulator -list-avdsemulator 命令位于 android_sdk/tools 目录下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $ adb kill-server
    $ emulator -avd Nexus_6_API_25 -port 5555
    $ adb devices

    List of devices attached
    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *

示例 2:在下面的命令序列中,adb devices 显示了设备列表,因为先启动了 adb 服务器。

如果想在 adb devices 输出中看到模拟器,请停止 adb 服务器,然后在使用 emulator 命令之后、使用 adb devices 命令之前,重新启动该服务器,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $ adb kill-server
    $ emulator -avd Nexus_6_API_25 -port 5557
    $ adb start-server
    $ adb devices

    List of devices attached
    emulator-5557 device

将命令发送至特定设备

如果有多个设备正在运行,则当您发出 adb 命令时,必须指定目标设备。为此,请使用 devices 命令获取目标设备的序列号。获得序列号后,请结合使用 -s 选项与 adb 命令来指定序列号。如果您要发出很多 adb 命令,可以将 ANDROIDSERIAL使sANDROID_SERIAL,则 -s 会替换

在以下示例中,先获得了已连接设备的列表,然后使用其中一个设备的序列号在该设备上安装了 helloWorld.apk

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $ adb devices
    List of devices attached
    emulator-5554 device
    emulator-5555 device

    $ adb -s emulator-5555 install helloWorld.apk

注意:如果您在多个设备可用时发出命令但未指定目标设备,则 adb 会生成错误。

如果有多个可用设备,但只有一个是模拟器,请使用 -e 选项将命令发送至该模拟器。同样,如果有多个设备,但只连接了一个硬件设备,请使用 -d 选项将命令发送至该硬件设备。

安装应用

您可以使用 adb 的 install 命令在模拟器或连接的设备上安装 APK:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb installpath_to_apk

安装测试 APK 时,必须结合使用 -t 选项和 install 命令。如需了解详情,请参阅 -t

设置端口转发

您可以使用 forward 命令设置任意端口转发,将对特定主机端口上的请求转发到设备上的其他端口。以下示例设置了主机端口 6100 到设备端口 7100 的转发:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb forward tcp:6100 tcp:7100

以下示例设置了主机端口 6100 到 local:logd 的转发:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb forward tcp:6100 local:logd

将文件复制到设备/从设备复制文件

您可以使用 pullpush 命令将文件复制到设备或从设备复制文件。与 install 命令(仅将 APK 文件复制到特定位置)不同,pullpush 命令可让您将任意目录和文件复制到设备中的任何位置。

要从设备复制文件或目录及其子目录,请使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb pullremotelocal

要将文件或目录及其子目录复制到设备,请使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb pushlocalremote

localremote 替换为开发机器(本地)和设备(远程)上的目标文件/目录的路径。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb push foo.txt /sdcard/foo.txt

停止 adb 服务器

在某些情况下,您可能需要终止 adb 服务器进程,然后重启以解决问题(例如,如果 adb 不响应命令)。

要停止 adb 服务器,请使用 adb kill-server 命令。然后,您可以通过发出其他任何 adb 命令来重启服务器。

发出 adb 命令

您可以从开发机器上的命令行发出 adb 命令,也可以通过脚本发出。用法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb [-d | -e | -sserial_number]command

如果只有一个模拟器正在运行或者只连接了一个设备,则默认情况下会将 adb 命令发送至该设备。如果有多个模拟器正在运行并且/或者连接了多个设备,则您需要使用 -d-e-s 选项指定应向其发送命令的目标设备。

您可以使用以下命令来查看所有支持的 adb 命令的详细列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb --help

发出 shell 命令

您可以使用 shell 命令通过 adb 发出设备命令,也可以启动交互式 shell。要发出单个命令,请使用 shell 命令,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb [-d |-e | -sserial_number] shellshell_command

要在设备上启动交互式 shell,请使用 shell 命令,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb [-d | -e | -sserial_number] shell

要退出交互式 shell,请按 Ctrl + D 键或输入 exit

注意:在 Android 平台工具 23 及更高版本中,adb 处理参数的方式与 ssh(1) 命令相同。这项变更解决了很多命令注入方面的问题,还使安全执行包含 shell 元字符的命令(如 adb install Let\'sGo.apk)成为可能。不过,这项变更还意味着,对包含 shell 元字符的所有命令的解释也发生了变化。例如,adb shell setprop foo 'a b' 命令现在会返回错误,因为单引号 (') 会被本地 shell 消去,设备看到的是 adb shell setprop foo a b。要使该命令正常运行,请引用两次,一次用于本地 shell,另一次用于远程 shell,与处理 ssh(1) 的方法相同。例如,adb shell setprop foo "'a b'"

Android 提供了大多数常见的 Unix 命令行工具。如需查看可用工具的列表,请使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
adb shell ls /system/bin

通过 --help 参数可获得大多数命令的帮助。许多 shell 命令由 toybox 提供。通过 toybox --help 可获得适用于所有 toybox 命令的常规帮助。

另请参阅 Logcat 命令行工具,该工具对监控系统日志很有用。

调用 Activity 管理器 (am)

在 adb shell 中,您可以使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性,等等。在 shell 中,语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    amcommand

您也可以直接从 adb 发出 Activity 管理器命令,无需进入远程 shell。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb shell am start -a android.intent.action.VIEW

表 2. 可用的 Activity 管理器命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
启动由 intent 指定的 Activity。请参阅 intent 参数的规范。选项如下:-D:启用调试功能。-W:等待启动完成。--start-profiler file:启动分析器并将结果发送至 file。-P file:类似于 --start-profiler,但当应用进入空闲状态时分析停止。-R count:重复启动 Activity count 次。在每次重复前,将完成顶层 Activity。-S:在启动 Activity 前,强行停止目标应用。--opengl-trace:启用 OpenGL 函数的跟踪。--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
intent 参数的规范

对于采用 intent 参数的 Activity 管理器命令,您可以使用以下选项指定 intent:

调用软件包管理器 (pm)

在 adb shell 中,您可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包执行操作和查询。在 shell 中,语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    pmcommand

您也可以直接从 adb 发出软件包管理器命令,无需进入远程 shell。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb shell pm uninstall com.example.MyApp
    

表 3. 可用的软件包管理器命令。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输出所有软件包,或者,仅输出软件包名称包含 filter 中的文本的软件包。选项如下:-f:查看它们的关联文件。-d:进行过滤以仅显示已停用的软件包。-e:进行过滤以仅显示已启用的软件包。-s:进行过滤以仅显示系统软件包。-3:进行过滤以仅显示第三方软件包。-i:查看软件包的安装程序。-u:也包括卸载的软件包。--user user_id:要查询的用户空间。

调用设备政策管理器 (dpm)

为便于您开发和测试设备管理(或其他企业)应用,您可以向设备政策管理器 (dpm) 工具发出命令。使用该工具可控制活动管理应用,或更改设备上的政策状态数据。在 shell 中,语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    dpmcommand

您也可以直接从 adb 发出设备政策管理器命令,无需进入远程 shell:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb shell dpmcommand

表 4. 可用的设备政策管理器命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
将组件设为活动管理。选项如下:--user user_id:指定目标用户。您也可以传递 --user current 以选择当前用户。

截取屏幕截图

screencap 命令是一个用于对设备显示屏截取屏幕截图的 shell 实用程序。在 shell 中,语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    screencapfilename

如需从命令行使用 screencap,请输入以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb shell screencap /sdcard/screen.png

以下屏幕截图会话示例向您展示了如何使用 adb shell 截取屏幕截图,以及如何使用 pull 命令从设备下载屏幕截图文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $ adb shell
    shell@ $ screencap /sdcard/screen.png
    shell@ $ exit
    $ adb pull /sdcard/screen.png

录制视频

screenrecord 命令是一个用于录制设备(搭载 Android 4.4(API 级别 19)及更高版本)显示屏的 shell 实用程序。该实用程序将屏幕 Activity 录制为 MPEG-4 文件。您可以使用此文件创建宣传视频或培训视频,或将其用于调试或测试。

在 shell 中,使用以下语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    screenrecord [options]filename

如需从命令行使用 screenrecord,请输入以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb shell screenrecord /sdcard/demo.mp4

按 Ctrl + C 键(在 Mac 上,按 Command + C 键)可停止屏幕录制;如果不手动停止,到三分钟或 --time-limit 设置的时间限制时,录制将会自动停止。

要开始录制设备屏幕,请运行 screenrecord 命令以录制视频。然后,运行 pull 命令以将视频从设备下载到主机。下面是一个录制会话示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $ adb shell
    shell@ $ screenrecord --verbose /sdcard/demo.mp4
    (press Control + C to stop)
    shell@ $ exit
    $ adb pull /sdcard/demo.mp4

screenrecord 实用程序能以您要求的任何支持的分辨率和比特率进行录制,同时保持设备显示屏的宽高比。默认情况下,该实用程序以本机显示屏分辨率和屏幕方向进行录制,时长不超过三分钟。

screenrecord 实用程序的局限性:

  • 音频不与视频文件一起录制。
  • 无法在搭载 Wear OS 的设备上录制视频。
  • 某些设备可能无法以它们的本机显示屏分辨率进行录制。如果在录制屏幕时出现问题,请尝试使用较低的屏幕分辨率。
  • 不支持在录制时旋转屏幕。如果在录制期间屏幕发生了旋转,则部分屏幕内容在录制时将被切断。

表 5. screenrecord 选项

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
显示命令语法和选项

读取应用的 ART 配置文件

从 Android 7.0(API 级别 24)开始,Android Runtime (ART) 会收集已安装应用的执行配置文件,这些配置文件用于优化应用性能。您可能需要检查收集的配置文件,以了解在应用启动期间,系统频繁执行了哪些方法和使用了哪些类。

要生成文本格式的配置文件信息,请使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb shell cmd package dump-profilespackage

要检索生成的文件,请使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb pull /data/misc/profman/package.txt

重置测试设备

如果您在多个测试设备上测试应用,则在两次测试之间重置设备可能很有用,例如,可以移除用户数据并重置测试环境。您可以使用 testharness adb shell 命令对搭载 Android 10(API 级别 29)或更高版本的测试设备执行恢复出厂设置,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    adb shell cmd testharness enable

使用 testharness 恢复设备时,设备会自动将允许通过当前工作站调试设备的 RSA 密钥备份在一个持久性位置。也就是说,在重置设备后,工作站可以继续调试设备并向设备发出 adb 命令,而无需手动注册新密钥。

此外,为了帮助您更轻松且更安全地继续测试您的应用,使用 testharness 恢复设备还会更改以下设备设置:

  • 设备会设置某些系统设置,以便不会出现初始设备设置向导。也就是说,设备会进入一种状态,供您快速安装、调试和测试您的应用。
  • 设置如下:
    • 停用锁定屏幕
    • 停用紧急提醒
    • 停用帐户自动同步
    • 停用自动系统更新
  • 其他:
    • 停用预安装的安全应用

如果您的应用需要检测并适应 testharness 命令的默认设置,您可以使用 ActivityManager.isRunningInUserTestHarness()

sqlite

sqlite3 可启动用于检查 sqlite 数据库的 sqlite 命令行程序。它包含用于输出表格内容的 .dump 以及用于输出现有表格的 SQL CREATE 语句的 .schema 等命令。您也可以从命令行执行 SQLite 命令,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $ adb -s emulator-5554 shell
    $ sqlite3 /data/data/com.example.app/databases/rssitems.db
    SQLite version 3.3.12
    Enter ".help" for instructions
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
最新发布版本:[Homebrew/brew] Release 3.6.5 - 3.6.5
程序员小助手
2022/12/20
6780
【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
最新发布版本:[backstage/backstage] Pre-release v1.7.0-next.2 - v1.7.0-next.2
程序员小助手
2022/12/20
8840
neovim 从0开始配置优化
neovim是从vim的一个分支fork出来的,从性能等方面来讲都比vim强很多,所以从vim转到neovim了。
zeekling
2024/06/09
5420
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
今天分享的主题是:如何在离线环境部署 Kubernetes v1.30.6 和 KubeSphere v4.1.2 高可用集群。
运维有术
2025/01/22
1.5K0
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
本文介绍如何在麒麟 V10 X86_64 架构服务器上制作制品和离线部署 KubeSphere 和 Kubernetes 集群。x86机器部署ks,镜像基本没有变化。主要区别在于各操作系统k8s初始化的依赖包和KubeKey用到的repository有区别。本文将详细记录制品制作和离线部署过程。
编码如写诗
2024/08/30
1.5K0
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
基于 Github Actions 自动部署 Hexo 博客
前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy 然后打包、上传、解压和刷新 CDN,非常麻烦。我的服务器配置也不高 2C2G 无法安装 Jenkins,所以采用了比较简单和免费的 Github Actions 来进行打包、上传。然后我自己写了一个 Agent 来做解压和刷新 CDN 的工作,整套流程完全自动化。
晓晨
2022/09/07
1K0
基于 Github Actions 自动部署 Hexo 博客
打造超级富容器开发环境(八):下载和编译其它软件
很多开源软件并不支持通过包管理器安装,或者包管理器中的版本比较滞后,希望安装的是最新版本,这时候我们就需要自己下载最新二进制,或者自己编译二进制进行安装。
imroc
2024/06/13
1510
打造超级富容器开发环境(八):下载和编译其它软件
Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略)
    毫无疑问,我们生活在编辑器的最好年代,Vim是仅在Vi之下的神级编辑器,而脱胎于Vim的NeoVim则是这个时代最好的编辑器,没有之一。异步支持、更好的内存管理、更快的渲染速度、更多的编辑命令,是大神Thiago de Arruda对开发者们最好的技术馈赠。
用户9127725
2023/03/01
2.2K0
Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略)
一文带你入门 Kubernetes 世界
Kubernetes,通常我们将其缩写为 “K8s”,是一个开源的容器编排平台,最初在 Shipyard 平台中广泛使用。其基于自动化模式维护容器化的应用程序所涉及的许多任务,例如部署、扩展、负载平衡、灰度以及资源弹性伸缩等。其鸟瞰图如下所示:
Luga Lee
2021/12/10
5340
一文带你入门 Kubernetes 世界
老旧 Linux 系统搭建现代 C++ 开发环境 —— 基于 neovim
公司配发的电脑是 macOS,日常开发需要访问 Linux 虚拟机,出于安全方面的考虑,只能通过跳板机登录。这阻止了大多数远程图形界面的使用,让写代码的工作变得复杂起来,市面上非常好用的 VSCode 都用不了。因此考虑基于 vim 搭建一套个人开发环境,需要支持以下特性:
海海
2024/08/01
7660
老旧 Linux 系统搭建现代 C++ 开发环境 —— 基于 neovim
Arduino ESP32 安装
https://espressif.github.io/arduino-esp32/package_esp32_index.json
gyx138
2024/04/12
3780
打造超级富容器开发环境(七):安装开发语言环境
日常可能用到的开发语言环境,以及部分语言包管理所需要安装的软件,每种语言都可以单独用一个脚本文件来维护:
imroc
2024/06/12
1510
打造超级富容器开发环境(七):安装开发语言环境
文本编辑器VimNeovim被曝任意代码执行漏洞
6月4日,名为Arminius的安全研究员在twitter曝光现Vim/Neovim的本地代码执行漏洞,并且还被披露了PoC。作为Linux的上古神器级的文本编辑器使用量还是比较大的,建议用户立刻更新最新补丁。
FB客服
2019/06/18
7340
RNAseq 1.1
这是一个RNA-seq分析的教学教程和工作演示流程,包括介绍云计算(不介绍了,直接从第二章开始)、下一代序列文件格式、参考基因组、基因注释、表达分析、差异表达分析、选择性剪接分析、数据可视化和解释。
conanma
2021/09/07
5100
一款开源 Shell 工具,装逼神器,Github星标22k+!
今天要给大家介绍一个生产力工具 (装逼神器)Shell,它叫 Nushell,它是用 Rust 写的,安全性提高的同时,Bug 率也降低了,NuShell 专注于实现以下目标:
一行Java
2022/12/18
9950
一款开源 Shell 工具,装逼神器,Github星标22k+!
从零开始vim搭建Java开发环境[视频]
起初我仅仅是想在手机上搭建一套能开发Java的vim环境。《玩转手机中的linux系统termux并搭建java开发环境》 玩着玩着发现vim真香!不仅能搭建简单的Java开发环境,甚至中大型spring boot项目也能驾驭。最终成品不会输成熟IDE多少。
用户6256742
2024/05/31
4870
从零开始vim搭建Java开发环境[视频]
如何安装NeoVim和使用vim-plug安装相关插件?
如果您是系统管理员或软件开发人员,那么你每天都需要使用的工具中一定有一种强健的文本编辑器。您很可能已经使用过vi或vim编辑器,它们已经在Unix和Linux社区中用了几十年了。
PantaZheng
2018/09/14
15.6K1
如何安装NeoVim和使用vim-plug安装相关插件?
etcd 基础1
概要 ---- 下载安装 [root@docker etcd]# curl -L https://github.com/coreos/etcd/releases/download/v2.2.4/etcd-v2.2.4-linux-amd64.tar.gz -o etcd-v2.2.4-linux-amd64.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current
franket
2022/01/20
2110
VIM配置攻略(最强干货加强版)
自己最近也在折腾这个VIM的配置,在网上也看了很多教程等,说真的看的一头雾水。主要是对于一个初学者来说对Vundle等根本没有什么了解,也不知道怎么用,并且由于本人的Linux系统是CentOs6.5的,所以版本也有限制,由于版本原因,竟然git都用不了!!!!这就很难受,所以费劲心思,找到了一篇对VIM配置比较详细的教程,只要按照的教程的步骤一步一步来,相信你也能配置一个十分满意的VIM,闲话不多说,进入正题。
Lansonli
2021/10/09
1.7K0
文本编辑器Vim/Neovim被曝任意代码执行漏洞,Notepad:兄弟等你好久了
Google Project Zero研究员Tavis Ormandy宣布在微软的记事本文本编辑器中发现代码执行漏洞。
洛米唯熊
2019/07/25
9450
文本编辑器Vim/Neovim被曝任意代码执行漏洞,Notepad:兄弟等你好久了
推荐阅读
相关推荐
【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档