Jak mogę znaleźć wszystkie klasy w pakiecie na Androida? Używam PathClassLoader, ale zawsze zwraca puste wyliczenie?Znajdź wszystkie zajęcia w pakiecie w Androidzie
Dodatkowe informacje
Wypróbowałem sugerowane podejście Reflections. Kilka ważnych punktów dotyczących biblioteki odbić. Biblioteka dostępna przez centralę maven jest niezgodna z systemem Android i podaje błędy dex. Musiałem włączyć źródło i skompilować dom4j, java-assist.
Problem z odbiciem, a moje oryginalne rozwiązanie polega na tym, że PathClassLoader w Androidzie zwraca puste wyliczenie pakietu.
Problem z podejściem polega na tym, że getResource w systemie Android zawsze zwraca puste wyliczenie.
final String resourceName = aClass.getName().replace(".", "/") + ".class";
for (ClassLoader classLoader : loaders) {
try {
final URL url = classLoader.getResource(resourceName);
if (url != null) {
final String normalizedUrl = url.toExternalForm().substring(0, url.toExternalForm().lastIndexOf(aClass.getPackage().getName().replace(".", "/")));
return new URL(normalizedUrl);
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
Czy można zaakceptować najpierw apk, a następnie przeanalizować plik DEX? Jeśli jest to w twoim przypadku do przyjęcia, mogę napisać odpowiedź. – StarPinkER
Nie, próbuję ujawnić dynamicznie niektóre metody wtyczek i nie będę wiedział, jakie klasy są obecne przed rozdaniem. – user210504
Czy możesz opracować? niezupełnie rozumiem twój scenariusz – StarPinkER