remove class now return the class
This commit is contained in:
parent
5379c29eb8
commit
6e218f85f9
1 changed files with 16 additions and 7 deletions
|
|
@ -3284,18 +3284,27 @@ impl Apk {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "python", pyo3(signature = (class, dex_file=None)))]
|
#[cfg_attr(feature = "python", pyo3(signature = (class, dex_file=None)))]
|
||||||
pub fn remove_class(&mut self, class: &IdType, dex_file: Option<&str>) -> Result<()> {
|
pub fn remove_class(
|
||||||
|
&mut self,
|
||||||
|
class: &IdType,
|
||||||
|
dex_file: Option<&str>,
|
||||||
|
) -> Result<Option<Class>> {
|
||||||
if let Some(dex_file) = dex_file {
|
if let Some(dex_file) = dex_file {
|
||||||
self.dex_files
|
Ok(self
|
||||||
|
.dex_files
|
||||||
.get_mut(dex_file)
|
.get_mut(dex_file)
|
||||||
.with_context(|| format!("file {} not found in apk", dex_file))?
|
.with_context(|| format!("file {} not found in apk", dex_file))?
|
||||||
.classes
|
.classes
|
||||||
.remove(class);
|
.remove(class))
|
||||||
} else {
|
} else {
|
||||||
for DexFile { classes, .. } in self.dex_files.values_mut() {
|
// TODO valid_file_only ?
|
||||||
classes.remove(class);
|
Ok(self.get_file_of_class(class, false).and_then(|file| {
|
||||||
|
self.dex_files
|
||||||
|
.get_mut(&file)
|
||||||
|
.expect("`get_file_of_class()` return a string not in `dex_files`")
|
||||||
|
.classes
|
||||||
|
.remove(class)
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue