Is there a way to get count of number methods used in a jar file
Есть ли способ получить количество числовых методов, используемых в файле jar
Могу ли я получить количество всех методов, используемых в файле jar? Мой APK использует определенные внешние JAR-файлы, и существует несколько классов, около сотни, если быть точным.
Я использовал декомпиляторы, такие как dex2jar JAD и другие, чтобы назвать несколько, но все они, похоже, показывают методы только в определенном файле класса.
Есть ли способ, которым я могу получить общее количество?
Переведено автоматически
Ответ 1
Вы можете преобразовать jar в файл dex, а затем извлечь количество ссылок на методы из заголовка. Оно хранится как целое число в конце без знака со смещением 88 (0x58).
Имейте в виду, что это количество уникальных методов, на которые ссылаются, а не количество ссылок на методы. Другими словами, если на конкретный метод дважды ссылаются в файле dex, он будет подсчитан только один раз при подсчете в заголовке. И когда вы импортируете этот jar в свой apk, ссылки на методы, которые являются общими для этих двух, дедуплицируются, поэтому общее количество ссылок на методы в конечном объединенном apk будет <= сумма двух.
Ответ 2
Этот плагин gradle https://github.com/KeepSafe/dexcount-gradle-plugin покажет вам общее количество методов после сборки, а также сгенерирует отчет с количеством методов в каждом пакете. Который после сортировки выглядит следующим образом:
который выводит дерево зависимостей, вы получите хороший обзор того, для какой зависимости требуется сколько методов.
Ответ 3
Cyvis может прочитать файл .jar or .class и покажет как общее количество методов, так и цикломатическую сложность и количество инструкций для каждого метода. Графический интерфейс немного ... переносимый ... но я запускал его в Ubuntu, и там написано, что он работает в Windows. Кажется довольно хорошим для первичного источника информации о том, насколько вероятно, что библиотека доставит вам проблемы.