Mostrar el método dex cuenta por paquete

Estoy trabajando en la aplicación android que está corriendo contra el límite de conteo de método dex. ¿Hay una manera simple de mostrar el recuento de métodos agrupados por paquete ? Puedo obtener el método total de contar, pero mi aplicación tiene varios componentes y estoy tratando de averiguar qué componente es el mayor contribuyente a esto.

Esto le dará una idea de cuanto cada jerarquía de paquetes contribuye al recuento de métodos. Los resultados incluyen todas las clases en ese directorio / paquete y todos los subdirectorios / paquetes.

baksmali blah.apk -o out cd out find * -type d -print -exec sh -c "smali {} -o {}/classes.dex && sh -c \"dexdump -f {}/classes.dex | grep method_ids_size\"" \; 

Esta versión ligeramente modificada es similar, excepto que es sólo para las clases en ese directorio / paquete en particular, sin incluir subdirectorios / subpaquetes

 baksmali blah.apk -o out cd out find * -type d -print0 | xargs -0 -I{} sh -c "echo {} && find {} -maxdepth 1 -name \"*.smali\" -print0 | xargs -r -0 smali -o {}/classes.dex" find -name "*.dex" -print -exec sh -c "dexdump -f {} | grep method_ids_size" \; 

He escrito una herramienta de dex-method-counts que genera un método por paquete que cuenta más rápido y con mayor precisión que las herramientas basadas en smali que se mencionan en la respuesta de JesusFreke¹. Se puede instalar desde https://github.com/mihaip/dex-method-counts .

[1] que el script desensambla el .dex y vuelve a ensamblarlo por paquete, pero esto significa que los métodos que son referenciados por varios paquetes se cuentan dos veces

Yo y un colega publicado el mes pasado un servicio que puede ayudarle con su propósito: http://www.methodscount.com/ . Muestra el recuento de métodos y otra información ordenada

Introduzca aquí la descripción de la imagen

Bajo la campana usamos gradlew para obtener las dependencias y la herramienta Android SDK dx para calcular la información dex. Aplicamos el procedimiento recursivamente a la biblioteca y sus dependencias. También persistimos en los resultados de las bibliotecas ya calculadas para acelerar el proceso en las solicitudes consecuentes.

Si utiliza Android Studio o IntelliJ, sólo puede instalar el complemento para tener toda la información como una pista útil (el complemento también utiliza el servicio).

Sobre una vieja pregunta, he escrito un plugin de Gradle que informará el número de métodos en su APK en cada compilación. Utiliza el mismo código de análisis de DEX que el proyecto AOSP utiliza. Puede encontrarlo en https://github.com/KeepSafe/dexcount-gradle-plugin .

He apreciado el trabajo de todos los desarrolladores de arriba y siempre estoy contento de tener tan buena comunidad, pero desde Android 2.2 estudio de Google equipo ha publicado APK Analyzer -> https://developer.android.com/studio/build/apk-analyzer. Html

Ahora todos tenemos construir en la herramienta para analizar los métodos de contar, el tamaño de nuestros recursos e incluso podemos comparar dos archivos .apk de nuevo unos a otros. Finalmente, todos tenemos esta herramienta construida. El desarrollo de Android está llegando a ser más fácil y más fácil.

BTW: Para encontrar la cantidad de métodos que tiene, abra su archivo .apk en Android Studio (sólo soporte 2.2+) y haga clic en el archivo classes.dex. Después de eso podrás ver los métodos de contar en todas las bibliotecas y en su proyecto también.

También puede intentar utilizar https://github.com/KeepSafe/dexcount-gradle-plugin que le permite ver el método cuenta por paquete de forma gráfica a través de un html.

  • Cmd no puede reconocer dex2jar- Android Apk
  • Gradle ejecutando dex Error en la línea de comandos demasiado tiempo
  • ¿Qué es Smali Code Android?
  • Proguard Obfuscation causando dex compliation para lanzar Excepciones
  • La biblioteca de terceros se agrega bajo el directorio dexedLib, pero la biblioteca no tiene classes.dex
  • Xamarin Android con multidex - error en modo de depuración
  • ¿Hay una manera de obtener una lista de todas las clases de un archivo .dex?
  • Smali estructura de métodos y clases
  • Utilizar multiDexEnabled sin Gradle pero proceso de generación de Eclipse en su lugar
  • DX Error al ejecutar el proyecto de Android Studio
  • Obtener la suma de comprobación de los códigos fuente en la biblioteca de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.