Problemas con OrmLite y obfuscation proguard
Cuando uso Proguard en proyecto con OrmLite. Recibo este error :
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.package.name/com.package.name.activities.StartActivity}: java.lang.IllegalStateException: Could not find OpenHelperClass because none of the generic parameters of class class com.package.name.activities.StartActivity extends OrmLiteSqliteOpenHelper. You should use getHelper(Context, Class) instead.
He intentado todas las recomendaciones de Proguard con OrmLite en Android y de otros recursos, pero sin resultados
- Error al trabajar con Jackson library post-obfuscation usando Proguard
- Configuración de Proguard al utilizar la plantilla Google Cloud Endpoints de Android Studio
- Conflicto entre la vinculación de datos de Android y la guayaba provoca error en ProGuard
- Proyecto Android: Problema de exportación Lanzamiento cancelado! Proguard devuelto con el código de error 1. Consulte consola
- ¿Por qué ProGuard mantiene el método onCreate ()?
- Uso de Spongycastle con Proguard
- Proguard Printmapping no funciona en Android Studio 2.0.0 (y 2.1.0)
- No se puede generar APK firmado con proguard habilitado cuando se usa Joda Time
- Configuración de ProGuard con proyectos de la biblioteca de Android
- Proguard con Crashlytics
- Error de ProGuard no puede encontrar superclase o interfaz org.apache.http.entity
- Android ProGuard: no se puede encontrar la clase referenciada
- Proguard.cfg no funciona en aplicaciones exportadas usando LIBRARY
Ponga lo siguiente en su archivo proguard-project y su archivo proguard-optimization (si utiliza la optimización).
# Your application may contain more items that need to be preserved; # typically classes that are dynamically created using Class.forName: # ormlite uses reflection -keep class com.j256.** { *; } -keep class com.j256.** -keepclassmembers class com.j256.** -keep enum com.j256.** -keepclassmembers enum com.j256.** -keep interface com.j256.** -keepclassmembers interface com.j256.** -keepclassmembers class * { public <init>(android.content.Context); } -keepattributes *Annotation*
Y para cada clase de modelo:
-keep class com.xyz.components.** -keepclassmembers class com.xyz.components.** { *; }
No me gusta la última parte un poco, pero estoy cansado de tratar de encontrar una solución mejor.
Le pregunté mucho la misma pregunta de bloqueo usando ORMLite en Android con proguard y la respuesta fue añadir
-keepattributes Signature
A la configuración proguard.
- Visualización de filas vacías en Android listview
- Android Studio: Gradle Error de compilación, no puede localizar SDK y compilador de servidor