Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions data/strava/activities/20645483170.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"id": 20645483170,
"name": "Evening Ride",
"distance": 8077.7,
"moving_time": 2148,
"elapsed_time": 2401,
"total_elevation_gain": 15.7,
"type": "Ride",
"sport_type": "Ride",
"id_str": "20645483170",
"start_date": "2026-10-19T10:23:53Z",
"start_date_local": "2026-10-19T18:23:53Z",
"timezone": "(GMT+08:00) Asia/Shanghai",
"utc_offset": 28800,
"map": {
"id": "a20645483170",
"polyline": "w`|rFe_ieU?BB?@?B?@?@@@?@?@@@?@?@?B@??@?@?B@@?@???@?@?@?@A@?@?@?@?@A@?@???@?@@@??@?B?@?@@?@???@A???????????A@???BK@?@@@?@?@?@?@A@?@A@?@?@?@?@@@?@?@??BB???B?@???@?@E@@@?B?@?@A@?@?@?@?@?@?@@@A@@@?@?@A@@@?@?@@@A@@@?@A@?@?B?@?@?@?@@@?@?B?@?B??@B?@A??@?B?@ABA@@@?@???@AB??A@?@A?A@?@A@???BA@?@A@?@?@?@?@?@@B@@@@?@A?A@A@A@?@??AB?@@??@A@?@???@?@@????@???@?@@??@@????@?@?@?@?@?@???B?@?@?B??@?@?@@???@AB?@A@???@???@?B?BCB?BABA??@@@?@?B?@C@???B??A@@B?BAB@@?@?@A@@@?@@@?B???@?BAB?B@@?B@B@@@B@B@@?FBDB@E@??C?A?A?@AA?ABA@C???AB??A?@?C?A@A??????@@??NA@@?@@@@?B?D?BADAB?D?B?D?B?DAB?DAB?DABAD?B?D?D?D?B?D@B@BB?DAF?FA??F?FBR?F?D?F@F?F?F?F?L?F?F@D?F?F?FAD@FBB?DC@AJ@F?D?H?F@H?F?F?F?F@DAF@D?DB@B?B@D?B?BBD@BBD@B?D?BADAB?DAD?D?D?D?D?B?@CB?D?D?D?F?D?D?D?DAD?D@DAB?B?BAB@@?@@@?B@BA?A@??AA???@???@?@???@????@@?????????F@@@???A@@?A???????@@?DR@E?C?CJG??TL@?@A??@A??@A@??AB@??BA@A??@?@????@?@@A@????@B?@?@A@?B?B?B?B?B?B?@?B?B?@A??@?????B@@?@?BA@?@???@???@?B?@?D?B?@?@???????@?@AB@@A@?BB?B?D?F?D?F?D?H?F?F@F?F?FAF@F?F?HAF?F?F@J?F?H?H@H?F?F?H@F?F@H?D?J?H@F?H?F@F?H?F@H?F?H?FAH?F@HAH?H?F@J?F?H?H@F?J?H?F?J?F?HAHAH?HAJ@J@H?B@J@H@F@B@DDFFDHBF@F@F@j@PF@FAFCDAHAFAFAD?F?F?F?F?F?F?D@F?F?F@F?F?F?F?HAF?H?F?F?HAF?FAH?HCH?FAF?H?FAHAFAH?F?H@F?H?F?H?F@F?HAF?HAF@F@F?H?F?F?H?F?FAH?F@F?F?H@F?F@F?F?H@F?F@F?F?H?D?H?F?F?F?F?F?F?F?HAF?H?F?FAH?H?F?HAF?H?HAF?H?HAFAH?HAHAH?H?J?HAH?JAH?JAH?J?J@H?H?H?H?H?H@H?H@H?HBJ@H@HBF@HBFBHBDBD@D@D@DBFBDBBBBDDBB?D?BAB?B?BBDDD@D@DBFBDBDBDBFBDBD?F@D@F?D?F@D?F?F?D?F?F?F?F?F?F?F?F?D?F?F?F?F?FAD?F@D?D?BAB?DAB?BAD?DABADCFCDCDEDCDEDEDEDEFEDEDCFCDAFAF?FAD?F?FAF?D?F@FAD?F?F?F?FAF?F?FAFADCDCFGBEDIDGDIBIDIBIDIBI@IBIBI@IBGBCBADCFCDAFAFAH?F?H@H@F@H?H@H@J@H@J@H?HBH?H@n@PJCH?H?H?JBH@J@H@H@H@H@J@H@J@J?H@H@J@H@H@H@H?J@H@H@H@J@J?H?JAJAL?H?HAH?FAH@HAHAF?H?FAH?H@H?H?HBFBHBH@FBFBH@F?D?D@F@FBF@F@F@F?F@F@D?FAFBFDF?FBF@H?F@F@H?F@F?H@F@F@F@F?F@F@F?F@F?F@F?F?F?F?F?F?F@F@F@H?F@F@F?H@F@F@H@F@H?F@H?F@H@F?H?F?F?HAF?FAHAF?D?H?F?HADAF?D?DCFAF@F@FAH?HAFAH?FAH?FAHAFAFAH?F?HAF?F?H?F?H?F?F?FAHAFAF?FAHAF?FAFAF?HAFAFAF?HAF?H?FAF?HAF?FAF???x@GF@????N?RELAHAF?DAHAF?DAFAHAF?F?FAF?FAF?F?F?F?F?H?F?F?F?F?XIF?CJFCHAFAHAFAF@J?H?FCHAFAF?FAH?H?HAF?H@H?H?F@H?HAH?FAFAHAHCFAHCH?FAF?HAFAHAFAFAHAFAF@F?FAD?FCHCFAFAFAH?FAFAHAFAFAH?FAFAF@H?H?H?FAH?FAH?FAFAF?HAH?F?F?F?FAFAFADAF?HAH?FAF?FAF?H?H?F?F?F?F?B?DAB?DAD?D?B?D?DBDDDBDBD@D@DBBBFBD@FBF@F?F@F?F?D@H?F?F@F?F@FBF?FBF?F?F@F?DBF?F?F?F@F@H@F@F?F?H@F@F?F@H?F@F?H?F@F?HAH?F?F?H?F?F?HAJ?J?H@H?HAJ?F?HAH?HAH?F?H?F?F?F?FAHAF?FAF?F?FAH?F?HAFAH?FAHAF?H?F?H?HAFAF@HAFAH?FAD?F@F?F@DAFCDAF?F?FAD?F?FAF?HAF?DAF?FAF?H?F?FAD?F?FAF?DADAFAFAF?FAF?FAF@FAF?DAFAF?F?H@FAF?D?FAF?F?FAD?HAF?HAF?H?F?HAH?F@FAHAF?HAF?H?F?FAF@HAFAHAF?H?F?FAF?F?FAFBH@HCF?F?DAH?F?HAF?FAF@DAF?F?FAF?H?FAF?F?F?HAD?F?F?H?F?F@FAF?F?F?FAF?F?D?B@DBJEF?HCFAFAF?F?HAF?H?FAHAF?H?FAH?F?H?HAFAH@H?HAFAH?F?HAF?HAF?F?DBB@@DBD@F@F?F@FDHAL?H?H?H?J?J?H?H?J?J@HAJ?H?H?J?H?J@H@H?J?H@JAH?H?H?H?J?H?H?H?H@H?H?H?H?H?F?F?H?H?F?H@F?H?FAF?F?D?D?D@B?B@B?D?F?F@F@F@F@H@F@H?F?H?H?H?H?H?H?H@F?H@H?H@H?H?HAJ?H?H?HAH?H@H@JB\\D^AD@H?H@l@?PAH?JAH?H?HAH@J?FAH@F@F?F@F?D?H?J?J?H?JAHE^CD?J@HBHAF?H?FAFAD?@?B@BBBF?F?F?F?D@FAF@F?H@F?FAH?F?F?H?F?HAH@FAH?F?HAF?HAH?F?H?H?FAH?HAF?H?H@F?H?FAH@F?F?H?P?HAF?H?F?H?FAH?H?FAH?FAH?H?F?H?FAH?H?F?H?H?H?H?FAH@H?FBFD??h@DDAFA????VE@?B?D@D?D?D?B?FAFCDAHAF?FAF?D?FAH?FAF?F?F@J?F?N@TGF@D?D?FBJCJAH?F?H?H?H?H?H?FAH?F?D?H?FAF?F?F?F?F@F@F@F?F?F?F@F?D?F?FAH?HAF?H?F?D?H?F?HAF?F?HAH?F?F?D?F?F?F?D@D?FADAF?D?F?BA@?D?B?D?D@B?B@@AD?B?B@D?B?@?D?B?D?D?D@D?D?F?B@D@F?D?D?D?F?F?F?F?D@F?DAD@D?D?BAJ@D?HAF@D@H?D?D@F@D?F?HADADCDBF?H?HAFBF?F?F?FAHAF?HAF?FCF?JAF?FAHAF?FAFCHAH?F?HAHAH?FAH@FAHAH?H?H?FAF?HAHAFAF?HAF?D@F@D@DFF@D?BE@CBCFCD?D@D?F?F?D@F?F?FADAH@F?H?F?H?H?H?F?H@F?H?F?F@H?F@FAH?F?FAH?HAF?H?FAFAF?DAF@F?F?F?F?F?F@F?FAF?F?H?FAH?F?F?H?F?F@FBD@F?DAF?D?DAD?B?B@D@D?D?F?F?F?VCD?F@F?D?F?F?DAF?D?D?D?F?DAD?D?D?D?FAD?D?D?D?B???@?????????????@?@AB?B?B?B?D?B?D?D?BAD?D?B?B?D?D?D?D@D?D@D@D?D?D?DAD?DAD?DADAD?FADAFAF?D?F?FAF?DAF?D?F?D@F?D?F?DAFAD?FAF?F?F?FAH?FAF?F?F?H?F?H?FAF@HAF?H?F?H@F@H?F?F?FAH?F@D@F@D@F@F?FAF?F?F@F?F?FAF?FAF@FAF?F?F?F?F?FAF?F?FAF?F?DAF?F@F?F?FAf@EHAF?F?D@B@D?F?F?F?F@F?F?F?H?F?F?FAFAFAFCF?DAFAD?H?F?H?FAF?H?FAF?F?H?DCH@H?F?H?FAH@F?F?H@F?FAH@HBF?H?F@F?F?DAH@H?HAF?D?H?DAD?D?F?D?F@F?D@FAF@DCFAF?D?F?FBD@D@D@B?DA@A?CA?????????@AA@?A???@E@@@EBA@?@?@AB",
"summary_polyline": "w`|rFe_ieU?BB?@?B?@?@@@?@?@@@?@?@?B@??@?@?B@@?@???@?@?@?@A@?@?@?@?@A@?@???@?@@@??@?B?@?@@?@???@A???????????A@???BK@?@@@?@?@?@?@A@?@A@?@?@?@?@@@?@?@??BB???B?@???@?@E@@@?B?@?@A@?@?@?@?@?@?@@@A@@@?@?@A@@@?@?@@@A@@@?@A@?@?B?@?@?@?@@@?@?B?@?B??@B?@A??@?B?@ABA@@@?@???@AB??A@?@A?A@?@A@???BA@?@A@?@?@?@?@?@@B@@@@?@A?A@A@A@?@??AB?@@??@A@?@???@?@@????@???@?@@??@@????@?@?@?@?@?@???B?@?@?B??@?@?@@???@AB?@A@???@???@?B?BCB?BABA??@@@?@?B?@C@???B??A@@B?BAB@@?@?@A@@@?@@@?B???@?BAB?B@@?B@B@@@B@B@@?FBDB@E@??C?A?A?@AA?ABA@C???AB??A?@?C?A@A??????@@??NA@@?@@@@?B?D?BADAB?D?B?D?B?DAB?DAB?DABAD?B?D?D?D?B?D@B@BB?DAF?FA??F?FBR?F?D?F@F?F?F?F?L?F?F@D?F?F?FAD@FBB?DC@AJ@F?D?H?F@H?F?F?F?F@DAF@D?DB@B?B@D?B?BBD@BBD@B?D?BADAB?DAD?D?D?D?D?B?@CB?D?D?D?F?D?D?D?DAD?D@DAB?B?BAB@@?@@@?B@BA?A@??AA???@???@?@???@????@@?????????F@@@???A@@?A???????@@?DR@E?C?CJG??TL@?@A??@A??@A@??AB@??BA@A??@?@????@?@@A@????@B?@?@A@?B?B?B?B?B?B?@?B?B?@A??@?????B@@?@?BA@?@???@???@?B?@?D?B?@?@???????@?@AB@@A@?BB?B?D?F?D?F?D?H?F?F@F?F?FAF@F?F?HAF?F?F@J?F?H?H@H?F?F?H@F?F@H?D?J?H@F?H?F@F?H?F@H?F?H?FAH?F@HAH?H?F@J?F?H?H@F?J?H?F?J?F?HAHAH?HAJ@J@H?B@J@H@F@B@DDFFDHBF@F@F@j@PF@FAFCDAHAFAFAD?F?F?F?F?F?F?D@F?F?F@F?F?F?F?HAF?H?F?F?HAF?FAH?HCH?FAF?H?FAHAFAH?F?H@F?H?F?H?F@F?HAF?HAF@F@F?H?F?F?H?F?FAH?F@F?F?H@F?F@F?F?H@F?F@F?F?H?D?H?F?F?F?F?F?F?F?HAF?H?F?FAH?H?F?HAF?H?HAF?H?HAFAH?HAHAH?H?J?HAH?JAH?JAH?J?J@H?H?H?H?H?H@H?H@H?HBJ@H@HBF@HBFBHBDBD@D@D@DBFBDBBBBDDBB?D?BAB?B?BBDDD@D@DBFBDBDBDBFBDBD?F@D@F?D?F@D?F?F?D?F?F?F?F?F?F?F?F?D?F?F?F?F?FAD?F@D?D?BAB?DAB?BAD?DABADCFCDCDEDCDEDEDEDEFEDEDCFCDAFAF?FAD?F?FAF?D?F@FAD?F?F?F?FAF?F?FAFADCDCFGBEDIDGDIBIDIBIDIBI@IBIBI@IBGBCBADCFCDAFAFAH?F?H@H@F@H?H@H@J@H@J@H?HBH?H@n@PJCH?H?H?JBH@J@H@H@H@H@J@H@J@J?H@H@J@H@H@H@H?J@H@H@H@J@J?H?JAJAL?H?HAH?FAH@HAHAF?H?FAH?H@H?H?HBFBHBH@FBFBH@F?D?D@F@FBF@F@F@F?F@F@D?FAFBFDF?FBF@H?F@F@H?F@F?H@F@F@F@F?F@F@F?F@F?F@F?F?F?F?F?F?F@F@F@H?F@F@F?H@F@F@H@F@H?F@H?F@H@F?H?F?F?HAF?FAHAF?D?H?F?HADAF?D?DCFAF@F@FAH?HAFAH?FAH?FAHAFAFAH?F?HAF?F?H?F?H?F?F?FAHAFAF?FAHAF?FAFAF?HAFAFAF?HAF?H?FAF?HAF?FAF???x@GF@????N?RELAHAF?DAHAF?DAFAHAF?F?FAF?FAF?F?F?F?F?H?F?F?F?F?XIF?CJFCHAFAHAFAF@J?H?FCHAFAF?FAH?H?HAF?H@H?H?F@H?HAH?FAFAHAHCFAHCH?FAF?HAFAHAFAFAHAFAF@F?FAD?FCHCFAFAFAH?FAFAHAFAFAH?FAFAF@H?H?H?FAH?FAH?FAFAF?HAH?F?F?F?FAFAFADAF?HAH?FAF?FAF?H?H?F?F?F?F?B?DAB?DAD?D?B?D?DBDDDBDBD@D@DBBBFBD@FBF@F?F@F?F?D@H?F?F@F?F@FBF?FBF?F?F@F?DBF?F?F?F@F@H@F@F?F?H@F@F?F@H?F@F?H?F@F?HAH?F?F?H?F?F?HAJ?J?H@H?HAJ?F?HAH?HAH?F?H?F?F?F?FAHAF?FAF?F?FAH?F?HAFAH?FAHAF?H?F?H?HAFAF@HAFAH?FAD?F@F?F@DAFCDAF?F?FAD?F?FAF?HAF?DAF?FAF?H?F?FAD?F?FAF?DADAFAFAF?FAF?FAF@FAF?DAFAF?F?H@FAF?D?FAF?F?FAD?HAF?HAF?H?F?HAH?F@FAHAF?HAF?H?F?FAF@HAFAHAF?H?F?FAF?F?FAFBH@HCF?F?DAH?F?HAF?FAF@DAF?F?FAF?H?FAF?F?F?HAD?F?F?H?F?F@FAF?F?F?FAF?F?D?B@DBJEF?HCFAFAF?F?HAF?H?FAHAF?H?FAH?F?H?HAFAH@H?HAFAH?F?HAF?HAF?F?DBB@@DBD@F@F?F@FDHAL?H?H?H?J?J?H?H?J?J@HAJ?H?H?J?H?J@H@H?J?H@JAH?H?H?H?J?H?H?H?H@H?H?H?H?H?F?F?H?H?F?H@F?H?FAF?F?D?D?D@B?B@B?D?F?F@F@F@F@H@F@H?F?H?H?H?H?H?H?H@F?H@H?H@H?H?HAJ?H?H?HAH?H@H@JB\\D^AD@H?H@l@?PAH?JAH?H?HAH@J?FAH@F@F?F@F?D?H?J?J?H?JAHE^CD?J@HBHAF?H?FAFAD?@?B@BBBF?F?F?F?D@FAF@F?H@F?FAH?F?F?H?F?HAH@FAH?F?HAF?HAH?F?H?H?FAH?HAF?H?H@F?H?FAH@F?F?H?P?HAF?H?F?H?FAH?H?FAH?FAH?H?F?H?FAH?H?F?H?H?H?H?FAH@H?FBFD??h@DDAFA????VE@?B?D@D?D?D?B?FAFCDAHAF?FAF?D?FAH?FAF?F?F@J?F?N@TGF@D?D?FBJCJAH?F?H?H?H?H?H?FAH?F?D?H?FAF?F?F?F?F@F@F@F?F?F?F@F?D?F?FAH?HAF?H?F?D?H?F?HAF?F?HAH?F?F?D?F?F?F?D@D?FADAF?D?F?BA@?D?B?D?D@B?B@@AD?B?B@D?B?@?D?B?D?D?D@D?D?F?B@D@F?D?D?D?F?F?F?F?D@F?DAD@D?D?BAJ@D?HAF@D@H?D?D@F@D?F?HADADCDBF?H?HAFBF?F?F?FAHAF?HAF?FCF?JAF?FAHAF?FAFCHAH?F?HAHAH?FAH@FAHAH?H?H?FAF?HAHAFAF?HAF?D@F@D@DFF@D?BE@CBCFCD?D@D?F?F?D@F?F?FADAH@F?H?F?H?H?H?F?H@F?H?F?F@H?F@FAH?F?FAH?HAF?H?FAFAF?DAF@F?F?F?F?F?F@F?FAF?F?H?FAH?F?F?H?F?F@FBD@F?DAF?D?DAD?B?B@D@D?D?F?F?F?VCD?F@F?D?F?F?DAF?D?D?D?F?DAD?D?D?D?FAD?D?D?D?B???@?????????????@?@AB?B?B?B?D?B?D?D?BAD?D?B?B?D?D?D?D@D?D@D@D?D?D?DAD?DAD?DADAD?FADAFAF?D?F?FAF?DAF?D?F?D@F?D?F?DAFAD?FAF?F?F?FAH?FAF?F?F?H?F?H?FAF@HAF?H?F?H@F@H?F?F?FAH?F@D@F@D@F@F?FAF?F?F@F?F?FAF?FAF@FAF?F?F?F?F?FAF?F?FAF?F?DAF?F@F?F?FAf@EHAF?F?D@B@D?F?F?F?F@F?F?F?H?F?F?FAFAFAFCF?DAFAD?H?F?H?FAF?H?FAF?F?H?DCH@H?F?H?FAH@F?F?H@F?FAH@HBF?H?F@F?F?DAH@H?HAF?D?H?DAD?D?F?D?F@F?D@FAF@DCFAF?D?F?FBD@D@D@B?DA@A?CA?????????@AA@?A???@E@@@EBA@?@?@AB"
},
"start_latlng": [
39.96188,
116.377625
],
"end_latlng": [
39.899181,
116.367708
],
"average_speed": 3.761,
"max_speed": 6.7,
"has_heartrate": true,
"average_heartrate": 120,
"max_heartrate": 139,
"elev_high": 56.1,
"elev_low": 50.7,
"description": null,
"calories": 0,
"device_name": ""
}
3 changes: 2 additions & 1 deletion data/strava/activities/_index.json
Original file line number Diff line number Diff line change
Expand Up @@ -165,5 +165,6 @@
20552135822,
20565699124,
20579892718,
20606977967
20606977967,
20645483170
]
2 changes: 1 addition & 1 deletion data/strava/activities/_meta.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"lastSync": 1792146309
"lastSync": 1792405433
}
48 changes: 48 additions & 0 deletions src/content/posts/2026/assign-homework-to-studypad.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
title: '给讯飞学习机布置作业'
slug: 'assign-homework-to-studypad'
description: '通过 PC 布置作业。'
tags: ['安卓', '学习机', '讯飞学习机']
date: 2026-10-21
---

## 背景

老师布置作业,有时候是发到群里的。英语作业常常是一张图片,图里是要抄的单词和句子。孩子不知道这个具体的句子,他就需要这个图片去抄写。

家里有一台讯飞学习机。我之前的做法是把图片下载下来,打开学习机的 App,布置一条作业,把图传上去。一个星期大概三四次,不算难,就是麻烦。

后来就在想,能不能把这件事做成程序。

## 先确认:没有网页版

家长端包名是 `com.iflytek.aistudyclient.parentcontrol`。官网 `xxj.xunfei.cn` 是产品页,没有网页版。

既然没有网页入口,思路就是在我这台电脑上(Omarchy Linux)装一个 Android 模拟器。这样后续也可以在这上面跑一些其他的 App。

## 模拟器:装得上,一打开就退出

先后试了两条路:

- **Waydroid。** 装是装上了,但讯飞 AI 学一样打不开。
- **Android Emulator(AVD)。** Android Studio 那套,只是没走 IDE,直接用 Arch 的 SDK 包装。脚本在 dotfiles 仓库的 [`emulator/`](https://github.com/yuler/dotfiles/tree/main/emulator) 目录下:[`android-emulator-setup.sh`](https://github.com/yuler/dotfiles/blob/main/emulator/android-emulator-setup.sh) 负责一次性安装,[`android-emulator-start-pixel-7.sh`](https://github.com/yuler/dotfiles/blob/main/emulator/android-emulator-start-pixel-7.sh) 负责每次启动。

装好之后,用 `adb install -r ~/Downloads/讯飞AI学-4.9.0.13591.apk` 把应用装进模拟器。

两条路都装得上,但都因为同一个原因打不开:两边架构对不上。讯飞 AI 学带的是 ARM 程序,还套了一层只认 ARM 的加固壳。这台电脑是 x86,模拟器系统也是 x86,两边对不上,所以一打开就退出。包里的原生库只有 `arm64-v8a` 和 `armeabi-v7a`,没有 x86 版。模拟器虽然能用翻译层跑普通 ARM 库,但这个壳会按手机 CPU 去改系统里的运行时——它以为自己在改 ARM 的运行时,实际改到的是 x86 的,改完就崩溃了。

能跑起来的办法:

- **真机。** 普通的 ARM 手机,用数据线装这个 APK。这是这个包本来就支持的环境。
- **ARM 版安卓模拟器。** 系统本身是 ARM,壳和运行时就一致了。这台电脑是 Intel,ARM 系统没有硬件虚拟化,只能用软件模拟,会比现在这台慢很多。
- **借用一台 ARM 设备。** 比如另一台安卓手机,或云端的 ARM 真机。

## REA:拆开安装包找接口

手动抓包要登录、要配代理,嫌麻烦。正好前两周 REA(Reverse Engineer Anything)火,直接把 APK 喂给它,让它找接口。

家长端是 Flutter 加梆梆加固壳,但壳只包了 Java 入口,接口都在没被加固的 `libapp.so` 里,静态拆包就能读到。

拆出来就三步:收验证码、登录、布置作业。学科、标题、说明,加上老师发来的那张图,一条命令发到学习机;图片支持本地文件和剪贴板。完整的逆向报告见 [REVERSE.md](https://github.com/yuler/scripts/blob/main/studypad/REVERSE.md),踩坑记录见 [POSTMORTEM.md](https://github.com/yuler/scripts/blob/main/studypad/POSTMORTEM.md)。

英语抄写还是同一张图。差别是图留在电脑上,不用再打开手机 App。
Loading