# @devicefarmer/stfservice-prebuilt 中文文档

规范地址：https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/

版本：2\.5\.9
npm 元数据更新时间：2026-11-07T15:43:15.649Z
中文译文更新时间：2026-11-12T07:53:52.569Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40devicefarmer/stfservice-prebuilt
原文对照：https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/?lang=original
项目主页：https://github.com/DeviceFarmer/STFService.apk#readme
源码仓库：https://github.com/DeviceFarmer/STFService.apk

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.7 MB，5 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2026-08-27T11:52:23.305Z
- 最新版本发布：2026-11-07T15:43:15.336Z
- 近 30 天下载量：2656（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

预建的STFService.apk及其线条协议定义.

## 安装

```sh
npm install @devicefarmer/stfservice-prebuilt
```

也可以使用：`pnpm add @devicefarmer/stfservice-prebuilt`、`yarn add @devicefarmer/stfservice-prebuilt`、`bun add @devicefarmer/stfservice-prebuilt`

## README

# STF Service.apk (英语)

**STF Service.apk (英语)** 既是一个Android [服务](http://developer.android.com/guide/components/services.html) 和一个可运行的 CLI “代理” 应用程序, 提供各种服务和事件流 [工作队](https://github.com/DeviceFarmer/stf)虽然将这些不同的服务分成自己的部分通常是合理的,但我们正在努力通过将我们的服务捆绑成一个单一的软件包来降低资源使用率.

## 特征

-   [协议缓冲](https://github.com/google/protobuf) 基于套接字接口
-   监测
    -   电池统计
    -   网络连接
    -   电话状态
    -   设备旋转
    -   飞机模式
    -   已安装浏览器软件包
-   行动
    -   列表用户账户
    -   删除用户账户
    -   获取已安装浏览器列表
    -   获取/ 设置剪贴板内容
    -   获取显示信息
    -   获取设备 IMEI 编号
    -   获取设备电话号码
    -   获取设备 ICCID 编号
    -   获取设备网络操作员
    -   获取设备网络类型
    -   获取/设置设备铃声模式
    -   检查是否安装了SD卡
    -   启用/ 禁用 WIFI, 蓝牙并查询其状态
    -   清理蓝牙配对
    -   解锁/回锁 [密钥守护](http://developer.android.com/reference/android/app/KeyguardManager.html) (基本上解锁一个设备)
    -   获得/释放 [醒来](http://developer.android.com/reference/android/os/PowerManager.WakeLock.html) (即防止设备进入或允许其入睡)
    -   启动关键事件(有元关键支持)
    -   设置设备旋转( 选择锁定它)
-   杂项任务
    -   显示一个亮红色屏幕,上面有识别信息,可以唤醒并保持设备的开通. 惊人的有用 当你有一大堆设备 你远程连接, 你想找到真正的物理设备.
-   再来.

## 所需资源

-   [Android 工作室](http://developer.android.com/tools/studio/index.html)
-   [亚行](http://developer.android.com/tools/help/adb.html) 适当设置

## 大楼

用 Gradle 构建 :

```bash
./gradlew assembleDebug
```

GitHub 动作运行 `make` 请求并推向 `master`。这个构建并涂入APK,检查它的版本是否与 npm 包相匹配,并在已包装的 npm 归档中验证 APK 和 有线协议 。 这个 `stfservice-package` 文物中包含APK和npm存档;Gradle报告单独上传.

## 释放

发行流量使用GitHub Actions和npm信任的出版. 在第一次发布之前,请配置可信任的出版商 `@devicefarmer/stfservice-prebuilt` npmjs.com 上的这些大小写敏感值:

-   组织或用户: `DeviceFarmer`
-   仓库 : `STFService.apk`
-   工作流程文件名 : `release.yml`
-   环境:留空

没有 npm 令牌 .

1.  运行 **准备释放** 打开 `master` 具有如下版本: `2.5.7`,没有 `v` 前缀。 内容更新 `package.json` 和 Android 数据 `versionName`递增数 `versionCode`,将生成的笔记写入 `.github/CHANGELOG.md`并推进 `release/v2.5.7`。 。 。 .
2.  使用工作流程摘要中的链接打开拉动请求,并添加 `ignore-for-release` 标签,审查版本和注释,并在CI通过后合并. 手动打开 PR 确保 GitHub 为创建的分支运行 CI `GITHUB_TOKEN`。 。 。 .
3.  运行 **释放** 打开 `master` 和同一个版本。 它检查合并的版本和笔记, 重建和核实文物,创建 `v2.5.7` 标签和 GitHub 发布,附带APK 和 npm 存档,并以出处发布 npm 存档.

两种工作流程都拒绝已经拥有标签或发布在npm上的版本. 出版范围限于 `DeviceFarmer/STFService.apk`。如果 npm 任务在发布前失败,请修复原因和使用 **重运行失败的工作** 用同样的档案进行重试。 不要为该版本启动新版本运行 .

## 运行

你需要这样 [构建](https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/#readme-building) 先说.

如前所述,服务由两部分组成。 该服务为普通的Android服务,开始于活动. 但是,代理部分需要的许可不能提供给第三方申请,但可以提供给亚行。 所以这个代理是一个"正常"的Android CLI应用程序. 晚点再说.

也注意到由于方便和懒惰,目前调试键盘是固定的. 如果你喜欢,就自己开钥匙.

### 安装.apk

首先你要安装APK. 它既包含服务,也包含代理. 与格拉德相比,这很简单:

```bash
./gradlew installDebug
```

现在你只需要开始两个服务.

### 运行服务

该服务没有发射器图标,因为它的本意是尽可能少地干扰系统及其UI. 你确实得到了一个前景通知,虽然, 作为背景服务 没有它通常会被杀.

通过亚行启动服务如下:.

```bash
adb shell am startservice --user 0 \
    -a jp.co.cyberagent.stf.ACTION_START \
    -n jp.co.cyberagent.stf/.Service
```

如果你的设备抱怨 `--user` 选项,只需删除并再次尝试。 这发生在旧设备上.

你现在应该有 服务运行在设备上.

现在,我们只需要建立一个本地的前进, 这样我们才能最终连接到插座.

```bash
adb forward tcp:1100 localabstract:stfservice
```

现在可以使用本地端口连接到套接字. 你可能同时打开了一个以上的连接, 但通常没有多大意义, 因为你会不必要地消耗 令人惊讶的稀有USB资源。 考虑到这一点,让我们连接起来.

```bash
nc localhost 1100
```

这将给您提供二进制输出, 将在 [使用量](https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/#readme-usage) 节.

### 运行代理

追踪探员比较复杂.

首先,你必须找出应用程序是在哪里安装的。 我们很快就会需要信息 注意,每次安装之间路径都会有变化,因此不能只使用静态或缓存值在此.

以下命令会给你路径.

```bash
APK=$(adb shell pm path jp.co.cyberagent.stf | \
    tr -d '\r' | awk -F: '{print $2}')
```

现在你知道路径了,是时候运行CLI应用了. 请注意, 该应用程序不会在背景中运行, 并且会保持您的外壳被占用, 只要它运行.

```bash
adb shell export CLASSPATH="$APK"\; \
    exec app_process /system/bin jp.co.cyberagent.stf.Agent
```

请注意,这是一个单一的命令。 中间通常会分开命令的分号已经逃脱.

和以前一样,现在我们只需要创建一个局部前进,这样我们才能最终连接到插座.

```bash
adb forward tcp:1090 localabstract:stfagent
```

再一次,你可能一次打开不止一个连接,但通常没有多大意义,因为你会不必要地消耗你宝贵的USB带宽. 无论如何,让我们连接.

```bash
nc localhost 1090
```

这也会让你得到二进制输出,这些输出将在 [使用量](https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/#readme-usage) 节.

## 使用量

假设您现在与服务机构及代理机构都有了开放的连接. 如果没有,就跟着 [指令](https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/#readme-running) 见上文.

两个套接字都使用 **已划定** [协议缓冲](https://github.com/google/protobuf) 作为其格式。 这意味着您可以通过同一连接发送不同类型的请求. 每项请求必须包含在答复中返回的身份证。 然后,您可以绘制对请求的响应图 。 使用超时来检查丢失的请求, 尽管只要您向右套接字发送有效消息( 更多在后面) , 这就不会发生 .

你也会接受监测事件,只要没有任何人要求,就被推倒.

现在,如果你检查一下我们的 [铁丝网](https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/app/src/main/proto/wire.proto)。 。 。 .

虽然这两个套接字使用相同的格式,但两者都无法对所有请求作出回应。 您必须知道要发送请求的插座 。 该代理人目前只能对下列请求作出答复:

-   `DO_KEYEVENT`
-   `DO_TYPE`
-   `DO_WAKE`
-   `SET_ROTATION`

所有其他申请都必须前往服务处。 此外,虽然向服务处提出的所有请求都需要一个身份证(必须在合理的时间间隔内是独一无二的),然后用该身份证得到答复,但代理人目前没有提供任何答复,因此不需要身份证.

请求本身被大量包裹。 老实说,从这个意义上讲,它可能有点过头了,而且使用起来有点痛苦。 但它是有效的,你能够随时收到回复,并随时监视事件,而不必担心等待之前的请求完成.

看一下源头看消息发送 以及你应该期待什么 你也可以看看吗 [工作队](https://github.com/DeviceFarmer/stf) 查看信件在 [节点.js](https://nodejs.org/) 应用(尽管有一些抽象之处).

## 捐款

见 [捐款额](https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/CONTRIBUTING.md)。 。 。 .

## 许可证

见 [自由主义](https://npmcn.com/package/%40devicefarmer/stfservice-prebuilt/LICENSE)。 。 。 .

版权所有 网络代理公司,所有权利保留.

## 常见问题

### @devicefarmer/stfservice-prebuilt 是什么？

预建的STFService\.apk及其线条协议定义\.

### 如何安装 @devicefarmer/stfservice-prebuilt？

在项目目录运行 npm install @devicefarmer/stfservice-prebuilt，或使用 pnpm add / yarn add / bun add。

### @devicefarmer/stfservice-prebuilt 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/devicefarmer\_\_stfservice-prebuilt 是否存在。

### @devicefarmer/stfservice-prebuilt 可以商用吗？

@devicefarmer/stfservice-prebuilt 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @devicefarmer/stfservice-prebuilt 的下载量有多少？

根据 npm 官方下载统计，@devicefarmer/stfservice-prebuilt 在 2026/10/12 – 2026/11/10 这 30 天内被下载 2,656 次，日均约 89 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @devicefarmer/stfservice-prebuilt 还在维护吗？

最新版本 2\.5\.9 发布于 2026/11/07（4 天前）；至今共发布 3 个版本，其中过去 12 个月发布了 3 个；首次发布于 2026/08/27。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

