我遇到proguard
的问题。
添加proguard
后,我收到了警告:
警告:com.actionbarsherlock.internal.ActionBarSherlockCompat:找不到引用的类com.actionbarsherlock.BuildConfig 警告:com.slidingmenu.lib.CustomViewBehind:无法找到引用的类com.slidingmenu.lib.R $ id 警告:com.slidingmenu.lib.CustomViewBehind:无法找到引用的类com.slidingmenu.lib.R $ id 警告:com.slidingmenu.lib.CustomViewBehind:找不到引用的类com.slidingmenu.lib.R 警告:okio.DeflaterSink:无法找到引用的类org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 警告:okio.Okio:找不到引用的类java.nio.file.Files 警告:okio.Okio:找不到引用的类java.nio.file.Files 警告:okio.Okio:找不到引用的类java.nio.file.Files 警告:okio.Okio:找不到引用的类java.nio.file.Path 警告:okio.Okio:找不到引用的类java.nio.file.OpenOption 警告:okio.Okio:找不到引用的类java.nio.file.Path 警告:okio.Okio:找不到引用的类java.nio.file.OpenOption 警告:okio.Okio:找不到引用的类org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 警告:okio.Okio:找不到引用的类java.nio.file.Path 警告:okio.Okio:找不到引用的类java.nio.file.OpenOption 警告:okio.Okio:找不到引用的类java.nio.file.Path 警告:okio.Okio:找不到引用的类java.nio.file.OpenOption 警告:okio.Okio:找不到引用的类org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.ActivityCheckout $ 1:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.BaseInventory:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.BaseInventory:无法找到引用的类javax.annotation.Nonnull 警告:org.solovyev.android.checkout.BaseInventory:无法找到引用的类javax.annotation.Nonnull
等等,其中661个。在寻找回应之后,我已经碰到了它,这是怎么回事:
-dontwarn com.actionbarsherlock.**
-dontwarn org.solovyev.android.**
-dontwarn okio.**
-dontwarn com.slidingmenu.**
我已将此添加到我的proguard-android.txt
文件中,并修复了一个问题(此方法的来源:Gradle Build Failure )
但是现在,.apk文件的大小从10mb减少到5mb,并且,正如你猜测的那样,它不起作用,只是崩溃。
问题:我应该对两者做什么:删除此警告以便.apk将构建,并且将构建的.apk将起作用?
编辑: 我发布了版本的错误跟踪,它与ormlite库有一些关系,并显示以下消息:
E / AndroidRuntime(16807):java.lang.NoSuchFieldError E / AndroidRuntime(16807):at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:688) E / AndroidRuntime(16807):at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:663) E / AndroidRuntime(16807):at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641) E / AndroidRuntime(16807):at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170) E / AndroidRuntime(16807):at java.lang.reflect.Field.getAnnotation(Field.java:242) E / AndroidRuntime(16807):at com.tojc.ormlite.android.annotation.OrmLiteAnnotationAccessor.getAnnotationColumnName(Unknown Source) E / AndroidRuntime(16807):at com.tojc.ormlite.android.framework.ColumnInfo。(Unknown Source) E / AndroidRuntime(16807):at com.tojc.ormlite.android.framework.TableInfo。(Unknown Source) E / AndroidRuntime(16807):at com.tojc.ormlite.android.framework.MatcherController.addTableClass(Unknown Source) E / AndroidRuntime(16807):at com.tojc.ormlite.android.framework.MatcherController.add(Unknown Source) E / AndroidRuntime(16807):at com.test.kovla.provider.KovlaContentProvider.a(Unknown Source) E / AndroidRuntime(16807):at com.test.kovla.provider.KovlaContentProvider.onCreate(Unknown Source) E / AndroidRuntime(16807):在android.content.ContentProvider.attachInfo(ContentProvider.java:1737) E / AndroidRuntime(16807):在android.content.ContentProvider.attachInfo(ContentProvider.java:1712) E / AndroidRuntime(16807):在android.app.ActivityThread.installProvider(ActivityThread.java:5437) E / AndroidRuntime(16807):在android.app.ActivityThread.installContentProviders(ActivityThread.java:5032) E / AndroidRuntime(16807):在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4972) E / AndroidRuntime(16807):在android.app.ActivityThread.access $ 1600(ActivityThread.java:177) E / AndroidRuntime(16807):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1491) E / AndroidRuntime(16807):在android.os.Handler.dispatchMessage(Handler.java:102) E / AndroidRuntime(16807):在android.os.Looper.loop(Looper.java:135) E / AndroidRuntime(16807):在android.app.ActivityThread.main(ActivityThread.java:5910) E / AndroidRuntime(16807):at java.lang.reflect.Method.invoke(Native Method) E / AndroidRuntime(16807):at java.lang.reflect.Method.invoke(Method.java:372) E / AndroidRuntime(16807):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1405) E / AndroidRuntime(16807):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) E / AndroidRuntime(16807):引起:java.lang.NoSuchFieldException:INTEGER E / AndroidRuntime(16807):at java.lang.Class.getDeclaredField(Class.java:939) E / AndroidRuntime(16807):at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:685)
事实上,我已将-keep class com.tojc.** {*;}
添加到我的proguard-android.txt
并且它没有帮助,但只是指定了包裹权限,它不是
com.tojc.ormlite.android.annotation.OrmLiteAnnotationAccessor.getAnnotationColumnName(未知 源)
前
修改:如果这是评论中提出的列表:
repositories {
maven { url 'https://maven.fabric.io/public' }
jcenter()
}
答案 0 :(得分:0)
似乎你正在使用一堆库。请查看此repository。并使用progaurd配置。
修改强>
根据您的编辑,您可能遇到了ormlite库的问题。
你可以尝试这套progaurd规则:
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
我会坚持一次重建项目。