1use crate::impls::apk_load::ApkAccessor;
2use enum_dispatch::enum_dispatch;
3use java_asm::smali::SmaliNode;
4use java_asm::{DescriptorRef, StrRef};
5
6pub mod server;
7
8pub(crate) mod impls;
9pub mod ui;
10
11pub struct AsmServer {
12 pub accessor: AccessorEnum,
13}
14
15#[enum_dispatch]
16pub enum AccessorEnum {
17 Apk(ApkAccessor),
18}
19
20#[enum_dispatch(AccessorEnum)]
21pub trait Accessor {
22 fn read_classes(&self) -> Vec<StrRef>;
23 fn exist_class(&self, class_key: &str) -> bool;
24 fn read_content(&self, class_key: &str) -> Option<SmaliNode>;
25}
26
27pub struct MethodMeta {
28 pub class_key: StrRef,
29 pub name: StrRef,
30 pub descriptor: DescriptorRef,
31}
32
33pub struct FieldMeta {
34 pub class_key: StrRef,
35 pub name: StrRef,
36}
37