Hi,
I have a lot of trouble using this library in a production environment, that is with Proguard enabled (minifyEnabled true).
If I don't specify any rule, I get these warnings during compilation:
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find superclass or interface javax.annotation.processing.AbstractProcessor
Warning:com.squareup.javawriter.JavaWriter: can't find referenced class javax.lang.model.element.Modifier
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.AbstractProcessor
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.SourceVersion
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced field 'javax.annotation.processing.ProcessingEnvironment processingEnv' in program class com.tojc.ormlite.android.compiler.ContractAnnotationProcessor
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.Filer
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.tools.JavaFileObject
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Modifier
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.tools.Diagnostic$Kind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.Messager
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.ElementKind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.PackageElement
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.ElementKind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.PackageElement
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.AbstractProcessor
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.tools.JavaFileObject
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.SourceVersion
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.Filer
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.tools.JavaFileObject
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Modifier
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.tools.Diagnostic$Kind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.Messager
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.ElementKind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.tools.Diagnostic
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.SourceVersion
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.tools.JavaFileObject
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.TypeElement
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.TypeElement
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Modifier
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.PackageElement
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.ElementKind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.ElementKind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.ElementKind
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.PackageElement
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.element.Element
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.SupportedAnnotationTypes
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.annotation.processing.SupportedSourceVersion
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor: can't find referenced class javax.lang.model.SourceVersion
Warning:com.tojc.ormlite.android.compiler.ContractAnnotationProcessor$1: can't find referenced class javax.lang.model.element.Element
If I try to keep everything in the com.tojc.ormlite package and the javax package with:
-keep class com.tojc.**
-keepclassmembers class com.tojc.** { *; }
-keep enum com.tojc.**
-keepclassmembers enum com.tojc.** { *; }
-keep interface com.tojc.**
-keepclassmembers interface com.tojc.** { *; }
-keep class javax.**
I still get the same errors.
If I simply ignore the warnings, with:
-dontwarn com.tojc.ormlite.android.compiler.**
-dontwarn com.squareup.javawriter.**
It compiles fine, obviously, but it crashes at runtime:
Caused by: java.lang.IllegalStateException: Could not find public constructor that has a single (Context) argument for helper class class com.davidferrand.posted.provider.c
at com.j256.ormlite.android.apptools.OpenHelperManager.constructHelper(OpenHelperManager.java:215)
at com.j256.ormlite.android.apptools.OpenHelperManager.loadHelper(OpenHelperManager.java:170)
at com.j256.ormlite.android.apptools.OpenHelperManager.getHelper(OpenHelperManager.java:78)
at com.a.a.a.a.c(OrmLiteBaseContentProvider.java:68)
at com.a.a.a.a.b(OrmLiteBaseContentProvider.java:56)
at com.a.a.a.b.query(OrmLiteDefaultContentProvider.java:166)
at android.content.ContentProvider.query(ContentProvider.java:1017)
at android.content.ContentProvider$Transport.query(ContentProvider.java:238)
at android.content.ContentResolver.query(ContentResolver.java:491)
at android.support.v4.b.g.a(ContentResolverCompatJellybean.java:29)
at android.support.v4.b.f.a(ContentResolverCompat.java:57)
at android.support.v4.b.c.a(ContentResolverCompat.java:125)
at android.support.v4.b.m.h(CursorLoader.java:59)
at android.support.v4.b.m.d(CursorLoader.java:37)
at android.support.v4.b.a.e(AsyncTaskLoader.java:296)
at android.support.v4.b.b.a(AsyncTaskLoader.java:54)
at android.support.v4.b.b.a(AsyncTaskLoader.java:42)
at android.support.v4.b.z.call(ModernAsyncTask.java:128)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context]
at java.lang.Class.getConstructor(Class.java:528)
at java.lang.Class.getConstructor(Class.java:492)
at com.j256.ormlite.android.apptools.OpenHelperManager.constructHelper(OpenHelperManager.java:213)
at com.j256.ormlite.android.apptools.OpenHelperManager.loadHelper(OpenHelperManager.java:170)
at com.j256.ormlite.android.apptools.OpenHelperManager.getHelper(OpenHelperManager.java:78)
at com.a.a.a.a.c(OrmLiteBaseContentProvider.java:68)
at com.a.a.a.a.b(OrmLiteBaseContentProvider.java:56)
at com.a.a.a.b.query(OrmLiteDefaultContentProvider.java:166)
at android.content.ContentProvider.query(ContentProvider.java:1017)
at android.content.ContentProvider$Transport.query(ContentProvider.java:238)
at android.content.ContentResolver.query(ContentResolver.java:491)
at android.support.v4.b.g.a(ContentResolverCompatJellybean.java:29)
at android.support.v4.b.f.a(ContentResolverCompat.java:57)
at android.support.v4.b.c.a(ContentResolverCompat.java:125)
at android.support.v4.b.m.h(CursorLoader.java:59)
at android.support.v4.b.m.d(CursorLoader.java:37)
at android.support.v4.b.a.e(AsyncTaskLoader.java:296)
at android.support.v4.b.b.a(AsyncTaskLoader.java:54)
at android.support.v4.b.b.a(AsyncTaskLoader.java:42)
at android.support.v4.b.z.call(ModernAsyncTask.java:128)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
I sense there's a problem with javax being obfuscated by Proguard, but I lack the insight that you have to determine the right rules.
Note: I used version 1.0.4.
Thanks for your help, I'm sure it'll help others in the future!
Hi,
I have a lot of trouble using this library in a production environment, that is with Proguard enabled (
minifyEnabled true).If I don't specify any rule, I get these warnings during compilation:
If I try to keep everything in the com.tojc.ormlite package and the javax package with:
I still get the same errors.
If I simply ignore the warnings, with:
It compiles fine, obviously, but it crashes at runtime:
I sense there's a problem with javax being obfuscated by Proguard, but I lack the insight that you have to determine the right rules.
Note: I used version 1.0.4.
Thanks for your help, I'm sure it'll help others in the future!