Android Proguard no está en línea
Estoy usando el último SDK de Android (4.1) y traté de exportar un jar firmado con Proguard habilitado. Sin embargo, después de descompilar el APK optimizado, noté que no lo estaban los métodos que habría esperado que estuvieran en línea.
Sé que Proguard se ejecutó porque el código fue confuso correctamente. Así que para confirmar esto, agregué este método a mi actividad:
private void testInlining()
{
mConfig = null;
}
Este método privado se llama solo una vez en mi actividad, y debido a que es privado, debería ser muy obvio para el optimizador que se llama solo una vez y que debería estar en línea.
La documentación dice que todas las optimizaciones están habilitadas de forma predeterminada, y que Proguard "Métodos en línea que son cortos o que solo se llaman una vez".
¿Hay una marca específica que debo darle a Proguard para habilitar la inscripción?
EDITAR
Mi archivo de configuración de proguard contiene
-optimizationpasses 5
-allowaccessmodification
-overloadaggressively
-repackageclasses ''
-dontskipnonpubliclibraryclasses
EDITAR
Después de usar
-whyareyoukeeping class com.templatecompany.templateappname.EntryPointActivity {*;}
Me sale la razón por la cual el método no está en línea:
[proguard] com.templatecompany.templateappname.EntryPointActivity: void testInlining() (20:21)
[proguard] is invoked by com.templatecompany.templateappname.EntryPointActivity: com.td.media.ivConnection.IvConfig getIvConfig() (14:15)
[proguard] implements com.td.widget.MainActivity: com.td.media.ivConnection.IvConfig getIvConfig()
[proguard] is invoked by com.td.widget.MainActivity: void onCreate(android.os.Bundle) (140:175)
[proguard] implements android.app.Activity: void onCreate(android.os.Bundle)
[proguard] is a library method.
Pero no estoy seguro de ver cómo el hecho de que el métodotestInlining
se usa en el métodogetIvConfig
que, a su vez, es utilizado por otro método evita la inclusión entestInlining
engetIvConfig
.