xref: /aosp_15_r20/frameworks/base/ravenwood/tools/hoststubgen/README.md (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker# HostStubGen
2*d57664e9SAndroid Build Coastguard Worker
3*d57664e9SAndroid Build Coastguard Worker## Overview
4*d57664e9SAndroid Build Coastguard Worker
5*d57664e9SAndroid Build Coastguard WorkerHostStubGen is a tool built for ravenwood. It can read an Android framework jar file
6*d57664e9SAndroid Build Coastguard Worker(such as `framework-minus-apex.jar` or `framework-all.jar`) and
7*d57664e9SAndroid Build Coastguard Workerconverts them, so that they can be used on the Ravenwood environment.
8*d57664e9SAndroid Build Coastguard Worker
9*d57664e9SAndroid Build Coastguard WorkerThis directory contains the HostStubGen source code, tests and some library source files
10*d57664e9SAndroid Build Coastguard Workerused at runtime.
11*d57664e9SAndroid Build Coastguard Worker
12*d57664e9SAndroid Build Coastguard Worker- HostStubGen itself is design to be agnostic to Android. It doesn't use any Android APIs
13*d57664e9SAndroid Build Coastguard Worker(hidden or not). But it may use Android specific knowledge -- e.g. as of now,
14*d57664e9SAndroid Build Coastguard WorkerAndroidHeuristicsFilter has hardcoded heuristics to detect AIDL generated classes.
15*d57664e9SAndroid Build Coastguard Worker
16*d57664e9SAndroid Build Coastguard Worker- `test-tiny-framework/` contains basic tests that are agnostic to Android.
17*d57664e9SAndroid Build Coastguard Worker
18*d57664e9SAndroid Build Coastguard Worker- More Android specific build files and code are stored in `frameworks/base/Ravenwood.bp`
19*d57664e9SAndroid Build Coastguard Worker  `frameworks/base/ravenwood`.
20*d57664e9SAndroid Build Coastguard Worker
21*d57664e9SAndroid Build Coastguard Worker## Directories and files
22*d57664e9SAndroid Build Coastguard Worker
23*d57664e9SAndroid Build Coastguard Worker- `src/`
24*d57664e9SAndroid Build Coastguard Worker
25*d57664e9SAndroid Build Coastguard Worker  HostStubGen tool source code.
26*d57664e9SAndroid Build Coastguard Worker
27*d57664e9SAndroid Build Coastguard Worker- `annotations-src/` See `Android.bp`.
28*d57664e9SAndroid Build Coastguard Worker- `helper-framework-buildtime-src/` See `Android.bp`.
29*d57664e9SAndroid Build Coastguard Worker- `helper-framework-runtime-src/` See `Android.bp`.
30*d57664e9SAndroid Build Coastguard Worker- `helper-runtime-src/` See `Android.bp`.
31*d57664e9SAndroid Build Coastguard Worker
32*d57664e9SAndroid Build Coastguard Worker- `test-tiny-framework/` See `README.md` in it.
33*d57664e9SAndroid Build Coastguard Worker
34*d57664e9SAndroid Build Coastguard Worker- `scripts`
35*d57664e9SAndroid Build Coastguard Worker  - `dump-jar.sh`
36*d57664e9SAndroid Build Coastguard Worker
37*d57664e9SAndroid Build Coastguard Worker    A script to dump the content of `*.class` and `*.jar` files.
38*d57664e9SAndroid Build Coastguard Worker
39*d57664e9SAndroid Build Coastguard Worker  - `run-all-tests.sh`
40*d57664e9SAndroid Build Coastguard Worker
41*d57664e9SAndroid Build Coastguard Worker    Run all tests. Many tests may fail, but at least this should run til the end.
42*d57664e9SAndroid Build Coastguard Worker    (It should print `run-all-tests.sh finished` at the end)
43*d57664e9SAndroid Build Coastguard Worker
44*d57664e9SAndroid Build Coastguard Worker## Build and run
45*d57664e9SAndroid Build Coastguard Worker
46*d57664e9SAndroid Build Coastguard Worker### Building `HostStubGen` binary
47*d57664e9SAndroid Build Coastguard Worker
48*d57664e9SAndroid Build Coastguard Worker```
49*d57664e9SAndroid Build Coastguard Workerm hoststubgen
50*d57664e9SAndroid Build Coastguard Worker```
51*d57664e9SAndroid Build Coastguard Worker
52*d57664e9SAndroid Build Coastguard Worker### Run the tests
53*d57664e9SAndroid Build Coastguard Worker
54*d57664e9SAndroid Build Coastguard Worker- Run all relevant tests and test scripts. All of it is expected to pass, and it'll print
55*d57664e9SAndroid Build Coastguard Worker  "Ready to submit" at the end.
56*d57664e9SAndroid Build Coastguard Worker
57*d57664e9SAndroid Build Coastguard Worker  However, because some of the script it executes depend on internal file paths to Soong's
58*d57664e9SAndroid Build Coastguard Worker  intermediate directory, some of it might fail when something changes in the build system.
59*d57664e9SAndroid Build Coastguard Worker
60*d57664e9SAndroid Build Coastguard Worker  We need proper build system integration to fix them.
61*d57664e9SAndroid Build Coastguard Worker```
62*d57664e9SAndroid Build Coastguard Worker$ ./scripts/run-all-tests.sh
63*d57664e9SAndroid Build Coastguard Worker```
64*d57664e9SAndroid Build Coastguard Worker
65*d57664e9SAndroid Build Coastguard Worker- See also `README.md` in `test-*` directories.
66*d57664e9SAndroid Build Coastguard Worker
67*d57664e9SAndroid Build Coastguard Worker## TODOs, etc
68*d57664e9SAndroid Build Coastguard Worker
69*d57664e9SAndroid Build Coastguard Worker - Make sure the parent's visibility is not smaller than the member's.
70*d57664e9SAndroid Build Coastguard Worker
71*d57664e9SAndroid Build Coastguard Worker- @HostSideTestNativeSubstitutionClass should automatically add class-keep to the substitute class.
72*d57664e9SAndroid Build Coastguard Worker  (or at least check it.)
73*d57664e9SAndroid Build Coastguard Worker
74*d57664e9SAndroid Build Coastguard Worker - The `HostStubGenTest-framework-test-host-test-lib` jar somehow contain all ASM classes? Figure out where the dependency is coming from.
75*d57664e9SAndroid Build Coastguard Worker
76*d57664e9SAndroid Build Coastguard Worker- At some point, we can move or delete all Android specific code to `frameworks/base/ravenwood`.
77*d57664e9SAndroid Build Coastguard Worker  - `helper-framework-*-src` should be moved to `frameworks/base/ravenwood`
78*d57664e9SAndroid Build Coastguard Worker  - `test-framework` should be deleted.
79