我想混淆我的应用程序,所以我在 project.properties 文件中取消注释 proguard 行。
当我在 Eclipse 中导出应用程序时,出现以下错误。
它似乎不能引用类,其中一些来自 Joda jar 文件。 我的 libs 文件夹中有 Joda .jar 文件。 我也试过将它放在构建路径上,但它仍然会引发相同的错误。
没有人知道我做错了什么或者我应该如何配置 Proguard 以在必要时跳过文件?
提前致谢。
[更新] 通过将 Joda-convert jar 添加到构建路径,我设法删除了大部分 Joda 警告
Android - Proguard didn't compile with Joda Time jar file
[2014-11-12 11:11:55 - nfcscanner] Proguard returned with error code 1. See console
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics$b: can't find superclass or interface android.app.Application$ActivityLifecycleCallbacks
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.images.ImageManager$e: can't find superclass or interface android.content.ComponentCallbacks2
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find superclass or interface android.view.View$OnAttachStateChangeListener
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find superclass or interface android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics: can't find referenced class android.app.Application$ActivityLifecycleCallbacks
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics: can't find referenced method 'void registerActivityLifecycleCallbacks(android.app.Application$ActivityLifecycleCallbacks)' in class android.app.Application
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics$b: can't find referenced class android.app.Application$ActivityLifecycleCallbacks
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced field 'int smallestScreenWidthDp' in class android.content.res.Configuration
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.images.ImageManager: can't find referenced method 'void registerComponentCallbacks(android.content.ComponentCallbacks)' in class android.content.Context
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.images.ImageManager$e: can't find referenced class android.content.ComponentCallbacks2
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'android.app.Fragment getParentFragment()' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'boolean getUserVisibleHint()' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'boolean isDetached()' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'void setMenuVisibility(boolean)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'void setUserVisibleHint(boolean)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced class android.view.View$OnAttachStateChangeListener
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'void addOnAttachStateChangeListener(android.view.View$OnAttachStateChangeListener)' in class android.view.View
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'android.view.Display getDisplay()' in class android.view.View
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'void removeOnAttachStateChangeListener(android.view.View$OnAttachStateChangeListener)' in class android.view.View
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'void removeOnGlobalLayoutListener(android.view.ViewTreeObserver$OnGlobalLayoutListener)' in class android.view.ViewTreeObserver
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.ed: can't find referenced method 'boolean isActiveNetworkMetered()' in class android.net.ConnectivityManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.es: can't find referenced method 'java.lang.String getDefaultUserAgent(android.content.Context)' in class android.webkit.WebSettings
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.es: can't find referenced method 'void setMediaPlaybackRequiresUserGesture(boolean)' in class android.webkit.WebSettings
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.v: can't find referenced method 'void registerComponentCallbacks(android.content.ComponentCallbacks)' in class android.content.Context
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.v: can't find referenced method 'void unregisterComponentCallbacks(android.content.ComponentCallbacks)' in class android.content.Context
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.maps.MapFragment: can't find referenced method 'void onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.maps.StreetViewPanoramaFragment: can't find referenced method 'void onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.wallet.fragment.WalletFragment: can't find referenced method 'void onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateMidnight: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateTimeZone: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateTimeZone: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Duration: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Hours: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Hours: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Instant: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDate: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDate: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDateTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDateTime: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalTime: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Minutes: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Minutes: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MonthDay: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MonthDay: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Months: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Months: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MutableDateTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MutableDateTime: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MutablePeriod: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Period: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Seconds: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Seconds: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Weeks: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Weeks: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.YearMonth: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.YearMonth: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.base.AbstractDuration: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.base.AbstractInstant: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.base.AbstractPeriod: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] You should check if you need to specify additional program jars.
[2014-11-12 11:11:55 - nfcscanner] Warning: there were 62 unresolved references to classes or interfaces.
[2014-11-12 11:11:55 - nfcscanner] You may need to specify additional library jars (using '-libraryjars').
[2014-11-12 11:11:55 - nfcscanner] Warning: there were 20 unresolved references to program class members.
[2014-11-12 11:11:55 - nfcscanner] Your input classes appear to be inconsistent.
[2014-11-12 11:11:55 - nfcscanner] You may need to recompile them and try again.
[2014-11-12 11:11:55 - nfcscanner] Alternatively, you may have to specify the option
[2014-11-12 11:11:55 - nfcscanner] '-dontskipnonpubliclibraryclassmembers'.
[2014-11-12 11:11:55 - nfcscanner] java.io.IOException: Please correct the above warnings first.
[2014-11-12 11:11:55 - nfcscanner] at proguard.Initializer.execute(Initializer.java:321)
[2014-11-12 11:11:55 - nfcscanner] at proguard.ProGuard.initialize(ProGuard.java:211)
[2014-11-12 11:11:55 - nfcscanner] at proguard.ProGuard.execute(ProGuard.java:86)
[2014-11-12 11:11:55 - nfcscanner] at proguard.ProGuard.main(ProGuard.java:492)
项目.properties
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt
# Project target.
target=Google Inc.:Google APIs:11
android.library=false
android.library.reference.1=../google-play-services_lib
proguard-project.txt
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
最佳答案
[已解决]
我将 Joda jar 添加到我的构建路径中。这仍然留下了 3 个 Joda 警告,因为我的构建路径上也需要 Joda-convert jar。
不要下载 Joda-convert1.7 jar,因为这不起作用,您需要 1.4 版本。
最后我添加了
-dontwarn com.google.android.gms.**
这删除了剩余的 gsm 警告。
现在一切正常。
关于android - 混淆异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885684/