Skip to content

Commit 23f99cb

Browse files
xaionaro@dx.centerxaionaro@dx.center
authored andcommitted
docs: update README with current service counts, tools, and test results
- Update service count from 31 to 34, RPC count from ~2000 to 4000+ - Update Pixel 8a test results: 65 tests passed (2026-03-22) - Add all code generator tools to Components section - Add Code Generation section documenting the make generate pipeline
1 parent 0f81134 commit 23f99cb

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

README.md

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ Android device remotely. Includes `jniservice` (the on-device gRPC server),
1111
- **cmd/jnicli** -- CLI client that talks to jniservice over gRPC
1212
- **cmd/jniservice** -- gRPC server that runs on the Android device (APK or Magisk module)
1313
- **cmd/jniserviceadmin** -- Admin CLI for ACL management
14-
- **grpc/** -- gRPC server and client wrappers
15-
- **proto/** -- Protobuf service definitions
14+
- **grpc/** -- gRPC server and client wrappers (34 services)
15+
- **proto/** -- Protobuf service definitions (64 packages)
1616
- **handlestore/** -- Object handle mapping for cross-process JNI references
17-
- **tools/cmd/callbackgen** -- Code generator for Java callback adapter classes
17+
- **tools/cmd/protogen** -- Generates .proto files from Java API specs
18+
- **tools/cmd/grpcgen** -- Generates gRPC server/client Go wrappers
19+
- **tools/cmd/cligen** -- Generates jnicli cobra commands
20+
- **tools/cmd/callbackgen** -- Generates Java callback adapter classes
1821

1922
## gRPC Remote Access
2023

@@ -51,7 +54,7 @@ flowchart LR
5154
subgraph "jniservice (on device)"
5255
TLS["mTLS gateway"]
5356
ACL["Per-service ACL"]
54-
SVC["31 Android API\nservices"]
57+
SVC["34 Android API\nservices"]
5558
RAW["Raw JNI surface"]
5659
PROXY["Callback proxy\n(Camera2, etc.)"]
5760
end
@@ -65,7 +68,7 @@ flowchart LR
6568
PROXY --> Android
6669
```
6770

68-
**Available services** include camera, location, bluetooth, WiFi, telephony, battery, power, alarm, vibrator, audio, NFC, notifications, and more (31 services total, ~2000 RPCs). Callback-based APIs (like Camera2) work through a bidirectional streaming proxy with build-time generated adapter classes.
71+
**Available services** include camera, location, bluetooth, WiFi, telephony, battery, power, alarm, vibrator, audio, NFC, notifications, and more (34 registered services, 4000+ RPCs across 64 proto packages). Callback-based APIs (like Camera2) work through a bidirectional streaming proxy with build-time generated adapter classes.
6972

7073
## Running jniservice on Android
7174

@@ -129,7 +132,7 @@ Run `make test-emulator` to test against a connected device or emulator. Tests s
129132

130133
| Type | Device | Android | API | ABI | Build | Date | Passed | Total |
131134
|------|--------|---------|-----|-----|-------|------|--------|-------|
132-
| Phone | Pixel 8a | 16 | 36 | arm64-v8a | BP4A.260205.001 | 2026-03-14 | 21 | 21 |
135+
| Phone | Pixel 8a | 16 | 36 | arm64-v8a | BP4A.260205.001 | 2026-03-22 | 65 | 65 |
133136
| Emulator | sdk_gphone64_x86_64 | 15 | 35 | x86_64 | | 2026-03-14 | 21 | 21 |
134137

135138
</details>
@@ -147,6 +150,23 @@ make deploy
147150
make test-emulator
148151
```
149152

153+
## Code Generation
154+
155+
All proto definitions, gRPC wrappers, and CLI commands are generated from Java API specs in the [jni](https://github.com/AndroidGoLab/jni) repo. To regenerate everything:
156+
157+
```bash
158+
make generate # runs: proto → protoc → grpc → cli
159+
```
160+
161+
Individual steps:
162+
```bash
163+
make proto # generate .proto files from Java specs
164+
make protoc # compile .proto → Go stubs
165+
make grpc # generate gRPC server/client wrappers
166+
make cli # generate jnicli cobra commands
167+
make callbacks # generate Java callback adapter classes
168+
```
169+
150170
## Security
151171

152172
> **Security disclaimer:** This is a hobby/research project. The mTLS + ACL system provides basic access control, but it has not been audited and should not be relied upon for security-critical deployments. The self-signed CA, handle-based object references, and raw JNI surface all have inherent attack surface. Use it on trusted networks for development, testing, and experimentation.

0 commit comments

Comments
 (0)