Skip to content

Commit 46879cd

Browse files
committed
8.22 auto-commit
1 parent 034f449 commit 46879cd

File tree

12 files changed

+103
-7
lines changed

12 files changed

+103
-7
lines changed

CHANGELOG.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
8.22
2+
* 使用全新 sqlite
3+
* 远程桌面检视显示当前坐标及RGB
4+
* 增加插件 setup 逻辑
5+
16
8.20
27
* 新增官方 MCP 插件
38
* 优化 frida 兼容性

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
<img src="image/claude.gif" alt="Claude" width="95%">
2323
</p>
2424

25-
<p align="center">FIRERPA is a comprehensive solution in the Android domain, designed to reduce trivial issues in security analysis, application testing, or automation work. It has been tested in production environments on over a thousand device clusters and is stably applied in multiple large-scale systems including automated forensics, cloud platforms, data collection, compliance analysis, and other systems, with commercial-grade software quality and stability. It features full architecture and wide compatibility with Android 6.0-15, requires only root privileges to run normally, and supports emulators, physical devices, cloud phones, WSA (Windows Subsystem for Android™️), RK development boards, and Redroid, as well as most devices running the Android system. It provides a stable solution for mobile RPA and data automation.RetryClaude can make mistakes. Please double-check responses.</p>
25+
<p align="center">It's a stable and commercial-grade Android automation solution supporting Android 6.0–15 across emulators, real devices, and cloud platforms. It simplifies security analysis and testing tasks, requiring only root access, and is widely used in large-scale systems like forensics and compliance analysis.</p>
2626

2727
<h3><p align="center">Widely Applicable Architecture Design</p></h3>
2828

29-
<p align="center">FIRERPA differs from any other similar software, designed from the outset with consideration for various possible application environments. It can run non-intrusively on most current Android devices, is plug-and-play, has no external dependencies, requires no additional settings, and is natively designed for large-scale business scenarios, making it easy to systematically manage and update. Meanwhile, other software with similar functionality still experiences various issues such as disconnections, instability, poor compatibility, lack of maintenance, and management difficulties.</p>
29+
<p align="center">Unlike similar tools, it was built for diverse environments from day one. It runs non-intrusively on most Android devices, is plug-and-play with no dependencies or extra setup, and is optimized for large-scale business use. In contrast, other tools often suffer from instability, poor compatibility, and maintenance issues.</p>
3030

3131
<h3><p align="center">Rich Programming Interfaces</p></h3>
3232

33-
<p align="center">Provides up to 160 programming interfaces, allowing you to exercise meticulous control over Android devices. It offers more than a dozen categories of interfaces including command execution, system settings, status, application-related, automation control, proxy, and file interfaces. It also provides a complete Python library package so you can quickly get started. Standardized and stable services and interfaces allow you to control every detail through code without worry, and even enable AI integration, allowing large models to automatically write and execute tasks.</p>
33+
<p align="center">Offers 160+ stable, categorized APIs—covering commands, system settings, automation, apps, and more—plus a full Python SDK for fast development. It enables precise Android control and seamless AI integration for automated task generation and execution.</p>
3434

3535
<h3><p align="center">Simple and Easy-to-Use Remote Desktop</p></h3>
3636

@@ -40,4 +40,4 @@
4040

4141
<p align="center">
4242
Of course, the capabilities provided by FIRERPA go beyond these. It is your powerful device control and management tool. If interested, please go to the documentation.
43-
</p>
43+
</p>

examples/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
We’re not targeting any specific application; we’re just using it as a convenient example for the demo.
2+
3+
API Document: https://device-farm.com/doc/

examples/activity_jump.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Copyright 2025 rev1si0n ([email protected]). All rights reserved.
2+
#encoding=utf-8
3+
from lamda.client import *
4+
import time
5+
6+
d = Device("localhost")
7+
8+
app = d.application("com.taobao.taobao")
9+
app.start()
10+
11+
while True:
12+
goodsid = input("Please input a taobao goods id (item_id) (eg. 123456): ")
13+
if goodsid.isdigit():
14+
intent["package"] = "com.taobao.taobao"
15+
intent["action"] = "android.intent.action.VIEW"
16+
intent["component"] = "com.taobao.taobao/com.taobao.android.detail.alittdetail.TTDetailActivity"
17+
intent["data"] = f"http://internal.tt.detail.taobao.com/detail/index.html?id={goodsid}"
18+
d.start_activity(**intent)
19+
time.sleep(2)

examples/search_in_taobao.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Copyright 2025 rev1si0n ([email protected]). All rights reserved.
2+
#encoding=utf-8
3+
from lamda.client import *
4+
import time
5+
6+
"""
7+
This is a simple demo for performing keyword searches on Taobao.
8+
"""
9+
10+
d = Device("localhost")
11+
12+
app = d.application("com.taobao.taobao")
13+
14+
if not app.is_installed():
15+
print ("taobao app is not installed")
16+
exit (1)
17+
18+
if app.info().versionName != "10.48.0":
19+
print ("please intall taaobao 10.48.0")
20+
exit (1)
21+
22+
# ensure the app is stopped
23+
app.stop()
24+
time.sleep(1.5)
25+
26+
app.start()
27+
time.sleep(10) # wait for app fully started
28+
29+
if not d(description="我的淘宝").exists():
30+
print ("is taobao home page?")
31+
exit (1)
32+
33+
# click to activate input
34+
d(description="搜索栏").click()
35+
36+
# wait for search input activated
37+
d(resourceId="com.taobao.taobao:id/searchbtn").wait_for_exists(15*1000)
38+
39+
# input search keyword: 苹果手机
40+
d(resourceId="com.taobao.taobao:id/searchEdit").set_text("苹果手机")
41+
42+
# click "Search"
43+
d(resourceId="com.taobao.taobao:id/searchbtn").click()
44+
45+
# wait for goods showsup
46+
d(description="筛选").wait_for_exists(15*1000)
47+
48+
# do a simple swipe
49+
d().swipe()
50+
51+
# ...

extensions/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
API Document: https://device-farm.com/doc/

extensions/firerpa.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
# ===================================================================
99
#
1010
from lamda.mcp import *
11-
from lamda.mcp import PromptMessage,GetPromptResult
1211
from lamda.client import *
1312
from lamda.utils import getprop
1413
from lamda.extensions import BaseMcpExtension, to_json_string

lamda/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
#
33
# Distributed under MIT license.
44
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5-
__version__ = "8.20"
5+
__version__ = "8.22"

lamda/client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1532,6 +1532,12 @@ def getprop(self, name):
15321532
req = protos.String(value=name)
15331533
r = self.stub.getProp(req)
15341534
return r.value
1535+
def server_info(self):
1536+
"""
1537+
获取服务端ID、版本等信息
1538+
"""
1539+
r = self.stub.serverInfo(protos.Empty())
1540+
return r
15351541

15361542

15371543
class DebugStub(BaseServiceStub):
@@ -2384,6 +2390,8 @@ def remove_watcher(self, name):
23842390
return self.stub("UiAutomator").remove_watcher(name)
23852391
def device_info(self):
23862392
return self.stub("UiAutomator").device_info()
2393+
def server_info(self):
2394+
return self.stub("Util").server_info()
23872395
def __call__(self, **kwargs):
23882396
return self.stub("UiAutomator")(**kwargs)
23892397
# OCR 功能扩展

lamda/rpc/services.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ service Util {
216216
rpc recordTouch(google.protobuf.Empty) returns (TouchSequence) {}
217217
rpc performTouch(PerformTouchRequest) returns (Boolean) {}
218218

219+
rpc serverInfo(google.protobuf.Empty) returns (ServerInfoResponse) {}
220+
219221
rpc reboot(google.protobuf.Empty) returns (Boolean) {}
220222
rpc beepBeep(google.protobuf.Empty) returns (Boolean) {}
221223
rpc isCACertificateInstalled(CertifiRequest) returns (Boolean) {}

lamda/rpc/util.proto

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,11 @@ message ShowToastRequest {
6363
string text = 1;
6464
ToastDuration duration = 2;
6565
}
66+
67+
message ServerInfoResponse {
68+
string uniqueId = 1;
69+
string version = 2;
70+
string architecture = 3;
71+
uint64 uptime = 4;
72+
bool secure = 5;
73+
}

tools/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
使用方法请查看 https://device-farm.com/doc/
1+
Document: https://device-farm.com/doc/

0 commit comments

Comments
 (0)