【发布时间】:2016-03-11 09:19:36
【问题描述】:
我遇到了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.solovev.android.checkout.ActivityCheckout$1:找不到引用的类 javax.annotation.Nonnull 警告:org.solovyev.android.checkout.BaseInventory:找不到引用的类 javax.annotation.Nonnull 警告:org.solovyev.android.checkout.BaseInventory:找不到引用的类 javax.annotation.Nonnull 警告:org.solovev.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):在 libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:688) E/AndroidRuntime(16807):在 libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:663) E/AndroidRuntime(16807):在 libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641) E/AndroidRuntime(16807):在 libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170) E/AndroidRuntime(16807):在 java.lang.reflect.Field.getAnnotation(Field.java:242) E/AndroidRuntime(16807):在 com.tojc.ormlite.android.annotation.OrmLiteAnnotationAccessor.getAnnotationColumnName(未知来源) E/AndroidRuntime(16807):在 com.tojc.ormlite.android.framework.ColumnInfo.(Unknown Source) E/AndroidRuntime(16807): 在 com.tojc.ormlite.android.framework.TableInfo.(Unknown Source) E/AndroidRuntime(16807):在 com.tojc.ormlite.android.framework.MatcherController.addTableClass(未知来源) E/AndroidRuntime(16807):在 com.tojc.ormlite.android.framework.MatcherController.add(未知来源) E/AndroidRuntime(16807):在 com.test.kovla.provider.KovlaContentProvider.a(未知来源) E/AndroidRuntime(16807):在 com.test.kovla.provider.KovlaContentProvider.onCreate(未知来源) 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): 在 java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(16807):在 java.lang.reflect.Method.invoke(Method.java:372) E/AndroidRuntime(16807):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) E/AndroidRuntime(16807): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) E/AndroidRuntime(16807): 引起: java.lang.NoSuchFieldException: INTEGER E/AndroidRuntime(16807):在 java.lang.Class.getDeclaredField(Class.java:939) E/AndroidRuntime(16807): 在 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()
}
【问题讨论】:
-
您可以添加您在 gradle 文件中添加的存储库的列表吗?
-
@Derp,如果我理解正确你的意思,我添加了它
标签: android android-studio proguard