STF Service.apk (英语)
STF Service.apk (英语) 既是一个Android 服务 和一个可运行的 CLI “代理” 应用程序, 提供各种服务和事件流 工作队虽然将这些不同的服务分成自己的部分通常是合理的,但我们正在努力通过将我们的服务捆绑成一个单一的软件包来降低资源使用率.
特征
- 协议缓冲 基于套接字接口
- 监测
- 电池统计
- 网络连接
- 电话状态
- 设备旋转
- 飞机模式
- 已安装浏览器软件包
- 行动
- 杂项任务
- 显示一个亮红色屏幕,上面有识别信息,可以唤醒并保持设备的开通. 惊人的有用 当你有一大堆设备 你远程连接, 你想找到真正的物理设备.
- 再来.
所需资源
- Android 工作室
- 亚行 适当设置
大楼
用 Gradle 构建 :
./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 令牌 .
- 运行 准备释放 打开
master具有如下版本:2.5.7,没有v前缀。 内容更新package.json和 Android 数据versionName递增数versionCode,将生成的笔记写入.github/CHANGELOG.md并推进release/v2.5.7。 。 。 . - 使用工作流程摘要中的链接打开拉动请求,并添加
ignore-for-release标签,审查版本和注释,并在CI通过后合并. 手动打开 PR 确保 GitHub 为创建的分支运行 CIGITHUB_TOKEN。 。 。 . - 运行 释放 打开
master和同一个版本。 它检查合并的版本和笔记, 重建和核实文物,创建v2.5.7标签和 GitHub 发布,附带APK 和 npm 存档,并以出处发布 npm 存档.
两种工作流程都拒绝已经拥有标签或发布在npm上的版本. 出版范围限于 DeviceFarmer/STFService.apk。如果 npm 任务在发布前失败,请修复原因和使用 重运行失败的工作 用同样的档案进行重试。 不要为该版本启动新版本运行 .
运行
你需要这样 构建 先说.
如前所述,服务由两部分组成。 该服务为普通的Android服务,开始于活动. 但是,代理部分需要的许可不能提供给第三方申请,但可以提供给亚行。 所以这个代理是一个"正常"的Android CLI应用程序. 晚点再说.
也注意到由于方便和懒惰,目前调试键盘是固定的. 如果你喜欢,就自己开钥匙.
安装.apk
首先你要安装APK. 它既包含服务,也包含代理. 与格拉德相比,这很简单:
./gradlew installDebug
现在你只需要开始两个服务.
运行服务
该服务没有发射器图标,因为它的本意是尽可能少地干扰系统及其UI. 你确实得到了一个前景通知,虽然, 作为背景服务 没有它通常会被杀.
通过亚行启动服务如下:.
adb shell am startservice --user 0 \
-a jp.co.cyberagent.stf.ACTION_START \
-n jp.co.cyberagent.stf/.Service
如果你的设备抱怨 --user 选项,只需删除并再次尝试。 这发生在旧设备上.
你现在应该有 服务运行在设备上.
现在,我们只需要建立一个本地的前进, 这样我们才能最终连接到插座.
adb forward tcp:1100 localabstract:stfservice
现在可以使用本地端口连接到套接字. 你可能同时打开了一个以上的连接, 但通常没有多大意义, 因为你会不必要地消耗 令人惊讶的稀有USB资源。 考虑到这一点,让我们连接起来.
nc localhost 1100
这将给您提供二进制输出, 将在 使用量 节.
运行代理
追踪探员比较复杂.
首先,你必须找出应用程序是在哪里安装的。 我们很快就会需要信息 注意,每次安装之间路径都会有变化,因此不能只使用静态或缓存值在此.
以下命令会给你路径.
APK=$(adb shell pm path jp.co.cyberagent.stf | \
tr -d '\r' | awk -F: '{print $2}')
现在你知道路径了,是时候运行CLI应用了. 请注意, 该应用程序不会在背景中运行, 并且会保持您的外壳被占用, 只要它运行.
adb shell export CLASSPATH="$APK"\; \
exec app_process /system/bin jp.co.cyberagent.stf.Agent
请注意,这是一个单一的命令。 中间通常会分开命令的分号已经逃脱.
和以前一样,现在我们只需要创建一个局部前进,这样我们才能最终连接到插座.
adb forward tcp:1090 localabstract:stfagent
再一次,你可能一次打开不止一个连接,但通常没有多大意义,因为你会不必要地消耗你宝贵的USB带宽. 无论如何,让我们连接.
nc localhost 1090
这也会让你得到二进制输出,这些输出将在 使用量 节.
使用量
假设您现在与服务机构及代理机构都有了开放的连接. 如果没有,就跟着 指令 见上文.
两个套接字都使用 已划定 协议缓冲 作为其格式。 这意味着您可以通过同一连接发送不同类型的请求. 每项请求必须包含在答复中返回的身份证。 然后,您可以绘制对请求的响应图 。 使用超时来检查丢失的请求, 尽管只要您向右套接字发送有效消息( 更多在后面) , 这就不会发生 .
你也会接受监测事件,只要没有任何人要求,就被推倒.
现在,如果你检查一下我们的 铁丝网。 。 。 .
虽然这两个套接字使用相同的格式,但两者都无法对所有请求作出回应。 您必须知道要发送请求的插座 。 该代理人目前只能对下列请求作出答复:
DO_KEYEVENTDO_TYPEDO_WAKESET_ROTATION
所有其他申请都必须前往服务处。 此外,虽然向服务处提出的所有请求都需要一个身份证(必须在合理的时间间隔内是独一无二的),然后用该身份证得到答复,但代理人目前没有提供任何答复,因此不需要身份证.
请求本身被大量包裹。 老实说,从这个意义上讲,它可能有点过头了,而且使用起来有点痛苦。 但它是有效的,你能够随时收到回复,并随时监视事件,而不必担心等待之前的请求完成.
看一下源头看消息发送 以及你应该期待什么 你也可以看看吗 工作队 查看信件在 节点.js 应用(尽管有一些抽象之处).
捐款
见 捐款额。 。 。 .
许可证
见 自由主义。 。 。 .
版权所有 网络代理公司,所有权利保留.